4.1 KiB
4.1 KiB
Authelia Restore Runbook
Status
Skript und Test-Compose sind als Scaffold abgelegt. Erstlauf steht noch aus und braucht Operator-Freigabe. Authelia ist Tier-1-kritisch, deshalb startet dieser Test bewusst konservativ: Smoke-Test prueft nur Config-Validate + HTTP-Health, kein vollstaendiger Auth-Flow.
Vorbedingungen
- Borg-Quelle ist verfuegbar
borg-ui-Container laeuft- Borg-Passphrase-Datei vorhanden:
/mnt/user/appdata/secrets/borg_repo_passphrase.txt borg-uimountet die Passphrase im Container als/local/secrets/borg_repo_passphrase.txt- aktuelles Borg-Archiv enthaelt
local/appdata/authelia/config - optional:
local/borg-dumps/latest/postgresql17-authelia.dump - Testpfade unter
/mnt/user/backups/restore-lab/und/mnt/user/backups/restore-reports/sind freigegeben - Port
127.0.0.1:19091frei - freier Speicher unter
/mnt/user/backups/restore-lab/authelia(~200 MB reichen)
Bestaetigter Host-Stand (Soll)
- produktiver Authelia-Container:
autheliamit Imageauthelia/authelia:4.39.20@sha256:1b363e9279e742397966333f364e0876ae02bf5c876de73e83af6d48c57ff51b - produktiver Config-Pfad:
/mnt/user/appdata/authelia/config - produktive Secrets:
/mnt/user/appdata/secrets/authelia_*.txt(werden vom Test nicht gebraucht) - produktive Storage: shared PostgreSQL 18 (wird vom Test nicht angesprochen)
Erster Lauf - trockene Variante
bash /mnt/user/services/homelab-infra/ops/restore-tests/authelia-restore-test.sh --what-if
Erwartete Ausgabe: nur Plan-Output, kein Docker-Start, kein Borg-Extract.
Erster Lauf - echter Test (Operator-freigegeben)
bash /mnt/user/services/homelab-infra/ops/restore-tests/authelia-restore-test.sh --keep-data
Bei Erfolg:
- Report unter
/mnt/user/backups/restore-reports/authelia-YYYY-MM-DD.md - Restore-Lab-Daten bleiben mit
--keep-dataerhalten - ohne
--keep-datawird das Restore-Lab geloescht; bei Fehler wird es nach/mnt/user/backups/restore-lab/_failed/authelia-...verschoben
Smoke-Test-Pruefungen
Minimal erwartet im Report:
- Borg extract of config:
ok - Test-Postgres healthy
authelia config validate:ok- HTTP /api/health status:
200
Fehlerfaelle
| Symptom | Ursache | Massnahme |
|---|---|---|
config validate failt mit notifier Block |
Produktive Notifier-Map wurde nicht sauber aus der Testkonfig entfernt | Originalkonfig pruefen unter restore-lab/authelia/config/configuration.yml.original; Strip-Liste oder Test-Block im Skript anpassen |
config validate failt mit session.domain |
aelteres/neueres Schema | Test-session:-Block an reales Authelia-Schema anpassen |
| HTTP-Timeout 120 s | Authelia haengt in Postgres-Schema-Migration | docker logs --tail 200 restoretest-authelia lesen, ggf. Wartezeit erhoehen |
| SMTP-Connect im Log | Produktiver Notifier-Block wurde nicht sauber entfernt | test-config/configuration.yml auf smtp: pruefen und Strip-Liste haerten |
pg_restore failt mit Schema-Drift |
Dump aus 17er-Cluster, 18er Image braucht andere Initialisierung | Schritt als optional dokumentiert; Smoke ohne Dump akzeptieren und Issue nachverfolgen |
Cleanup
- bei Erfolg ohne
--keep-data:rm -rf /mnt/user/backups/restore-lab/autheliaund Extract-Cache - bei Fehler: Datenpfad wird via
preserve_on_failurenach/mnt/user/backups/restore-lab/_failed/authelia-...umbenannt
Produktive Authelia-Container, produktive Secrets, produktive Postgres-DB und produktiver SMTP-Account werden niemals beruehrt.
Schedule
Aktuell nicht im automatischen Schedule. Vorschlag nach erstem erfolgreichen Lauf: zweimonatlich (2. Samstag in geraden Monaten), damit nicht mit Paperless kollidierend.
Festgelegte Entscheidungen
- Test-Compose nutzt denselben Image-Digest wie Produktion.
- Wegwerf-Secrets ausschliesslich im Test-Compose; niemals produktive Authelia-Secrets einsetzen.
- Test-Postgres ist isoliert; produktive shared PostgreSQL 18 wird nicht angesprochen.
- Notifier wird auf Filesystem umgebogen; KEIN echter SMTP-Versand.
- Test-Port nur auf
127.0.0.1:19091, keine LAN-/Traefik-Anbindung. - Borg-Passphrase wird aus Host-Secret-Datei gelesen und nirgendwo geloggt.