# Docker

Beschreibung von Docker Anwendungen

# mealie Online-Kochbuch

Es gibt ein sehr interessante Online Browser basierendes Kochbuch "Mealie"

### [![Mealie-Kochbuch.png](https://wiki.unixweb.net/uploads/images/gallery/2023-11/mealie-kochbuch.png)](https://wiki.unixweb.eth64.de/uploads/images/gallery/2023-10/mealie-kochbuch.png)

### Installation mit Docker-Compose

<details id="bkmrk-version%3A-%223.7%22servic"><summary>Docker-Compose - hier klicken</summary>

```yaml
version: "3.7"
services:
    mealie-frontend:
        image: hkotel/mealie:frontend-nightly
        container_name: mealie-frontend
        depends_on:
            - mealie-api
        environment:
        # Set Frontend ENV Variables Here
            - API_URL=http://mealie-api:9000 #
        restart: always
        ports:
            - "9926:3000" #
        volumes:
            - ./data:/app/data/ #
    mealie-api:
        image: hkotel/mealie:api-nightly
        container_name: mealie-api
        depends_on:
            - postgres
        volumes:
            - ./data:/app/data/
        environment:
            # Set Backend ENV Variables Here
            - ALLOW_SIGNUP=true
            - PUID=1000
            - PGID=1000
            - TZ=Europe/Berlin
            - MAX_WORKERS=1
            - WEB_CONCURRENCY=1
            - BASE_URL=https://kochbuch.xxxx.de
            # Database Settings
            - DB_ENGINE=postgres
            - POSTGRES_USER=mealie
            - POSTGRES_PASSWORD=mealie
            - POSTGRES_SERVER=postgres
            - POSTGRES_PORT=5432
            - POSTGRES_DB=mealie
        restart: always
    postgres:
        container_name: postgres
        image: postgres:15
        restart: always
        environment:
            POSTGRES_PASSWORD: mealie
            POSTGRES_USER: mealie

```

</details>\### Einkaufsliste nach Telegram schicken

Benötigt wird folgendes Plugin:

