4.4 KiB
4.4 KiB
Komodo Bootstrap Trockenlauf - Plan
Ziel
Nachweisen, dass ops/komodo/docker-compose.yml als Recovery-Anker fuer einen Komodo-Kaltstart tauglich ist, ohne den produktiven Komodo-Stack anzufassen.
Bewusst nicht Teil dieses Tests:
- Restore aus dem produktiven
komodo-mongo.archive.gz-Dump (eigene Folgeaufgabe; dieser Test prueft nur das Compose-Bootstrap, nicht den Daten-Restore). - docker.sock-Mount fuer die Test-Periphery (die Test-Periphery darf nie produktive Container managen).
- Traefik-Route oder Authelia-Anbindung (Test laeuft ausschliesslich auf
127.0.0.1:19120).
Quelle
- Bootstrap-Anker:
ops/komodo/docker-compose.yml(Soll-Stand lautdocs/SERVICES_RECOVERY.mdStufe A-F). - Image-Digests: identisch zur Produktion fuer komodo-core und komodo-periphery; Mongo-Image identisch.
Test-Ziel
- Restore-Lab:
/mnt/user/backups/restore-lab/komodo - Wegwerf-Pfade:
/mnt/user/backups/restore-lab/komodo/mongo(Test-Mongo-Datadir)/mnt/user/backups/restore-lab/komodo/core(Repo-Cache)/mnt/user/backups/restore-lab/komodo/keys(gemeinsamer Keys-Pfad fuer Core+Periphery)/mnt/user/backups/restore-lab/komodo/periphery(Periphery-Etc)
- Testcontainer:
restoretest-komodo-mongorestoretest-komodo-core(Test-Port127.0.0.1:19120)restoretest-komodo-periphery(ohne docker.sock)
- Compose-Project:
restoretest-komodo(isoliert von Produktions-Projectkomodo) - Report-Ziel:
/mnt/user/backups/restore-reports/komodo-bootstrap-YYYY-MM-DD.md
Schutzregeln
- produktive Datadirs
/mnt/user/appdata/komodo/{mongo,core,periphery}werden nicht gemountet - produktive Container
komodo-mongo,komodo-core,komodo-peripherywerden nicht gestoppt - produktive
KOMODO_*-Secrets werden nicht verwendet - Test-Compose enthaelt nur Wegwerf-Werte fuer
KOMODO_SECRET_KEY,KOMODO_WEBHOOK_SECRET,KOMODO_JWT_SECRET,KOMODO_PASSKEYund Mongo-Root-Password - Test-Periphery laeuft ohne docker.sock-Mount und ohne
/mnt/user/services-Mount - Test-Port nur auf
127.0.0.1:19120, keine LAN-/Tailscale-Bindung
Geplanter Ablauf
- Restore-Lab-Pfade leer anlegen
docker compose configauf dem Test-Compose validieren- Mongo und Core hochfahren, auf Mongo-
healthywarten - HTTP-Smoke gegen
http://127.0.0.1:19120(Login-Seite oder Auth-Redirect erwartet) - Periphery dazustarten, kurz beobachten
- Mongo-
authenticated pingmit Test-Credentials - Report schreiben
- Cleanup
docker compose down -vund Restore-Lab loeschen (ausser--keep-data)
Smoke-Test
Minimal erfolgreich:
docker compose configvalid- Test-Mongo erreicht
healthy - Mongo-Authentifizierung mit Test-Creds funktioniert (
db.adminCommand({ping:1}).ok = 1) - Komodo-Core HTTP
200,302,303oder401(alles ist ein valider Lebenszeichen) - Test-Periphery container state
running
Optional spaeter:
- Periphery-Verbindung gegen Test-Core verifizieren (braucht Periphery-Konfig mit
core_url) - Echtes Restore aus
komodo-mongo.archive.gz-Dump in die Test-Mongo - Schreiben einer Wegwerf-Resource (Server/Stack) ueber die API
Bekannte Komplikationen
| Risiko | Beschreibung | Mitigation |
|---|---|---|
| Image-Drift | Komodo-Images aktualisieren ihre Major-Tag-Digests | Compose pinnt denselben Digest wie Produktion; bei Image-Update auch Test-Compose nachziehen |
| Port-Konflikt | wenn 19120 anderweitig belegt ist | nur 127.0.0.1-Bind; bei Konflikt Port im Compose anpassen |
| Volume-Reste | unterbrochener Lauf laesst Wegwerf-Datadir liegen | Skript loescht Restore-Lab vor jedem Lauf; --keep-data ueberschreibt das bewusst |
| Periphery-Erreichbarkeit | Core sucht Periphery initial nicht aktiv | Test prueft nur Periphery State.Status=running; voller Handshake ist optional |
Bestaetigte Laeufe
| Datum | Mode | Ergebnis | Report |
|---|---|---|---|
| 2026-05-30 | --what-if |
Plan-Ausgabe wie erwartet | (kein Report, nur stdout) |
| 2026-05-30 | --keep-data |
SUCCESS, 5/5 Checks gruen, Core HTTP 200, Mongo healthy in ~6 s |
/mnt/user/backups/restore-reports/komodo-bootstrap-2026-05-30.md |
Folgeschritte
- Quartals-Belegung: Komodo-Bootstrap passt zum DR-Sanity-Check (
ops/restore-tests/schedule.mdQ2/Q4) und kann ohne Borg-Archiv jederzeit wiederholt werden. - Optional fuer kuenftige Laeufe: echtes Restore aus
komodo-mongo.archive.gzin die Test-Mongo, danach Schreiben einer Wegwerf-Resource ueber die API.