Files
ProxLedger/docs/issues/045-wiederherstellung-geprobt.md
florian.wildeandClaude Opus 5 409a02561d feat(deploy): Wiederherstellung proben und Skript dafuer (#045)
Einer der vier Punkte bis 1.0.0: eine Sicherung einmal wirklich
zurueckspielen. Mit einem eigenen Stapel durchgespielt - Datenstand
festgehalten, Marke gesetzt, PDF abgelegt, gesichert, alle Volumes
zerstoert, zurueckgespielt. Datenbank, PDF und Anmeldung waren zurueck.

Zwei Luecken kamen erst dabei heraus:

1. Ohne --clean liess sich die Sicherung nur in eine LEERE Datenbank
   zurueckspielen - im Ernstfall also gerade nicht. Jetzt
   pg_dump --clean --if-exists, gegen eine Datenbank mit Daten geprueft.
2. Fuer die hochgeladenen PDFs gab es keinen beschriebenen Weg zurueck.

deploy/restore.sh haelt die Dienste an, spielt Datenbank und PDFs zurueck,
startet wieder und prueft die Erreichbarkeit. Die .env bleibt unangetastet:
Sie traegt APP_SECRET, und ein falscher Wert dort macht gespeicherte
Zugangsdaten unlesbar.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-10-10 19:31:35 +02:00

2.1 KiB
Raw Permalink Blame History

#045 Wiederherstellung proben und Skript dafür

Status: erledigt Meilenstein: v0.27.0 Labels: deployment, doku Geschätzt: 2 h Tatsächlich: 0 h 50 min

Ziel

Einer der vier Punkte bis 1.0.0: eine Sicherung einmal wirklich zurückspielen. Bis dahin war nur geprüft, dass deploy/backup.sh Dateien schreibt.

Ablauf der Probe

Mit einem eigenen Docker-Stapel, getrennt von allen anderen Daten:

  1. Datenstand festgehalten (9 Hosts, 4 Kunden, 10 Laufzeiten), einen Kunden zur Wiedererkennung in Marke-192641 umbenannt, eine PDF-Datei in den Upload-Ordner gelegt
  2. Sicherung angelegt
  3. Alle Daten zerstört – docker compose down -v, also Datenbank- und Upload-Volume weg
  4. Zurückgespielt und geprüft

Ergebnis: Datenbank vollständig zurück (die Marke war wieder da), die PDF-Datei lag mit den richtigen Rechten im Upload-Ordner, Anmeldung mit dem alten Passwort funktionierte.

Zwei Lücken, die erst die Probe gezeigt hat

  1. Die Sicherung ließ sich nur in eine leere Datenbank zurückspielen. pg_dump ohne --clean scheitert an bestehenden Tabellen – genau im Ernstfall, wenn man in eine laufende Installation zurückspielen will. Jetzt --clean --if-exists; gegengeprüft gegen eine Datenbank mit Daten: null Fehlerzeilen, der zwischenzeitlich geänderte Wert war wieder auf dem Stand der Sicherung.
  2. Für die hochgeladenen PDFs gab es keinen beschriebenen Weg. Gesichert wurden sie, zurückspielen musste man selbst herausfinden.

Ergebnis

  • deploy/restore.sh: hält die Dienste an, spielt Datenbank und PDFs zurück, startet wieder und prüft die Erreichbarkeit. Fragt vorher nach, --ja überspringt das.
  • Die .env wird bewusst nicht überschrieben: Sie trägt APP_SECRET, und ein falscher Wert dort macht die gespeicherten Zugangsdaten unlesbar. Die passende Fassung liegt als env-<Stand>.txt daneben.
  • docs/betrieb/sicherung.md beschreibt den geprobten Ablauf samt Handarbeit als Rückfallebene.

Offen

Geprobt wurde der Docker-Weg. Für die Installation als Dienst ist derselbe Ablauf im Skript vorgesehen, aber noch nicht unter echten Bedingungen gelaufen.