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.
2.7 KiB
| type | status | owner | last_update | tags | ||||
|---|---|---|---|---|---|---|---|---|
| Guide | ACTIVE | DevOps Engineer | 2026-03-05 |
|
🛡️ 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-postgresläuft. - Das Skript
config/scripts/backup.shliegt 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.
-
Verbinde dich mit Zora:
ssh user@zora-ip cd ~/meldestelle -
Mache das Skript ausführbar:
chmod +x config/scripts/backup.sh -
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.
-
Öffne die Crontab des Users:
crontab -e -
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 -
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):
-
Stoppe die App-Container (aber lasse die DB laufen):
docker compose stop api-gateway ping-service keycloak -
Entpacke das Backup:
gunzip /home/grandmo/backups/meldestelle/db_dump_YYYY-MM-DD.sql.gz -
Spiele den Dump ein:
cat db_dump_YYYY-MM-DD.sql | docker exec -i meldestelle-postgres psql -U meldestelle -
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.
rsyncist dein Freund! - Monitoring: Prüfe regelmäßig die Log-Datei
logs/backup.log, ob Fehler auftreten.