[https://flows.nodered.org/node/node-red-contrib-chatbot](https://flows.nodered.org/node/node-red-contrib-chatbot) braucht NPM 8.19.4 und Node v16.20.0  
**HINWEIS:** Die Palette kann nicht in Docker Container [https://hub.docker.com/r/nodered/node-red/](https://hub.docker.com/r/nodered/node-red/) installiert da die oben genannten Version im Image nicht vorhanden sind. Man muss also selbst ein eigenes Images bauen oder NodeRED native auf einem Linux Container installiert werden.

[![einkaufsliste-nodered-mealie-telegram-1.png](https://wiki.unixweb.net/uploads/images/gallery/2023-11/einkaufsliste-nodered-mealie-telegram-1.png)](https://wiki.unixweb.eth64.de/uploads/images/gallery/2023-10/einkaufsliste-nodered-mealie-telegram-1.png)

#### NodeRED Code

<details id="bkmrk-%5B-%7B-%22id%22%3A-%22767e8ab9a"><summary>NodeRED Code - hier klicken</summary>

```json
[
    {
        "id": "767e8ab9a03f0e4f",
        "type": "inject",
        "z": "abcd6ab2be488b84",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "",
        "payloadType": "date",
        "x": 200,
        "y": 240,
        "wires": [
            [
                "626bb8984931c788",
                "94531acc91568a22"
            ]
        ]
    },
    {
        "id": "626bb8984931c788",
        "type": "trigger",
        "z": "abcd6ab2be488b84",
        "name": "",
        "op1": "Einkaufliste",
        "op2": "0",
        "op1type": "str",
        "op2type": "str",
        "duration": "5",
        "extend": true,
        "overrideDelay": false,
        "units": "s",
        "reset": "",
        "bytopic": "all",
        "topic": "topic",
        "outputs": 1,
        "x": 220,
        "y": 360,
        "wires": [
            [
                "fdab0ec18a7364d8"
            ]
        ]
    },
    {
        "id": "94531acc91568a22",
        "type": "http request",
        "z": "abcd6ab2be488b84",
        "name": "Einkaufsliste",
        "method": "GET",
        "ret": "txt",
        "paytoqs": "ignore",
        "url": "https://kochbuch.unixweb.eth64.de/api/groups/shopping/items?group_id=XXXX-XXXXX-XXXXX-XXXXX&page=1&perPage=50&orderBy=created_at&orderDirection=desc&paginationSeed=Einkaufen",
        "tls": "",
        "persist": false,
        "proxy": "",
        "insecureHTTPParser": false,
        "authType": "bearer",
        "senderr": false,
        "headers": [],
        "x": 410,
        "y": 240,
        "wires": [
            [
                "b73ba28428b11da8"
            ]
        ]
    },
    {
        "id": "e7810838c682396c",
        "type": "switch",
        "z": "abcd6ab2be488b84",
        "name": "",
        "property": "payload.content",
        "propertyType": "msg",
        "rules": [
            {
                "t": "eq",
                "v": "/liste",
                "vt": "str"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 1,
        "x": 390,
        "y": 300,
        "wires": [
            [
                "94531acc91568a22",
                "626bb8984931c788"
            ]
        ]
    },
    {
        "id": "fdab0ec18a7364d8",
        "type": "chatbot-conversation",
        "z": "abcd6ab2be488b84",
        "name": "",
        "botDevelopment": "83fad7bd2c994193",
        "botProduction": "83fad7bd2c994193",
        "chatId": "617681859",
        "userId": "",
        "transport": "telegram",
        "x": 390,
        "y": 360,
        "wires": [
            [
                "85f263c2ecc9df03"
            ]
        ]
    },
    {
        "id": "b73ba28428b11da8",
        "type": "json",
        "z": "abcd6ab2be488b84",
        "name": "",
        "property": "payload",
        "action": "",
        "pretty": true,
        "x": 570,
        "y": 240,
        "wires": [
            [
                "fc2f6cc52c469909"
            ]
        ]
    },
    {
        "id": "c5b7376177890472",
        "type": "chatbot-telegram-receive",
        "z": "abcd6ab2be488b84",
        "bot": "",
        "botProduction": "",
        "x": 210,
        "y": 300,
        "wires": [
            [
                "e7810838c682396c"
            ]
        ]
    },
    {
        "id": "85f263c2ecc9df03",
        "type": "chatbot-message",
        "z": "abcd6ab2be488b84",
        "name": "",
        "message": [
            {
                "message": "Einkaufsliste -->>>>>>>>>>>>>>>>"
            }
        ],
        "language": "none",
        "x": 570,
        "y": 360,
        "wires": [
            [
                "90658281a5e95487"
            ]
        ]
    },
    {
        "id": "fc2f6cc52c469909",
        "type": "function",
        "z": "abcd6ab2be488b84",
        "name": "Einkaufliste",
        "func": "for (var i = 0; i < msg.payload.total; i++) {\n    var newMsg = {};\n    newMsg.payload = msg.payload.items[i].note;\n    node.send(newMsg);\n}\nreturn null;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 730,
        "y": 240,
        "wires": [
            [
                "81eaa91b4f669350"
            ]
        ]
    },
    {
        "id": "90658281a5e95487",
        "type": "chatbot-telegram-send",
        "z": "abcd6ab2be488b84",
        "bot": "",
        "botProduction": "",
        "track": false,
        "passThrough": false,
        "errorOutput": false,
        "outputs": 0,
        "x": 770,
        "y": 360,
        "wires": []
    },
    {
        "id": "81eaa91b4f669350",
        "type": "chatbot-conversation",
        "z": "abcd6ab2be488b84",
        "name": "",
        "botDevelopment": "83fad7bd2c994193",
        "botProduction": "83fad7bd2c994193",
        "chatId": "XXXXXXXXX",
        "userId": "",
        "transport": "telegram",
        "x": 930,
        "y": 240,
        "wires": [
            [
                "4d675f4164517f5d"
            ]
        ]
    },
    {
        "id": "5b4f462150cf7432",
        "type": "chatbot-message",
        "z": "abcd6ab2be488b84",
        "name": "",
        "message": [
            {
                "message": ""
            }
        ],
        "language": "",
        "x": 570,
        "y": 400,
        "wires": [
            [
                "90658281a5e95487"
            ]
        ]
    },
    {
        "id": "4d675f4164517f5d",
        "type": "link out",
        "z": "abcd6ab2be488b84",
        "name": "link out 4",
        "mode": "link",
        "links": [
            "07d30318e27ee772"
        ],
        "x": 1095,
        "y": 240,
        "wires": []
    },
    {
        "id": "07d30318e27ee772",
        "type": "link in",
        "z": "abcd6ab2be488b84",
        "name": "link in 1",
        "links": [
            "4d675f4164517f5d"
        ],
        "x": 465,
        "y": 400,
        "wires": [
            [
                "5b4f462150cf7432"
            ]
        ]
    }
]

```

</details>Die Gruppen-ID ist in der Gruppenverwaltung von Mealie zu finden.

Für den **API-Aufruf** gibt man die URL mit **/docs** am Ende ein. Dort ist eine Restful API vorhanden, die Parameter selbst zusammen bauen kann. Dort können weitere Funktionen implementiert werden mit NodeRED.

[![einkaufsliste-nodered-telegram-1.png](https://wiki.unixweb.net/uploads/images/gallery/2023-11/einkaufsliste-nodered-telegram-1.png)](https://wiki.unixweb.eth64.de/uploads/images/gallery/2023-10/einkaufsliste-nodered-telegram-1.png)

[![mealie-api-parameter.png](https://wiki.unixweb.net/uploads/images/gallery/2023-11/mealie-api-parameter.png)](https://wiki.unixweb.eth64.de/uploads/images/gallery/2023-10/mealie-api-parameter.png)

So sieht bei erfolgreicher Installation die Einkaufsliste bei Telegram aus:

[![einkaufsliste-nodered-mealie-telegram-2.png](https://wiki.unixweb.net/uploads/images/gallery/2023-11/einkaufsliste-nodered-mealie-telegram-2.png)](https://wiki.unixweb.eth64.de/uploads/images/gallery/2023-10/einkaufsliste-nodered-mealie-telegram-2.png)

![](https://matomo.unixweb.eth64.de/matomo.php?idsite=1&rec=1&action_name=kochbuch1)

# docker-compose

<p class="callout warning">Die Tage hab ich mich gewundert, als der docker-compose beim Deployment massive Fehler ausgegeben hatte.   
Er konnte keine Dateien anlegen, obwohl die Rechte alle gepasst hatten (gibt auch noch einen anderen Grund aber nicht in diesem Fall). Nach etwas Suche ergab sich dass das in den jeweiligen Linux Distributionen enthaltene docker-compose total veraltet ist und es keine aktuellen Packages für die jeweilige Distribution gibt.   
</p>

<p class="callout warning">Inzwischen gibt es ein neues Software Paket "docker-compose-v2" welches mit "apt install docker-compose-v2" installiert werden kann. Es muss "docker-compose" deinstalliert werden, damit der Befehl fehlerfrei auf dem Dockerhost ausgeführt werden kann. </p>

Deshalb gibt es einen anderen Weg.

#### Aktuelle Umgebung : 

docker-compose -v  
docker-compose version **1.29.2**, build unknown  
joachim@dockermain:~$ cat /etc/os-release  
PRETTY\_NAME="Ubuntu 22.04.3 LTS"  
NAME="Ubuntu"  
VERSION\_ID="22.04"  
VERSION="22.04.3 LTS (Jammy Jellyfish)"

Wenn man die Seite besucht: [https://github.com/docker/compose](https://github.com/docker/compose) gibt es bereits ein Release 2.24.1

##### Neues Verfahren : 

Das Docker Compose wird als CLI-Plugin in Docker eingebunden. Dh. in Zukunft gibt man nicht mehr "docker-compose -f docker-compose.yml up -d" ein, sondern **"docker compose -f docker-compose.yml up -d"** .

```shell
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
mkdir -p $DOCKER_CONFIG/cli-plugins
curl -SL https://github.com/docker/compose/releases/download/v2.24.0/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose

chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
```

Die Installation erfolgt im $HOME des angemeldeten Benutzer der "NICHT ROOT" ist. Der Benutzer muss in der Gruppe "docker" sein.

```shell
usermod -aG docker <USERNAME>
```

Sollte Docker Compose für alle Benutzer auf dem Dockerhost zur Verfügung sein muss es in folgenden Verzeichnis installiert werden :

```
sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
```

Nun folgenden Befehl eingeben:

```shell
$ docker compose version
Docker Compose version v2.24.0
```

Ab jetzt sollten Docker Anwendungen mit docker-compose.yml Files nur noch mit folgenden Befehl deployed werden:

<p class="callout info">docker compose -f docker-compose.yml up -d </p>

Und wie ein Wunder, es sind alle Fehlermeldungen verschwunden.

<p class="callout warning">Es gibt Zusatztools wie : apt install docker-ce docker-ce-cli docker-compose-plugin   
</p>

Diese funktionieren aber nicht oder sind zumindest bei Ubuntu 20.04 / 22.04 nicht mehr vorhanden, deshalb muss dieser Weg so gemacht werden. Ich vermute mal dass docker.io so ein ähnliches Problem hat, mal sehen ich werde da mal auf Suche gehen.

# Glances ein Raspberry Pi System Monitor

Glances mit Docker installieren

# Installation auf einem Raspberry Pi 5

Glances ist ein plattformübergreifendes Systemüberwachungstool, das eine umfassende Echtzeit-Übersicht über verschiedene Systemmetriken wie CPU-, Speicher- und Netzwerkauslastung bietet. Es ist flexibel und erweiterbar, unterstützt mehrere Ausgabeformate und kann sowohl im Terminal als auch über ein Web-Interface genutzt werden.

[![Glances-Screenshot.png](https://wiki.unixweb.net/uploads/images/gallery/2024-07/scaled-1680-/glances-screenshot.png)](https://wiki.unixweb.net/uploads/images/gallery/2024-07/glances-screenshot.png)

```shell
docker run -d --restart="always" -p 61208-61209:61208-61209 -e GLANCES_OPT="-w" -v /var/run/docker.sock:/var/run/docker.sock:ro --pid host nicolargo/glances:latest-full
```

# Installation auf einem Raspberry Pi 4 mit ARMV7 Prozessor

Glances ist ein plattformübergreifendes Systemüberwachungstool, das eine umfassende Echtzeit-Übersicht über verschiedene Systemmetriken wie CPU-, Speicher- und Netzwerkauslastung bietet. Es ist flexibel und erweiterbar, unterstützt mehrere Ausgabeformate und kann sowohl im Terminal als auch über ein Web-Interface genutzt werden.

[![Glances-Screenshot.png](https://wiki.unixweb.net/uploads/images/gallery/2024-07/scaled-1680-/glances-screenshot.png)](https://wiki.unixweb.net/uploads/images/gallery/2024-07/glances-screenshot.png)

```yaml
services:
  monitoring:
    image: nicolargo/glances:3.4.0.5
    restart: always
    pid: host
    ports:
      - 61208-61209:61208-61209
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /etc/os-release:/etc/os-release:ro
    environment:
      - "GLANCES_OPT=-w"
```

Hier ist darauf zu achten dass die Version 3.4.0.5 genutzt wird. Die neueren Docker Container Versionen laufen nicht auf einem ARMV7 Prozessor.

# openwebrx plus

openwebrx plus

```yaml
services:
    openwebrxplus-softmbe:
        container_name: owrxp
        devices:
            - /dev/bus/usb
        ports:
            - 8073:8073
        volumes:
            - owrxp-settings:/var/lib/openwebrx
            - owrxp-etc:/etc/openwebrx
        privileged: true
        restart: unless-stopped
        image: slechev/openwebrxplus-softmbe
volumes:
    owrxp-settings:
        external: true
        name: owrxp-settings
    owrxp-etc:
        external: true
        name: owrxp-etc

```

# Nvidia Toolkit installieren

```
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey -o /tmp/nvidia-gpgkey
```

Dearmor the GPG key and save it

```
# gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg /tmp/nvidia-gpgkey
```

Download the NVIDIA container toolkit list file

```
$ curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list -o /tmp/nvidia-list
```

Modify the list file to include the signature

```
# sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' /tmp/nvidia-list > /etc/apt/sources.list.d/nvidia-container-toolkit.list
```

Update the package database

```
# apt-get update
```

After executing these commands, you’ve set the stage for the NVIDIA Container Toolkit, which will be vital in our next steps to fully integrate the CUDA Toolkit within a Docker container.#

```shell
ubuntu-drivers devices
ubuntu-drivers list
```

# docker expose

#### Docker Container ohne Ports betreiben.

Netwerk einrichten damit die Zuweisung mit IP-Adressen funktioniert:

```yaml
docker network create \
  --driver=bridge \
  --subnet=172.26.0.0/24 \
  my_bridge_network

```

Einrichtung Portainer:

```yaml
services:
  portainer-ce:
    container_name: portainer
    restart: always
    volumes:
      - '/var/run/docker.sock:/var/run/docker.sock'
      - 'portainer_data:/data'
    image: 'portainer/portainer-ce:latest'
    networks:
      my_bridge_network:
        ipv4_address: 172.26.0.4

volumes:
  portainer_data:

networks:
  my_bridge_network:
    external: true
```

Einrichtung Apache2:

```yaml
services:
  apache:
    image: httpd:latest
    container_name: apache2
    volumes:
      - ./app:/usr/local/apache2/htdocs

    networks:
      my_bridge_network:
        ipv4_address: 172.26.0.3

volumes:
  open-webui:

networks:
  my_bridge_network:
    external: true
```

Einrichtung Zoraxy:

```yaml
services:
  zoraxy:
    image: zoraxydocker/zoraxy:latest
    container_name: zoraxy
    restart: unless-stopped
    ports:
      - 80:80
      - 443:443
    expose:
      - 8000:8000
    volumes:
      - /home/user/docker/zoraxy/config/:/opt/zoraxy/config/
      - /home/user/docker/zerotier/config/:/var/lib/zerotier-one/
      - /var/run/docker.sock:/var/run/docker.sock
      - /etc/localtime:/etc/localtime
    environment:
      FASTGEOIP: "true"
      ZEROTIER: "true"

    networks:
      my_bridge_network:
        ipv4_address: 172.26.0.2

networks:
  my_bridge_network:
    external: true
```

[![Bildschirmfoto 2024-12-23 um 01.42.30.png](https://wiki.unixweb.net/uploads/images/gallery/2024-12/scaled-1680-/bildschirmfoto-2024-12-23-um-01-42-30.png)](https://wiki.unixweb.net/uploads/images/gallery/2024-12/bildschirmfoto-2024-12-23-um-01-42-30.png)

# wireguard

traceroute www.google.de  
traceroute to www.google.de (216.58.206.35), 30 hops max, 60 byte packets  
14 192.178.74.165 (192.178.74.165) 29.742 ms 29.720 ms 192.178.74.163 (192.178.74.163) 27.842 ms  
15 lhr35s10-in-f3.1e100.net (216.58.206.35) 29.568 ms 29.519 ms 25.746 ms

pi@wireguard-test:~ $ netstat -rn  
Kernel IP routing table  
Destination Gateway Genmask Flags MSS Window irtt Iface  
0.0.0.0 192.168.10.1 0.0.0.0 UG 0 0 0 eth0  
10.8.0.0 0.0.0.0 255.255.255.0 U 0 0 0 wg0  
192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

```yaml
[Interface]
PrivateKey = Odfgdgdgdgdgdsfgdgdsfgertfg34g34g34Z6x14=
Address = 10.8.0.6/24
DNS = 192.168.10.2
MTU = 1420

[Peer]
PublicKey = idgfgdgdgdgdgdgdgdgdgdgdgdgdgdgdc=
PresharedKey = 77Hh1XEDgdgfdgdgdsgdgdfdkfaGBci2Rk=
AllowedIPs = 10.8.0.0/24. # Wichtig damit 192.168.10.X erreicbar bleibt im lokalen Netz
PersistentKeepalive = 25
Endpoint = xxxx.dnsfor.me:51820
```

# AWX Installation auf KVM mit Ubuntu 24.04.2 LTS

## [![AWX-mit-Docker-und-VM-Kubernetes.png](https://wiki.unixweb.net/uploads/images/gallery/2025-07/scaled-1680-/awx-mit-docker-und-vm-kubernetes.png)](https://wiki.unixweb.net/uploads/images/gallery/2025-07/awx-mit-docker-und-vm-kubernetes.png)Voraussetzungen

- KVM Host mit Ubuntu 24.04.2 LTS (frisch installiert)
- `nesting=1` gesetzt, falls LXC verwendet wird
- Ausreichend CPU/RAM (mindestens 2 vCPU, 4 GB RAM empfohlen)

---

## 1. System aktualisieren

```bash
sudo apt update && sudo apt upgrade -y

```

## 2. Wichtige Pakete installieren

```bash
sudo apt install -y make curl git apt-transport-https ca-certificates gnupg software-properties-common make

```

## 3. Docker installieren

```bash
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER

```

> Hinweis: Danach einmal neu anmelden oder `newgrp docker`

---

## 4. KIND (Kubernetes in Docker) installieren

```bash
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.22.0/kind-linux-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind

```

## 5. `kubectl` installieren

```bash
curl -LO "https://dl.k8s.io/release/v1.29.2/bin/linux/amd64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin/

```

---

## 6. Kubernetes Cluster mit Portweiterleitung erstellen

```yaml
# kind-config.yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
  - role: control-plane
    extraPortMappings:
      - containerPort: 32464
        hostPort: 32464
        protocol: TCP

```

```bash
kind create cluster --name awx --config kind-config.yaml

```

---

## 7. AWX Operator installieren

```bash
git clone https://github.com/ansible/awx-operator.git
cd awx-operator
git checkout tags/24.2.0
make deploy NAMESPACE=awx

```

---

## 8. AWX Deployment erstellen (`awx.yaml`)

```yaml
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
  name: awx
  namespace: awx
spec:
  service_type: nodeport
  ingress_type: none
  create_preload_data: true

```

```bash
kubectl apply -f awx.yaml -n awx

```

---

## 9. Warten, bis alle Pods laufen

```bash
kubectl get pods -n awx -w

```

> Achte darauf, dass `awx-task` und `awx-web` auf `Running` stehen

---

## 10. NodePort finden

```bash
kubectl get svc -n awx awx-service

```

> Beispielausgabe:

```
NAME          TYPE       CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
awx-service   NodePort   10.96.242.91   <none>        80:32464/TCP   60m

```

---

## 11. AWX Web-UI aufrufen

**Im Browser:**

```
http://<KVM-Host-IP>:32464

```

Beispiel:

```
http://192.168.10.122:32464

```

---

## 12. Anmeldedaten

Standardmäßig:

- **Benutzer:** `admin`
- **Passwort:** wird beim ersten Start im `awx-task` Container geloggt:

```bash
kubectl logs -n awx deployment/awx-task | grep password

```

---

## Troubleshooting

- Bei DNS-Problemen `hostAliases` im `AWX`-CR vermeiden — wird derzeit nicht unterstützt.
- Prüfe `kubectl describe pod ...` bei Pod-Fehlern
- IPv6-only Umgebungen können Probleme verursachen → ggf. IPv4 bevorzugt konfigurieren
- kubectl -n awx patch service awx-service -p '{"spec": {"ports": \[{"port": 80, "targetPort": 80, "protocol": "TCP", "nodePort": 32464}\]}}'

---

## AWX Update

```bash
kubectl apply -f awx.yaml -n awx

```

> Wichtig: Änderungen an nicht unterstützten Feldern (z. B. `hostAliases`) vermeiden.

---

Fertig! 🎉 AWX ist jetzt bereit für deine Projekte.

# Netdata

NetData Server / Agent

[![netdata-docker.png](https://wiki.unixweb.net/uploads/images/gallery/2026-01/scaled-1680-/netdata-docker.png)](https://wiki.unixweb.net/uploads/images/gallery/2026-01/netdata-docker.png)

```yaml
services:
  netdata:
    image: netdata/netdata:stable
    container_name: netdata-agent
    hostname: docker-host-10-58
    pid: host
    network_mode: host
    restart: unless-stopped
    cap_add:
      - SYS_PTRACE
      - SYS_ADMIN
    security_opt:
      - apparmor:unconfined
    volumes:
      - netdataconfig:/etc/netdata
      - netdatalib:/var/lib/netdata
      - netdatacache:/var/cache/netdata

      - /:/host/root:ro,rslave
      - /etc/passwd:/host/etc/passwd:ro
      - /etc/group:/host/etc/group:ro
      - /etc/localtime:/etc/localtime:ro
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /etc/os-release:/host/etc/os-release:ro
      - /var/log:/host/var/log:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - /run/dbus:/run/dbus:ro

volumes:
  netdataconfig:
  netdatalib:
  netdatacache:

```

Netdata Agent Konfiguration /etc/netdata/orig/stream.conf

```yaml
[stream]
enabled = yes
destination = 192.168.10.71
api key = docker-host-10-58
timeout seconds = 60
send charts matching = *

```

Netdata Konfigration Server: /etc/netdata/orig/stream.conf

```yaml
[stream]
enabled = yes

[docker-host-10-7]
enabled = yes
default history = 3600
health enabled = yes

[docker-host-10-58]
enabled = yes
default history = 3600
health enabled = yes

```