meldestelle/docs/07_Infrastructure/Guides/Setup_Backup_Zora.md
Stefan Mogeritsch 9dd6a0faf7 docs: add backup setup guide and backup script for Zora
Introduced a detailed guide on configuring automated backups for the Zora server, covering scheduling, manual execution, and restoration processes. Added `backup.sh` script to streamline database and configuration backups with retention and rotation.
2026-03-05 13:11:44 +01:00

2.7 KiB

type status owner last_update tags
Guide ACTIVE DevOps Engineer 2026-03-05
backup
postgres
zora
cron

🛡️ Guide: Automatisierte Backups auf Zora

Dieser Guide beschreibt, wie du regelmäßige Backups der Meldestelle-Datenbank und Konfigurationen auf Zora einrichtest.

📋 Voraussetzungen

  • SSH-Zugriff auf Zora (ssh user@10.0.0.xx).
  • Docker-Container meldestelle-postgres läuft.
  • Das Skript config/scripts/backup.sh liegt im Repo.

🛠️ Schritt-für-Schritt Anleitung

1. Backup-Skript vorbereiten

Das Skript liegt bereits im Repo unter config/scripts/backup.sh. Du musst es auf Zora ausführbar machen und ggf. anpassen.

  1. Verbinde dich mit Zora:

    ssh user@zora-ip
    cd ~/meldestelle
    
  2. Mache das Skript ausführbar:

    chmod +x config/scripts/backup.sh
    
  3. WICHTIG: Prüfe die Variablen im Skript (nano config/scripts/backup.sh):

    • BACKUP_DIR: Wohin sollen die Backups? (Standard: /home/grandmo/backups/meldestelle)
    • DB_CONTAINER: Name des Postgres-Containers (Standard: meldestelle-postgres).
    • DB_USER: Datenbank-User (Standard: meldestelle).

2. Cronjob einrichten (Automatische Ausführung)

Wir wollen das Backup jede Nacht um 03:00 Uhr laufen lassen.

  1. Öffne die Crontab des Users:

    crontab -e
    
  2. Füge folgende Zeile am Ende hinzu:

    # Meldestelle Backup: Täglich um 03:00 Uhr
    0 3 * * * /home/grandmo/meldestelle/config/scripts/backup.sh >> /home/grandmo/meldestelle/logs/backup.log 2>&1
    
  3. Speichern und schließen (Ctrl+O, Enter, Ctrl+X).

3. Testen

Führe das Skript einmal manuell aus, um sicherzustellen, dass alles klappt:

./config/scripts/backup.sh
  • Prüfe den Output: " Backup abgeschlossen".
  • Prüfe das Backup-Verzeichnis: ls -lh /home/grandmo/backups/meldestelle.

🔄 Wiederherstellung (Restore)

Falls der Ernstfall eintritt (Datenbank korrupt oder gelöscht):

  1. Stoppe die App-Container (aber lasse die DB laufen):

    docker compose stop api-gateway ping-service keycloak
    
  2. Entpacke das Backup:

    gunzip /home/grandmo/backups/meldestelle/db_dump_YYYY-MM-DD.sql.gz
    
  3. Spiele den Dump ein:

    cat db_dump_YYYY-MM-DD.sql | docker exec -i meldestelle-postgres psql -U meldestelle
    
  4. Starte die App wieder:

    docker compose up -d
    

💡 Tipps

  • Offsite-Backup: Kopiere die Backups regelmäßig auf einen externen Speicher (z.B. NAS oder Cloud), falls die Festplatte von Zora ausfällt. rsync ist dein Freund!
  • Monitoring: Prüfe regelmäßig die Log-Datei logs/backup.log, ob Fehler auftreten.