e4b0db2af6
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>
3.7 KiB
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:19120ist frei
Bestaetigter Host-Stand (Soll)
- produktiver Komodo-Stack:
komodo-mongo,komodo-core,komodo-peripheryunter Projectkomodo - produktive Mongo-Datadir:
/mnt/user/appdata/komodo/mongo - produktive Secrets:
KOMODO_*Stack-ENV-only (Restore-Reihenfolge siehedocs/SECRETS_MAP.md) - Test isoliert das alles unter Project
restoretest-komodomit 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-dataerhalten
Smoke-Test-Pruefungen
Minimal erwartet im Report:
docker compose config valid: okTest-Mongo healthy: okMongo authenticated ping (Test-Creds): okKomodo Core HTTP status: 200|302|303|401Test-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-komodoals Compose-Project-Name reserviert; Test-Container heissenrestoretest-komodo-*.