diff --git a/docs/DISASTER_RECOVERY.md b/docs/DISASTER_RECOVERY.md index d9e2f21..fd4693d 100644 --- a/docs/DISASTER_RECOVERY.md +++ b/docs/DISASTER_RECOVERY.md @@ -360,7 +360,7 @@ Wenn weder externer Mirror noch lokaler Clone verfuegbar sind, ist `services/git - Borg-Passphrase extern sicher hinterlegen - Komodo Stack-ENV-Werte zentral ausserhalb von Komodo dokumentieren - Restore-Smoke-Test fuer mindestens einen weiteren kritischen Dienst dokumentieren -- `komodo-mongo`-Dump gezielt bestaetigen +- `komodo-mongo`-Dump nach Major-Upgrades gezielt kontrollieren --- diff --git a/ops/borg-ui/BACKUP_AUDIT_STATUS_QUO.md b/ops/borg-ui/BACKUP_AUDIT_STATUS_QUO.md index 0f18bbb..5b0eb0b 100644 --- a/ops/borg-ui/BACKUP_AUDIT_STATUS_QUO.md +++ b/ops/borg-ui/BACKUP_AUDIT_STATUS_QUO.md @@ -99,9 +99,9 @@ Der technische Scope für `critical_infra` ist in `all-important-sources.txt` fe - `mealie.dump` - `immich.dump` -### Nicht erfolgreich / nicht bestätigt +### Bestätigt -- `komodo-mongo.archive.gz` - im bisherigen Lauf nicht sichtbar, daher noch nicht als bestätigt werten +- `komodo-mongo.archive.gz` - am 2026-05-04 frisch erzeugt und per `gzip -t` geprüft ## Ergebnis des ersten `critical_infra`-Laufs @@ -131,7 +131,6 @@ Das betrifft insbesondere: ### Weiterhin offen trotz erfolgreichem Lauf -- `komodo-mongo`-Dump bleibt unbestätigt - der Scope kann später noch bewusst verschlankt werden, ist aber aktuell funktionsfähig ## Aktueller Abschlussstand @@ -165,7 +164,7 @@ Das ist kein Strukturfehler, sondern eine normale Trennung zwischen Nutzdaten un 1. **Komodo MongoDB** - Dump-Pfad im Skript vorhanden - - Erfolg noch nicht bestätigt + - Erfolg am 2026-05-04 bestätigt ## Vorläufiges Audit-Fazit @@ -185,7 +184,7 @@ Das eigentliche Restproblem ist aktuell **nicht** die Share-Struktur, sondern: ## Nächste sinnvolle Schritte -1. `komodo-mongo` bei Gelegenheit separat prüfen und nur dann erweitern, wenn der tatsächliche Bedarf bestätigt ist. +1. `komodo-mongo` nach Komodo-Major-Upgrades gezielt im Auge behalten. 2. Das automatische Borg-Fenster beobachten und nach den ersten geplanten Läufen nur noch auf Warnungen reagieren. 3. Optionale spätere Scope-Verschlankung nur bewusst und nicht ad hoc vornehmen. diff --git a/ops/komodo/docker-compose.yml b/ops/komodo/docker-compose.yml index 6363f20..981d3d2 100644 --- a/ops/komodo/docker-compose.yml +++ b/ops/komodo/docker-compose.yml @@ -6,6 +6,8 @@ services: komodo-mongo: image: mongo:7 container_name: komodo-mongo + labels: + komodo.skip: restart: unless-stopped command: --quiet volumes: @@ -31,13 +33,15 @@ services: # Admin-Dienst: bewusst ohne pauschale ForwardAuth-Middleware; dokumentierte Ausnahme # ────────────────────────────────────────────────────────────────── komodo-core: - image: ghcr.io/mbecker20/komodo:latest@sha256:d0a201fdf7113b7a47fe925e0a8a9c337f632980a27f151729030f05e99e22c0 + image: ghcr.io/moghtech/komodo-core:2 container_name: komodo-core + init: true restart: unless-stopped depends_on: komodo-mongo: condition: service_healthy volumes: + - komodo_keys:/config/keys - /mnt/user/appdata/komodo/core:/repo-cache networks: - komodo_net @@ -50,9 +54,10 @@ services: - KOMODO_TITLE=Kallilabcore - KOMODO_SECRET_KEY=${KOMODO_SECRET_KEY} - KOMODO_WEBHOOK_SECRET=${KOMODO_SECRET_KEY} - - KOMODO_MONGO_ADDRESS=komodo-mongo:27017 - - KOMODO_MONGO_USERNAME=komodo - - KOMODO_MONGO_PASSWORD=${KOMODO_MONGO_PASSWORD} + - KOMODO_PASSKEY=${KOMODO_PERIPHERY_PASSKEY} + - KOMODO_DATABASE_ADDRESS=komodo-mongo:27017 + - KOMODO_DATABASE_USERNAME=komodo + - KOMODO_DATABASE_PASSWORD=${KOMODO_MONGO_PASSWORD} - KOMODO_LOG_LEVEL=info - KOMODO_LOCAL_AUTH=true - KOMODO_JWT_SECRET=${KOMODO_JWT_SECRET} @@ -74,17 +79,21 @@ services: # Ausnahme: Docker-Socket ohne :ro (Periphery startet/stoppt Container) # ────────────────────────────────────────────────────────────────── komodo-periphery: - image: ghcr.io/mbecker20/periphery:latest@sha256:087babb8a6090882846750f72c48323007cbf9a548bd930a19a0c09e8220d95c + image: ghcr.io/moghtech/komodo-periphery:2 container_name: komodo-periphery + init: true restart: unless-stopped volumes: + - komodo_keys:/config/keys - /var/run/docker.sock:/var/run/docker.sock + - /proc:/proc - /mnt/user/appdata/komodo/periphery:/etc/komodo networks: - komodo_net environment: - PERIPHERY_ROOT_DIRECTORY=/mnt/user/services - - PERIPHERY_PASSKEY=${KOMODO_PERIPHERY_PASSKEY} + - PERIPHERY_PASSKEYS=${KOMODO_PERIPHERY_PASSKEY} + - PERIPHERY_SSL_ENABLED=false - TZ=Europe/Berlin extra_hosts: - "git.kaleschke.info:192.168.178.58" @@ -98,3 +107,6 @@ networks: name: komodo_net internal: true driver: bridge + +volumes: + komodo_keys: diff --git a/ops/komodo/stack.env.example b/ops/komodo/stack.env.example index 4c36c75..d0cd863 100644 --- a/ops/komodo/stack.env.example +++ b/ops/komodo/stack.env.example @@ -18,5 +18,9 @@ KOMODO_MONGO_PASSWORD= # Komodo Secret Key (JWT-Signing, min. 32 Zeichen) KOMODO_SECRET_KEY= -# Periphery Passkey (Core <-> Agent Authentifizierung) +# Komodo JWT Secret (min. 32 Zeichen) +KOMODO_JWT_SECRET= + +# Legacy v1: Periphery Passkey (Core <-> Agent Authentifizierung) +# Komodo v2 nutzt Public-Key-Authentifizierung ueber /config/keys. KOMODO_PERIPHERY_PASSKEY=