📦 Hetzner Storage Box als Offsite-Backup für Proxmox verwenden

🧠 Überblick
Dieses Setup speichert automatisch tägliche Backups deiner Proxmox-VMs und LXC-Container auf deiner Hetzner Storage Box (BX11). Die Backups werden auf dem jeweiligen Server via Proxmox-Plan erstellt und per SSH (Port 23) auf die Storage Box übertragen.
🔐 Voraussetzungen
- Hetzner Storage Box mit SSH aktiviert (Port 23)
- SSH-Key auf der Box eingerichtet
- Proxmox-Host (lokal oder VPS)
/var/lib/vz
als aktives Backup-Storage
🔧 Schritt 1: SSH-Key auf die Storage Box laden
ssh-keygen -t ed25519 -C "proxmox-storagebox"
cat ~/.ssh/id_ed25519.pub | ssh -p 23 <STORAGEBOX_USER>@<STORAGEBOX_HOST> install-ssh-key
ssh -p 23 <STORAGEBOX_USER>@<STORAGEBOX_HOST>
📅 Schritt 2: Proxmox GUI – Backup-Job erstellen
- In der Proxmox Web-GUI:
Datacenter → Backup → Add
- Einstellungen:
- Storage:
local
(→/var/lib/vz
) - Selection Mode:
All
oder spezifische VMs/LXCs - Schedule: täglich um
00:00
- Mode:
Snapshot
- Compression:
zstd
- Max backups: z. B.
3
- Storage:
🤖 Schritt 3: Backup-Skript zur Storage Box
nano /root/backup_to_storagebox.sh
#!/bin/bash
BACKUP_DIR="/var/lib/vz/dump"
REMOTE_USER="<STORAGEBOX_USER>"
REMOTE_HOST="<STORAGEBOX_HOST>"
REMOTE_PORT=23
REMOTE_BASE_PATH="/home/<STORAGEBOX_USER>/<BACKUP_FOLDER>"
DATE=$(date +%F)
echo "[INFO] Übertrage Backups nach $REMOTE_HOST..."
ssh -p $REMOTE_PORT ${REMOTE_USER}@${REMOTE_HOST} "mkdir -p ${REMOTE_BASE_PATH}/${DATE}"
rsync -avz -e "ssh -p $REMOTE_PORT" ${BACKUP_DIR}/ ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_BASE_PATH}/${DATE}/
echo "[INFO] Bereinige lokale Backups älter als 7 Tage..."
find $BACKUP_DIR -type f -mtime +7 -name "*.zst" -delete
echo "[INFO] Backup abgeschlossen: $(date)"
Ausführbar machen:
chmod +x /root/backup_to_storagebox.sh
⏰ Schritt 4: Cronjob einrichten
crontab -e
0 1 * * * /root/backup_to_storagebox.sh >> /var/log/proxmox_storagebox_backup.log 2>&1
🧪 Testlauf & Kontrolle
/root/backup_to_storagebox.sh
ssh -p 23 <STORAGEBOX_USER>@<STORAGEBOX_HOST>
ls /home/<STORAGEBOX_USER>/<BACKUP_FOLDER>/$(date +%F)
🧼 Alte Remote-Backups aufräumen (optional)
ssh -p 23 <STORAGEBOX_USER>@<STORAGEBOX_HOST> "find /home/<STORAGEBOX_USER>/<BACKUP_FOLDER>/* -maxdepth 0 -type d -mtime +10 -exec rm -rf {} \;"
🛠️ Was tun bei Backup-Fehlern?
Falls ein Backup fehlschlägt (z. B. command failed: interrupted by signal
), kann das mehrere Ursachen haben:
💡 Mögliche Gründe:
- Der Container verwendet Bind-Mounts, die beim Snapshot Probleme machen
- Ressourcenprobleme: zu wenig RAM, langsames I/O
- Der Container war zum Zeitpunkt des Snapshots stark ausgelastet
- Fehlerhafte Konfiguration innerhalb des Containers
✅ Lösungsansätze:
- Log prüfen
Die Log-Datei unter/var/log/vzdump/
gibt Aufschluss über den genauen Fehler.
Container löschen, falls er nicht mehr benötigt wird:
pct stop <VMID>
pct destroy <VMID>
Backup-Modus ändern (z. B. 'stop')
vzdump <VMID> --mode stop --dumpdir /var/lib/vz/dump --compress zstd
Backup manuell testen
vzdump <VMID> --dumpdir /var/lib/vz/dump --mode snapshot --compress zstd --verbose
✅ Fazit
Mit dieser Methode hast du ein vollautomatisiertes, sicheres Offsite-Backup deiner Proxmox-Umgebung – ganz ohne Zusatztools, Agenten oder Cloud-Abhängigkeiten.