Files
homelab-infra/ops/restore-tests/komodo-bootstrap-runbook.md
T
Micha e4b0db2af6 Add Komodo bootstrap dry-run scaffold (F-09 rest)
Mirror of the Immich restore-test pattern for the Komodo bootstrap
anchor. Brings up a throwaway komodo-mongo + komodo-core +
komodo-periphery under project restoretest-komodo, isolated from
production:

- same image digests as production (mongo:7.0.32, komodo-core:2,
  komodo-periphery:2) to prove compose-level bootstrap compatibility
- restore-lab paths under /mnt/user/backups/restore-lab/komodo
- 127.0.0.1:19120 only, no LAN bind, no Traefik, no Authelia
- test periphery runs WITHOUT docker.sock mount and WITHOUT
  /mnt/user/services mount; cannot manage productive containers
- KOMODO_* secrets are throwaway placeholders hardcoded in the test
  compose; productive secrets never enter this path

Smoke test: compose config valid, mongo healthy, mongo auth-ping
with test creds, komodo-core HTTP 200/302/303/401, periphery
container running. Report under restore-reports/komodo-bootstrap-*.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 15:25:41 +02:00

3.7 KiB

Komodo Bootstrap Trockenlauf - Runbook

Status

Skript und Test-Compose sind vorbereitet. Erster echter Lauf steht noch aus.

Vorbedingungen

  • Docker auf dem Unraid-Host
  • borg-ui-Container muss nicht laufen (im Gegensatz zum Immich-Test braucht der Komodo-Bootstrap kein Borg-Archiv)
  • freier Speicher unter /mnt/user/backups/restore-lab/komodo (~500 MB reichen)
  • Port 127.0.0.1:19120 ist frei

Bestaetigter Host-Stand (Soll)

  • produktiver Komodo-Stack: komodo-mongo, komodo-core, komodo-periphery unter Project komodo
  • produktive Mongo-Datadir: /mnt/user/appdata/komodo/mongo
  • produktive Secrets: KOMODO_* Stack-ENV-only (Restore-Reihenfolge siehe docs/SECRETS_MAP.md)
  • Test isoliert das alles unter Project restoretest-komodo mit Restore-Lab-Datadir

Erster Lauf - trockene Variante

bash /mnt/user/services/homelab-infra/ops/restore-tests/komodo-bootstrap-test.sh --what-if

Erwartete Ausgabe: nur Plan-Output, kein Docker-Start, kein Verzeichnis angelegt.

Erster Lauf - echter Test

# optional: produktiven Komodo-Stack-Status pruefen, damit nichts kollidiert
docker ps --filter name=komodo --format "{{.Names}}\t{{.Status}}"

# Lauf mit Datenerhalt
bash /mnt/user/services/homelab-infra/ops/restore-tests/komodo-bootstrap-test.sh --keep-data

Bei Erfolg:

  • Report unter /mnt/user/backups/restore-reports/komodo-bootstrap-YYYY-MM-DD.md
  • Test-Container restoretest-komodo-* werden nach Lauf gestoppt und entfernt (auch bei --keep-data)
  • Restore-Lab-Daten bleiben mit --keep-data erhalten

Smoke-Test-Pruefungen

Minimal erwartet im Report:

  • docker compose config valid: ok
  • Test-Mongo healthy: ok
  • Mongo authenticated ping (Test-Creds): ok
  • Komodo Core HTTP status: 200|302|303|401
  • Test-Periphery container state: running

Manuelle Folgepruefung (optional):

docker compose -f /mnt/user/services/homelab-infra/ops/restore-tests/komodo-bootstrap-compose.test.yml \
  -p restoretest-komodo up -d
curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:19120
docker exec restoretest-komodo-mongo mongosh --quiet -u komodo \
  -p restoretest-komodo-mongo-pwd --authenticationDatabase admin --eval 'db.adminCommand({ping:1})'
docker compose -f /mnt/user/services/homelab-infra/ops/restore-tests/komodo-bootstrap-compose.test.yml \
  -p restoretest-komodo down -v

Cleanup ohne --keep-data

Skript bereinigt:

  • Test-Container und Test-Volumes ueber docker compose down -v
  • Restore-Lab unter /mnt/user/backups/restore-lab/komodo

Produktive Komodo-Container, Mongo-Datadir und KOMODO_*-Secrets werden niemals beruehrt.

Fehlerfaelle

Symptom Ursache Massnahme
Test-Mongo never reported healthy mongo-image konnte nicht starten docker logs restoretest-komodo-mongo pruefen; Restore-Lab-Pfad leer?
HTTP-Timeout nach 120 s Komodo-Core haengt in Mongo-Connect docker logs restoretest-komodo-core pruefen; Mongo-Auth-Test wiederholen
bind: address already in use Port 19120 belegt Compose-Port-Mapping anpassen oder konfligierenden Prozess identifizieren
Periphery restarting Periphery braucht zusaetzliche ENVs Logs lesen; Periphery-Verbindung ist optional fuer den Smoke-Test

Schedule

Aktuell nicht im automatischen Schedule. Empfohlen als Teil des quartalsweisen DR-Sanity-Check (docs/RESTORE_DRILL_ROUTINE.md).

Festgelegte Entscheidungen

  • Test-Compose nutzt dieselben Image-Digests wie Produktion.
  • Test-Periphery laeuft bewusst ohne docker.sock-Mount.
  • Test-Secrets sind Wegwerf-Werte im Compose; niemals produktive Werte einsetzen.
  • Test-Port nur auf 127.0.0.1, keine LAN-Bindung.
  • restoretest-komodo als Compose-Project-Name reserviert; Test-Container heissen restoretest-komodo-*.