Backup-Strategien fürs Homelab: Docker Volumes, Datenbanken und Konfigurationen richtig sichern

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

KomponenteMethodeFrequenzZiel
Docker VolumesRestic + rsyncTäglichLokal + Offsite
MySQL/PostgreSQLmysqldump + pg_dumpallTäglichLokal
KonfigurationenGitNach ÄnderungGitHub / Gitea
WordPress UploadsrsyncWöchentlichLokal + Offsite
System (TrueNAS)ZFS Snapshots15 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! 🚀

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen