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.
This commit is contained in:
@@ -0,0 +1,103 @@
|
||||
---
|
||||
type: Guide
|
||||
status: ACTIVE
|
||||
owner: DevOps Engineer
|
||||
last_update: 2026-03-05
|
||||
tags: [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:
|
||||
```bash
|
||||
ssh user@zora-ip
|
||||
cd ~/meldestelle
|
||||
```
|
||||
|
||||
2. Mache das Skript ausführbar:
|
||||
```bash
|
||||
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:
|
||||
```bash
|
||||
crontab -e
|
||||
```
|
||||
|
||||
2. Füge folgende Zeile am Ende hinzu:
|
||||
```cron
|
||||
# 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:
|
||||
|
||||
```bash
|
||||
./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):
|
||||
```bash
|
||||
docker compose stop api-gateway ping-service keycloak
|
||||
```
|
||||
|
||||
2. Entpacke das Backup:
|
||||
```bash
|
||||
gunzip /home/grandmo/backups/meldestelle/db_dump_YYYY-MM-DD.sql.gz
|
||||
```
|
||||
|
||||
3. Spiele den Dump ein:
|
||||
```bash
|
||||
cat db_dump_YYYY-MM-DD.sql | docker exec -i meldestelle-postgres psql -U meldestelle
|
||||
```
|
||||
|
||||
4. Starte die App wieder:
|
||||
```bash
|
||||
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.
|
||||
Reference in New Issue
Block a user