Sicherung und Wiederherstellung
Sicherungen werden mit Restic erstellt. Ein Snapshot enthält:
- Docker-Compose-Dateien und zugehörige Konfigurationsdateien
- Alle Docker Volumes der Compose Services
- Einen logischen Datenbank-Dump (
pg_dumpall)
Das Playbook platform.yml richtet automatische Sicherungen ein.
Sicherungsdateien werden verschlüsselt in einem S3-kompatiblen
Objektspeicher in Hetzner Cloud abgelegt. Die Konfiguration erfolgt über das
Konfigurationsmanagement.
Voraussetzungen für die Wiederherstellung
- Der Objektspeicher enthält verwertbare Snapshots. Bei einem reinen Serverausfall ist das in der Regel der Fall. Bei einem Ransomware-Angriff muss damit gerechnet werden, dass der Objektspeicher gelöscht wurde — Hetzner Cloud bietet gegenwärtig keinen Schutz dagegen. In diesem Fall gibt es keine Verstärkung. Keine Evakuierung. Kein Zurück.
- Der Bootstrap-Vorgang wurde abgeschlossen.
- Der Deployment-Vorgang wurde abgeschlossen — Anlage des Adminzugangs ausgenommen. Die Service-Domain muss die Anmelden/Registrieren-Seite anzeigen.
Schritte zur Wiederherstellung
Das Playbook platform.yml legt das Skript ferrosoft-restore auf dem
Server ab. Es stellt alle Dienste vollständig wieder her. Eine
Teilwiederherstellung wird nicht unterstützt — falls erforderlich, muss die
Sicherung auf einem neuen Server wiederhergestellt und manuell übertragen
werden.
-
SSH-Shell als
rootöffnen. -
Aus der letzten Sicherung wiederherstellen:
ferrosoft-restore
Anderen Snapshot verwenden
-
SSH-Shell als
rootöffnen. -
Restic-Zugangsdaten laden:
source /etc/restic/env -
Verfügbare Snapshots auflisten:
restic snapshots -
Gewünschten Snapshot wiederherstellen (
xxxdurch Snapshot-ID ersetzen):ferrosoft-restore xxx
Ablauf der Wiederherstellung
- Alle Dienste werden gestoppt.
- Dateien werden aus dem Restic-Snapshot in einen temporären Ordner extrahiert.
- Docker Volumes werden wiederhergestellt:
- Nicht vorhandene Volumes werden angelegt.
- Vorhandene Dateien im Volume werden gelöscht.
- Das komprimierte Volume-Archiv wird ins Volume ausgepackt.
- Postgres wird gestartet und der Datenbank-Dump eingespielt.
- Alle übrigen Dienste werden gestartet.
- Der temporäre Ordner wird gelöscht.
Troubleshooting
-
ferrosoft-restorebricht mit Fehler ab — Vollständige Ausgabe des Skripts analysieren. Fehler beheben, Skript erneut ausführen. Für detaillierte Befehlsausgabeset -xin/usr/local/bin/ferrosoft-restoreeinfügen und Skript neu starten. -
Wiederherstellung läuft durch, Website antwortet nicht — Dienststatus prüfen:
docker compose -f /etc/ferrosoft/compose.yml psLogs einzelner Dienste prüfen, z.B. für
platform:docker compose -f /etc/ferrosoft/compose.yml logs platformFehlerquelle identifizieren und neutralisieren.