Files
homelab-infra/ops/restore-tests/komodo-bootstrap-runbook.md

3.9 KiB

Komodo Bootstrap Trockenlauf - Runbook

Status

Skript und Test-Compose sind vorbereitet. Erstlauf 2026-05-30 erfolgreich (SUCCESS, alle 5 Checks gruen, Komodo Core HTTP 200). Report: /mnt/user/backups/restore-reports/komodo-bootstrap-2026-05-30.md. Folgelaeufe quartalsweise empfohlen als Teil des DR-Sanity-Checks (ops/restore-tests/schedule.md).

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 (ops/restore-tests/schedule.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-*.