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

📦 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

  1. In der Proxmox Web-GUI: Datacenter → Backup → Add
  2. 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

🤖 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:

  1. 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.