4.9 KiB
Authelia Restore Runbook
Status
Skript und Test-Compose sind validiert. Erstlauf 2026-06-03 erfolgreich: Config aus Borg extrahiert, minimale Test-Konfiguration validiert, frisches Test-Postgres gestartet, HTTP /api/health 200. Report: /mnt/user/backups/restore-reports/authelia-2026-06-03.md. Authelia ist Tier-1-kritisch, deshalb bleibt dieser Test bewusst konservativ: Smoke-Test prueft nur Config-Validate + HTTP-Health, kein vollstaendiger Auth-Flow und kein produktiver Dump-Restore.
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 |
Testkonfig enthaelt mehr als einen Notifier | test-config/configuration.yml pruefen; Minimal-Test-Block im Skript anpassen |
config validate failt mit session.domain |
aelteres/neueres Schema | Test-session:-Block an reales Authelia-Schema anpassen |
config validate failt mit access_control default_policy |
Authelia >=4.39 verlangt ohne Rules two_factor/one_factor |
Test-Block ist bereits auf two_factor gesetzt; bei weiterer Schema-Aenderung anpassen |
| HTTP-Timeout 120 s | Authelia haengt in Postgres-Schema-Migration | docker logs --tail 200 restoretest-authelia lesen, ggf. Wartezeit erhoehen |
encryption key does not appear to be valid for this database |
jemand hat pg_restore des produktiven Dumps wieder eingebaut |
pg_restore ist seit 2026-06-03 bewusst NICHT mehr Teil dieses Smokes - siehe Plan/Skript-Doku; nicht re-aktivieren ohne kontrollierte Encryption-Key-Choreographie |
| SMTP-Connect im Log | Testkonfig oder Env erzeugt unerwartet SMTP | test-config/configuration.yml und AUTHELIA_*SMTP* Env pruefen |
Could not determine the clock offset |
DNS-Lookup time.cloudflare.com failt im isolierten Test-Netz |
ntp.disable_startup_check: true ist im Test-Config-Block bereits gesetzt; bei Aenderung beibehalten |
configuration environment variable not expected: AUTHELIA__SERVER__ADDRESS |
Doppel-Underscore ENV im Compose | seit 2026-06-03 entfernt; server.address kommt aus configuration.yml |
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
Empfohlener Schedule nach erfolgreichem Erstlauf: 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.