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.

  1. SSH-Shell als root öffnen.

  2. Aus der letzten Sicherung wiederherstellen:

    ferrosoft-restore
    

Anderen Snapshot verwenden

  1. SSH-Shell als root öffnen.

  2. Restic-Zugangsdaten laden:

    source /etc/restic/env
    
  3. Verfügbare Snapshots auflisten:

    restic snapshots
    
  4. Gewünschten Snapshot wiederherstellen (xxx durch Snapshot-ID ersetzen):

    ferrosoft-restore xxx
    

Ablauf der Wiederherstellung

  1. Alle Dienste werden gestoppt.
  2. Dateien werden aus dem Restic-Snapshot in einen temporären Ordner extrahiert.
  3. Docker Volumes werden wiederhergestellt:
    • Nicht vorhandene Volumes werden angelegt.
    • Vorhandene Dateien im Volume werden gelöscht.
    • Das komprimierte Volume-Archiv wird ins Volume ausgepackt.
  4. Postgres wird gestartet und der Datenbank-Dump eingespielt.
  5. Alle übrigen Dienste werden gestartet.
  6. Der temporäre Ordner wird gelöscht.

Troubleshooting

  • ferrosoft-restore bricht mit Fehler ab — Vollständige Ausgabe des Skripts analysieren. Fehler beheben, Skript erneut ausführen. Für detaillierte Befehlsausgabe set -x in /usr/local/bin/ferrosoft-restore einfügen und Skript neu starten.

  • Wiederherstellung läuft durch, Website antwortet nicht — Dienststatus prüfen:

    docker compose -f /etc/ferrosoft/compose.yml ps
    

    Logs einzelner Dienste prüfen, z.B. für platform:

    docker compose -f /etc/ferrosoft/compose.yml logs platform
    

    Fehlerquelle identifizieren und neutralisieren.