# 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 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 ```bash # 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): ```bash 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-*`.