
Docker Compose vs. Kubernetes 2026 – Wann sich was lohnt
Docker Compose vs. Kubernetes 2026: Kosten, Komplexität und Skalierung im direkten Vergleich – mit Entscheidungsmatrix, Preisen und Praxisbeispielen.
Die Zahl der VPS-Instanzen ist in den letzten Jahren explodiert – parallel dazu ist die Angriffsfläche gewachsen. Ransomware-Gruppen haben 2025 erstmals massenhaft virtuelle Maschinen bei kleineren Hostern verschlüsselt, weil dort Snapshots und Backups oft im selben Rechenzentrum wie die Produktionsdaten lagen. Wer nur auf den Hoster-Snapshot vertraut, hat im Ernstfall kein Backup, sondern eine Kopie – und die verschwindet mit dem Account.
Gleichzeitig sind die Preise für Object Storage gefallen. Backblaze B2 liegt 2026 bei rund 6 US-Dollar pro TB und Monat, Wasabi bei etwa 6,99 US-Dollar, Hetzner Object Storage startet bei 4,99 € für 1 TB. Eine saubere 3-2-1-Strategie kostet damit für einen typischen 80-GB-VPS weniger als 5 € im Monat – ein Bruchteil dessen, was ein Datenverlust kostet.
Dieser Guide zeigt dir, wie du die 3-2-1-Regel auf einem VPS konkret umsetzt: mit restic oder borg, systemd-Timern, Verschlüsselung, Restore-Tests und einem belastbaren Disaster-Recovery-Playbook. Alle Befehle sind kopierfertig und für Debian 13 / Ubuntu 24.04 LTS getestet.
Die klassische 3-2-1-Regel besagt: 3 Kopien der Daten, auf 2 verschiedenen Medientypen, davon 1 Kopie offsite. Für einen VPS heißt das konkret: die Produktionsdaten auf dem Server, ein lokaler Snapshot oder Backup-Dump auf einem zweiten Volume, und ein verschlüsseltes Repository in einem Object Storage eines anderen Anbieters.
2026 reicht das vielen Compliance-Anforderungen nicht mehr. Die erweiterte 3-2-1-1-0-Regel ergänzt zwei Punkte: eine zusätzliche Kopie offline oder immutable (Air Gap, WORM-Storage, Band) und 0 Fehler bei der Verifikation – also regelmäßig getestete Restores.
| Regel | Bedeutung | Umsetzung auf dem VPS |
|---|---|---|
| 3 Kopien | Produktiv + 2 Backups | Live-Daten, lokales Repo, Offsite-Repo |
| 2 Medien | Kein Single Point of Failure | NVMe-Volume + Object Storage (S3) |
| 1 Offsite | Geografisch getrennt | Anderer Provider, andere Region |
| 1 Immutable | Nicht löschbar/änderbar | S3 Object Lock, Hetzner Immutability |
| 0 Fehler | Restore verifiziert | Monatlicher Restore-Test, restic check |
Wichtig: Ein Snapshot beim Hoster zählt nicht als eigenständige Kopie, wenn er im selben Storage-Cluster liegt. Er schützt gegen Fehlkonfiguration, nicht gegen Account-Sperrung, Ransomware oder einen RZ-Ausfall.
Bevor du irgendein Backup-Tool installierst, definiere zwei Zahlen: RPO (Recovery Point Objective – wie viel Datenverlust ist akzeptabel?) und RTO (Recovery Time Objective – wie lange darf die Wiederherstellung dauern?). Ohne diese Werte ist jede Backup-Strategie geraten.
| Workload | Typisches RPO | Typisches RTO | Backup-Intervall |
|---|---|---|---|
| Statische Website | 24 h | 4 h | täglich |
| WordPress / Shop | 1 h | 1 h | stündlich DB, täglich Files |
| Gameserver (Minecraft) | 15 min | 30 min | alle 15 min Welt-Save |
| PostgreSQL-Produktion | 5 min | 30 min | WAL-Archiv + tägl. Basebackup |
| CI/CD-Runner | 24 h | 8 h | wöchentlich (Config only) |
Ein RPO von 5 Minuten bedeutet zwingend kontinuierliche Archivierung (WAL-Shipping, Binlogs) – kein nächtliches Vollbackup kann das leisten. Umgekehrt ist für einen statischen Webserver ein tägliches restic-Backup völlig ausreichend und spart Storage-Kosten.
Schreibe RPO/RTO in dein Runbook und überprüfe sie nach jedem Restore-Test. Wenn der gemessene Restore 4 Stunden dauert, dein RTO aber 1 Stunde beträgt, hast du ein Problem – kein Backup-Problem, sondern ein Prozessproblem.
Full Backups kopieren alles, sind einfach zu restoren, brauchen aber viel Platz und Bandbreite. Incrementals sichern nur Änderungen seit dem letzten Backup – klein und schnell, aber die Restore-Kette ist lang. Differentielle Backups sichern alles seit dem letzten Full – Kompromiss aus Größe und Restore-Aufwand.
Moderne Tools wie restic und borg arbeiten deduplizierend und content-addressed: Jeder Chunk wird per Hash identifiziert, identische Blöcke nur einmal gespeichert. Ein 80-GB-VPS mit 60 GB unveränderlichen Mediendateien erzeugt dadurch tägliche Increments von oft nur 200–800 MB statt 80 GB.
Snapshots (LVM, ZFS, Btrfs, Proxmox) sind kein Backup, aber ein hervorragendes Werkzeug für konsistente Backups: Du erzeugst einen Snapshot, sicherst daraus, löschst ihn wieder. So bekommst du ein konsistentes Filesystem-Abbild, ohne den Dienst zu stoppen.
# LVM-Snapshot für konsistentes Backup (5 GB Puffer)
lvcreate --size 5G --snapshot --name snap_root /dev/vg0/root
mount /dev/vg0/snap_root /mnt/snapshot -o ro
restic backup /mnt/snapshot --tag lvm-snapshot
umount /mnt/snapshot && lvremove -f /dev/vg0/snap_root
Achtung bei Datenbanken: Ein reiner Filesystem-Snapshot einer laufenden MySQL-Instanz ist nur konsistent, wenn du vorher FLUSH TABLES WITH READ LOCK ausführst oder das InnoDB-Redo-Log mitsicherst. Sauberer ist immer ein logischer Dump.
Die Tool-Wahl entscheidet über Restore-Geschwindigkeit, Speicherbedarf und Betriebsaufwand. Hier ein praxisnaher Vergleich für VPS-Setups:
| Tool | Deduplizierung | Verschlüsselung | Backends | Stärke |
|---|---|---|---|---|
| restic | Ja (Content-defined) | AES-256, repokey | S3, B2, SFTP, REST, rclone | Einfach, viele Backends |
| borgbackup | Ja (sehr effizient) | AES-256, repokey-blake2 | SSH, lokale Pfade | Beste Dedup-Rate |
| Kopia | Ja | AES-256-GCM | S3, B2, SFTP, WebDAV | GUI, Policies, schnelle Restores |
| rsync + tar | Nein | Nur via GPG | Alles | Universell, keine Abhängigkeiten |
| Proxmox Backup Server | Ja (Chunk-basiert) | AES-256 | Eigenes Repo | VM/Container-Backups, Verify |
Für einen einzelnen VPS mit Offsite-S3 ist restic 2026 die pragmatischste Wahl: statisches Binary, keine Abhängigkeiten, exzellente S3-Unterstützung. Läuft dein Backup-Ziel per SSH (z. B. eine Hetzner Storage Box), ist borg wegen der besseren Dedup-Rate oft sparsamer.
Bei mehreren VMs auf einem Proxmox-Host ist PBS klar überlegen: inkrementelle VM-Backups, integrierte Verifikation und ein Restore-UI. Für Container-Workloads auf Kubernetes nutzt du besser Velero mit einem S3-Backend.
Installation und Initialisierung dauern unter fünf Minuten. Wir nutzen Backblaze B2 als Offsite-Ziel, weil es S3-kompatibel und günstig ist.
apt install -y restic
# Passwort sicher ablegen, NICHT im Repo
openssl rand -base64 32 > /root/.restic-password
chmod 600 /root/.restic-password
export RESTIC_REPOSITORY="s3:https://s3.eu-central-003.backblazeb2.com/vps01-backup"
export RESTIC_PASSWORD_FILE=/root/.restic-password
export AWS_ACCESS_KEY_ID="..."
export AWS_SECRET_ACCESS_KEY="..."
restic init
Danach das erste Backup. Wichtig sind sinnvolle Excludes: Caches, Socket-Dateien, /proc, /sys und Datenbank-Verzeichnisse, die du separat dumpst.
restic backup /etc /root /home /var/www /opt /srv \
--exclude-caches \
--exclude '/var/lib/mysql' \
--exclude '/var/cache' \
--exclude '/tmp' \
--exclude '*.sock' \
--tag daily
Für Datenbanken erzeugst du vorher einen logischen Dump und sicherst diesen mit:
# PostgreSQL
pg_dumpall -U postgres | zstd -19 > /var/backups/pg-$(date +%F).sql.zst
# MySQL/MariaDB
mysqldump --single-transaction --quick --routines --all-databases \
| zstd -19 > /var/backups/mysql-$(date +%F).sql.zst
# Minecraft
screen -S mc -X save-off && screen -S mc -X save-all
tar -czf /var/backups/mc-$(date +%F).tar.gz /srv/minecraft/world
screen -S mc -X save-on
Ohne Retention-Policy wächst dein Repository unbegrenzt. Eine bewährte Staffelung für VPS-Backups ist 7 tägliche, 4 wöchentliche, 12 monatliche Snapshots – das deckt die meisten Ransomware-Fälle ab, bei denen die Verschlüsselung erst nach Wochen auffällt.
restic forget \
--keep-daily 7 --keep-weekly 4 --keep-monthly 12 --keep-yearly 2 \
--prune
--prune entfernt nicht mehr referenzierte Datenblöcke. Bei großen Repos dauert das mehrere Minuten und kostet API-Requests – plane es maximal wöchentlich ein, nicht bei jedem Lauf.
Für die Immutability-Komponente der 3-2-1-1-0-Regel aktivierst du S3 Object Lock im Compliance-Modus mit z. B. 30 Tagen. Damit kann selbst ein Angreifer mit gültigen API-Keys die Backups der letzten 30 Tage nicht löschen. Backblaze B2 unterstützt Object Lock ebenfalls; Hetzner Object Storage bietet seit 2025 eine Immutability-Option.
Kalkuliere die Kosten: 80 GB VPS, 60 % Änderungsrate, 12 Monate Retention ergeben bei restic-Dedup typischerweise 150–250 GB im Repository – bei B2 also rund 1,50 US-Dollar pro Monat. Selbst mit Object Lock und Versionierung bleibst du unter 3 Euro.
Cron funktioniert, aber systemd-Timer bieten Logging, Abhängigkeiten und RandomizedDelaySec – wichtig, damit nicht alle VPS gleichzeitig um 03:00 Uhr den Storage fluten.
# /etc/systemd/system/vps-backup.service
[Unit]
Description=restic backup to B2
After=network-online.target
[Service]
Type=oneshot
EnvironmentFile=/etc/restic/env
ExecStartPre=/usr/local/bin/db-dump.sh
ExecStart=/usr/local/bin/restic-backup.sh
ExecStartPost=/usr/local/bin/restic-forget.sh
Nice=10
IOSchedulingClass=idle
# /etc/systemd/system/vps-backup.timer
[Unit]
Description=Run VPS backup daily
[Timer]
OnCalendar=*-*-* 03:30:00
RandomizedDelaySec=45m
Persistent=true
[Install]
WantedBy=timers.target
Aktiviere den Timer mit systemctl enable --now vps-backup.timer und prüfe den nächsten Lauf per systemctl list-timers vps-backup. Logs landen automatisch im Journal: journalctl -u vps-backup.service -n 100.
Persistent=true sorgt dafür, dass ein verpasster Lauf (Server war aus) nachgeholt wird. IOSchedulingClass=idle verhindert, dass das Backup die Produktions-IO ausbremst – auf einem kleinen VPS mit Shared-NVMe ist das Gold wert.
restic und borg verschlüsseln clientseitig, bevor Daten den Server verlassen. Der Storage-Anbieter sieht nur Chiffrate. Das ist gut – macht aber das Passwort zur kritischsten Komponente deiner Strategie. Verlierst du das Passwort, sind alle Backups unwiederbringlich verloren.
openssl rand -base64 32 erzeugen (256 Bit Entropie).restic key add für einen zweiten Schlüssel, falls ein Admin ausscheidet.~/.bash_history.Für Teams bietet sich HashiCorp Vault oder SOPS mit Age-Keys an. Bei restic kannst du zusätzlich --repository-file und Umgebungsdateien mit chmod 600 nutzen, damit Secrets nicht in der Prozessliste auftauchen.
Ein häufiger Fehler: Das Backup-Passwort liegt auf demselben VPS wie die Backups. Bei einem vollständigen Server-Kompromiss hat der Angreifer beides – und kann das Offsite-Repository löschen. Deshalb ist Object Lock (Immutability) so wichtig.
Ein Backup, das nie getestet wurde, existiert nicht. Plane drei Ebenen der Verifikation ein: technische Integrität, Vollständigkeit und echter Restore.
# 1. Integrität: 5 % der Datenblöcke pro Lauf prüfen
restic check --read-data-subset=5%
# 2. Vollständigkeit: Snapshot-Alter prüfen
restic snapshots --latest 1 --json | jq '.[0].time'
# 3. Echter Restore in ein Testverzeichnis
restic restore latest --target /tmp/restore-test --include /etc/nginx
diff -r /etc/nginx /tmp/restore-test/etc/nginx
Für Monitoring eignet sich ein Healthchecks.io-Ping am Ende des Backup-Skripts (curl -fsS -m 10 https://hc-ping.com/<uuid>). Bleibt der Ping aus, alarmiert der Dienst nach 30 Minuten per E-Mail, Slack oder Telegram. Alternativ: Prometheus node_exporter mit Textfile-Collector und ein Alert auf backup_last_success_timestamp > 90000.
Der wichtigste Test ist der vollständige Restore auf einen frischen VPS. Miete einmal im Quartal einen kleinen Server für 4 €, spiele das Backup ein, starte die Dienste und dokumentiere die Dauer. Nur so kennst du dein echtes RTO. Bei einem 80-GB-VPS mit restic und B2 dauert ein Full-Restore realistisch 20–45 Minuten.
Im Notfall zählt jede Minute – und niemand liest dann Dokumentation. Halte das Playbook daher unter 10 Zeilen und drucke es aus.
shutdown), nicht löschen – Forensik.apt update && apt install restic, Repo-Zugang konfigurieren.restic restore latest --target / (bzw. in ein Staging-Verzeichnis und dann synchronisieren).psql -f bzw. mysql <.Ein oft vergessener Punkt: Der Restore muss auch die Systemkonfiguration abdecken – /etc mit SSH-Keys, Firewall-Regeln, Cronjobs, systemd-Units. Wer nur /var/www sichert, verbringt Stunden mit Rekonstruktion.
Setze DNS-TTLs mindestens 24 Stunden vor geplanten Migrationen auf 300 Sekunden. Das reduziert das Failover-Fenster von Stunden auf Minuten – ein kostenloser RTO-Gewinn.
Die teuersten Backup-Fehler sind selten technisch. Sie sind organisatorisch:
| Anbieter | Preis / TB / Monat | Egress | Object Lock |
|---|---|---|---|
| Backblaze B2 | ~6,00 $ | 3× Free, dann 0,01 $/GB | Ja |
| Wasabi | ~6,99 $ | Free (Fair Use) | Ja |
| Hetzner Object Storage | 4,99 € (1 TB) | 1 TB free | Ja (seit 2025) |
| AWS S3 Glacier IR | ~4,00 $ | 0,03 $/GB | Ja |
| Hetzner Storage Box BX11 | 3,81 € (1 TB) | unbegrenzt | Nein (SFTP) |
Für einen 80-GB-VPS mit 200 GB Repository landest du bei Hetzner Object Storage bei rund 1 € pro Monat, bei Backblaze B2 bei etwa 1,20 $. Rechne zusätzlich mit 0,50–2 € Egress-Kosten pro Restore – vernachlässigbar gegenüber einem Ausfall.
Der wichtigste Kostenfaktor ist ohnehin nicht Storage, sondern Zeit. Ein sauber automatisierter Backup-Stack kostet dich einmalig 3–4 Stunden Einrichtung und danach 15 Minuten pro Monat für Monitoring und Restore-Tests.
Nein. Snapshots liegen in der Regel im selben Storage-Cluster wie die Produktionsdaten und werden mit dem Account gelöscht. Sie schützen gegen Fehlkonfiguration und versehentliches Löschen, aber nicht gegen Ransomware, Account-Sperrung oder einen Rechenzentrumsausfall. Für die 3-2-1-Regel brauchst du mindestens eine Kopie bei einem anderen Anbieter oder in einer anderen Region.
Das ergibt sich aus deinem RPO. Für statische Websites reicht täglich, für Shops und Foren stündlich (Datenbank) plus täglich (Dateien), für Gameserver alle 15 Minuten für Welt-Saves. Wichtiger als die Frequenz ist die Konsistenz: Ein stündlicher inkonsistenter Dump hilft weniger als ein täglicher sauberer.
Für einen typischen 80-GB-VPS mit dedupliziertem Repository (150–250 GB) zahlst du bei Hetzner Object Storage rund 1 €, bei Backblaze B2 etwa 1,20 $ pro Monat. Hinzu kommen geringe Egress-Kosten beim Restore. Insgesamt bleibst du meist unter 3 € monatlich – inklusive Immutability/Object Lock.
restic ist einfacher zu betreiben, unterstützt S3, B2, SFTP und REST nativ und ist ein statisches Binary ohne Abhängigkeiten. borg hat die bessere Deduplizierungsrate und ist bei SSH-Zielen wie einer Hetzner Storage Box sparsamer. Für einzelne VPS mit Object Storage ist restic 2026 die pragmatischere Wahl, für große Repos über SSH lohnt borg.
Drei Ebenen: restic check --read-data-subset=5% für die Integrität, ein automatischer Snapshot-Alters-Check für die Vollständigkeit und mindestens quartalsweise ein vollständiger Restore auf einen frischen VPS inklusive Dienste-Start und Smoke-Tests. Dokumentiere die gemessene Dauer – nur so kennst du dein echtes RTO und merkst, ob deine Strategie im Ernstfall trägt.