Jeder, der Dienste im Homelab betreibt, kennt das ungute Gefühl: Ein falscher Docker-Befehl, eine korrupte Datenbank oder eine fehlgeschlagene Nextcloud-Updates – und wertvolle Daten sind weg. Dabei sind gute Backups kein Hexenwerk, sondern nur eine Frage der richtigen Strategie.
In diesem Beitrag zeige ich dir, wie du dein Homelab mit Docker, Datenbanken und Konfigurationsdateien systematisch absicherst – von der einfachen 3-2-1-Regel bis zur automatisierten Backup-Pipeline mit Cron und TrueNAS Snapshots.
Die 3-2-1-Regel – auch im Homelab
Die goldene Regel der Datensicherung gilt für jedes Homelab:
- 3 Kopien deiner Daten
- auf 2 verschiedenen Medien
- davon 1 Kopie offsite (extern)
Im Homelab-Bereich heißt das konkret: Ein Backup auf dem Server selbst (z. B. als ZFS-Snapshot), ein Backup auf einer externen Festplatte oder NAS, und ein verschlüsseltes Cloud-Backup (z. B. über Restic mit Backblaze B2 oder Hetzner Storage Box). Diese Regel schützt vor Hardware-Defekten, versehentlichem Löschen und sogar Einbrüchen oder Bränden.
Docker Volumes sichern
Docker-Container speichern ihre Daten meist in Volumes oder Bind Mounts. Das sind die kritischsten Komponenten – sie enthalten Datenbanken, Uploads und Konfigurationen.
Methode 1: Rsync (einfach, schnell)
Für Bind Mounts unter /opt/data oder /srv/data ist rsync die einfachste Lösung:
rsync -av --delete /opt/data/docker/ /backup/docker/
rsync -av --delete /opt/data/nextcloud-data/ /backup/nextcloud/
Der Vorteil: rsync überträgt nur geänderte Dateien und ist ideal für regelmäßige inkrementelle Backups. Nachteil: Bei geöffneten Datenbankdateien kann es zu inkonsistenten Kopien kommen – daher Container vorher stoppen oder Datenbank-externe Dumps verwenden.
Methode 2: Restic (verschlüsselt, dedupliziert)
Restic ist mein Favorit für Offsite-Backups. Es erstellt verschlüsselte, deduplizierte Snapshots und unterstützt Amazon S3, Backblaze B2, SFTP und lokale Pfade:
restic init --repo /backup/restic-repo
restic backup /opt/data/docker/volumes/ --tag docker-volumes
restic forget --keep-daily 7 --keep-weekly 4 --prune
Die Deduplizierung spart enorm Speicherplatz – perfekt wenn mehrere Container ähnliche Daten (z. B. Node-Modules) enthalten.
Datenbanken konsistent sichern
Datenbank-Backups sind der kritischste Teil. Ein einfaches Kopieren der Datenbankdateien im laufenden Betrieb führt zu korrupten Dumps. Daher immer die datenbankeigenen Export-Tools verwenden:
MySQL / MariaDB
docker exec mysql-container mysqldump --single-transaction --all-databases | gzip > /backup/mysql/dump-$(date +%F).sql.gz
--single-transaction sorgt für einen konsistenten Snapshot ohne Blocking – das Backup läuft, während die Datenbank weiter Anfragen bearbeitet.
PostgreSQL
docker exec pg-container pg_dumpall -U postgres | gzip > /backup/postgres/dump-$(date +%F).sql.gz
Tipp: Lege vor jedem Datenbank-Backup kurz (< 1 Sekunde) die Schreibrechte des Containers still, wenn du wirklich konsistente Snapshots brauchst. Für die meisten Homelab-Anwendungen reicht --single-transaction völlig aus.
Konfigurationen mit Git sichern
Docker Compose-Dateien, Nginx/Caddy-Konfigurationen und Umgebungsvariablen sind das Gedächtnis deines Homelabs. Sie gehören in ein Git-Repository:
cd /opt/git/homelab-config
git add docker-compose/ caddy/ scripts/
git commit -m "Backup $(date +%F): aktueller Stand"
git push origin main
Ein privates GitHub-Repository oder eine selbst-gehostete Gitea-Instanz eignet sich perfekt. Du hast nicht nur ein Backup, sondern auch die vollständige Versionshistorie – und kannst fehlerhafte Änderungen einfach rückgängig machen.
Wichtig: Niemals Secrets (.env-Dateien mit Passwörtern) ins öffentliche Repository pushen. Nutze .gitignore oder ein Tool wie sops/sgit für verschlüsselte Secrets.
Automatisierung mit Cron
Einmal eingerichtet, sollten Backups automatisch laufen. Ein Beispiel-Script für tägliche Docker-Volume-Backups mit rsync und Restic:
#!/bin/bash
set -euo pipefail
BACKUP_DIR="/backup/$(date +%F)"
mkdir -p "$BACKUP_DIR"
# Docker Volumes sichern
for vol in nextcloud_data mysql_data wordpress_uploads; do
rsync -av --delete "/opt/data/docker/volumes/$vol/" "$BACKUP_DIR/$vol/"
done
# Datenbank dumps
docker exec mysql mysqldump --single-transaction wordpress | gzip > "$BACKUP_DIR/wordpress.sql.gz"
# Konfigurationen
rsync -av /opt/docker-compose/ "$BACKUP_DIR/compose/"
# Retention: älter als 30 Tage löschen
find /backup/ -mindepth 1 -maxdepth 1 -type d -mtime +30 -exec rm -rf {} +
Der Cron-Eintrag für tägliche Ausführung um 3 Uhr nachts:
0 3 * * * /usr/local/bin/backup-homelab.sh >> /var/log/backup.log 2>&1
TrueNAS Snapshots als Basisschutz
Wenn dein Homelab auf TrueNAS Scale läuft, hast du einen entscheidenden Vorteil: ZFS-Snapshots. TrueNAS kann automatische Snapshots aller Datasets erstellen – sekundenschnell, ohne Performance-Verlust:
- Automatische Snapshots alle 15 Minuten (für Ransomware-Schutz)
- Tägliche Snapshots mit 7-Tage-Retention
- Wöchentliche Snapshots mit 4-Wochen-Retention
TrueNAS Snapshots sind kein Ersatz für ein Offsite-Backup – aber sie sind die erste Verteidigungslinie gegen versehentliches Löschen oder Konfigurationsfehler. Kombiniert mit Restic für die Offsite-Sicherung hast du einen soliden Schutz.
Mein Backup-Setup im Überblick
| Komponente | Methode | Frequenz | Ziel |
|---|---|---|---|
| Docker Volumes | Restic + rsync | Täglich | Lokal + Offsite |
| MySQL/PostgreSQL | mysqldump + pg_dumpall | Täglich | Lokal |
| Konfigurationen | Git | Nach Änderung | GitHub / Gitea |
| WordPress Uploads | rsync | Wöchentlich | Lokal + Offsite |
| System (TrueNAS) | ZFS Snapshots | 15 Min / Tägl. | TrueNAS Dataset |
Fazit
Ein gutes Backup-System muss drei Eigenschaften haben: automatisch, getestet und mehrschichtig. Automatisch, weil kein Mensch jeden Tag manuell sichern wird. Getestet, weil ein Backup, das du nie wiederhergestellt hast, kein Backup ist. Mehrschichtig, weil ein einzelner Fehler nicht alle Kopien vernichten darf.
Starte noch heute mit der 3-2-1-Regel, richte rsync oder Restic ein und leg einen Cron-Job an. Dein zukünftiges Ich wird dir danken – spätestens wenn der nächste Docker-Befehl danebengeht.
Welche Backup-Strategie nutzt du in deinem Homelab? Schreib’s in die Kommentare! 🚀