Erstellt: 2026-03-23 | Basis: Backup-Vergleich-Evaluation
Vor der Ausführung müssen folgende Punkte erledigt sein:
netbird up)ping 10.0.10.50 muss antwortenPBS nutzt bereits u372918-sub6. Für Restic einen separaten Subuser anlegen:
u372918-restic (oder nächste freie Sub-ID)/home/ (Standard)Ziel-Pfad im Runbook: sftp:u372918-RESTIC@u372918-RESTIC.your-storagebox.de:/restic-unraid
Ersetze
RESTICdurch den tatsächlichen Sub-Account-Namen nach dem Anlegen.
Auf unRAID Terminal (Extras → Terminal oder SSH wenn aktiviert):
# SSH-Key generieren (ohne Passphrase für automatische Backups)
ssh-keygen -t ed25519 -f /root/.ssh/storagebox_restic -N "" -C "unraid-restic"
# Public Key ausgeben
cat /root/.ssh/storagebox_restic.pub
Diesen Public Key im Hetzner Robot unter dem neuen Subuser hinterlegen.
Test:
ssh -i /root/.ssh/storagebox_restic -p 23 u372918-RESTIC@u372918-RESTIC.your-storagebox.de
# Erwartung: SFTP-Prompt oder "This service allows sftp connections only."
# Restic Binary herunterladen
wget https://github.com/restic/restic/releases/latest/download/restic_linux_amd64.bz2 -O /tmp/restic.bz2
bunzip2 /tmp/restic.bz2
mv /tmp/restic /usr/local/bin/restic
chmod +x /usr/local/bin/restic
# Persistenz: in /boot/config/plugins/user.scripts/ oder per Plugin
restic version
# Passwort für Repository-Verschlüsselung festlegen (MERKEN! Ohne dieses Passwort sind Daten verloren)
export RESTIC_PASSWORD="SICHERES_PASSWORT_HIER"
export RESTIC_REPOSITORY="sftp:u372918-RESTIC@u372918-RESTIC.your-storagebox.de:/restic-unraid"
# SSH-Key für SFTP konfigurieren
export RESTIC_SSH_COMMAND="ssh -i /root/.ssh/storagebox_restic -p 23"
# Repository anlegen
restic init
# Erwartete Ausgabe:
# created restic repository abc123 at sftp:...
# Please note that knowledge of your password is required to access the repository.
Kritisch: Das Repository-Passwort sicher speichern! Empfehlung: In Bitwarden unter "NanoClaw/unRAID Restic" hinterlegen.
# Variablen setzen (oder aus Datei laden, siehe Schritt 6)
export RESTIC_PASSWORD="..."
export RESTIC_REPOSITORY="sftp:..."
# Test: Nur isos-Share (klein)
time restic backup /mnt/user/isos \
--compression off \
--tag "test-run" \
--exclude "*.tmp" --exclude "*/.recycle/*"
# Ausgabe prüfen:
# Files: XXX new, 0 changed, 0 unmodified
# Dirs: XX new, ...
# Data Blobs: XXX new
# Tree Blobs: XX new
# Added to the repository: X.XX GiB (X.XX GiB stored)
# snapshot abc123 saved
# Repository-Statistiken prüfen
restic stats
Für persistente Konfiguration (überlebt unRAID-Neustart):
# Konfigurationsdatei anlegen
mkdir -p /boot/config/plugins/restic-backup
cat > /boot/config/plugins/restic-backup/restic.env << 'EOF'
RESTIC_REPOSITORY=sftp:u372918-RESTIC@u372918-RESTIC.your-storagebox.de:/restic-unraid
RESTIC_PASSWORD=SICHERES_PASSWORT_HIER
RESTIC_SSH_COMMAND=ssh -i /root/.ssh/storagebox_restic -p 23
EOF
chmod 600 /boot/config/plugins/restic-backup/restic.env
# Backup-Script
cat > /boot/config/plugins/restic-backup/backup.sh << 'SCRIPT'
#!/bin/bash
source /boot/config/plugins/restic-backup/restic.env
# Backup der wichtigsten Shares
restic backup \
/mnt/user/HP_Envy \
/mnt/user/Ingus \
/mnt/user/Klinta \
/mnt/user/Filme \
/mnt/user/Backup \
--compression off \
--exclude "*.tmp" \
--exclude "*/.recycle/*" \
--exclude "*/.Recycle.Bin/*" \
--exclude "*/Thumbs.db" \
--exclude "*/.DS_Store" \
--tag "auto-$(date +%Y%m%d)"
# Alte Snapshots bereinigen
restic forget \
--keep-daily 7 \
--keep-weekly 4 \
--keep-monthly 6 \
--prune
SCRIPT
chmod +x /boot/config/plugins/restic-backup/backup.sh
# Vollständigen Backup starten (kann Stunden dauern bei TB-Daten)
source /boot/config/plugins/restic-backup/restic.env
/boot/config/plugins/restic-backup/backup.sh
# Fortschritt live:
# [0:15:32] 5.234 / 10.123 GiB XX.X% @ XX.X MiB/s ETA 0:18:00
Erwartete Zeiten (Schätzung, StorageBox ~100 MBit/s Upload):
| Datenmenge | Upload-Zeit |
|---|---|
| 100 GB | ~2-3 Stunden |
| 500 GB | ~12-15 Stunden |
| 1 TB | ~25-30 Stunden |
| 2 TB | ~50-60 Stunden |
Ersten Backup am Wochenende oder über Nacht starten!
/boot/config/plugins/restic-backup/backup.sh# In /boot/config/crontab.d/restic hinzufügen
echo "0 3 * * * root /boot/config/plugins/restic-backup/backup.sh >> /var/log/restic-backup.log 2>&1" \
> /boot/config/crontab.d/restic
Sobald NetBird-Routing aktiv und unraid-status Skill genehmigt:
NanoClaw kann per /unraid-status den Backup-Status prüfen. Zusätzlich kann folgender Check in den Monitoring-Task integriert werden:
# Letzten Snapshot prüfen (via SSH auf unRAID wenn verfügbar)
source /boot/config/plugins/restic-backup/restic.env
LAST=$(restic snapshots --last --json | python3 -c "import sys,json; s=json.load(sys.stdin); print(s[-1]['time'][:10] if s else 'NONE')")
echo "Letzter Restic-Snapshot: $LAST"
# Alert wenn > 2 Tage alt
source /boot/config/plugins/restic-backup/restic.env
# Snapshots anzeigen
restic snapshots
# Datei suchen
restic find "wichtige-datei.mkv"
# Datei aus Snapshot wiederherstellen
restic restore SNAPSHOT_ID --target /mnt/user/Restored --include "/mnt/user/Filme/wichtige-datei.mkv"
# Snapshot wählen
restic snapshots
# Kompletten Share wiederherstellen
restic restore SNAPSHOT_ID --target / --include "/mnt/user/HP_Envy"
# Hinweis: --target / stellt auf ursprünglichen Pfad wieder her
# Repository als Dateisystem mounten (braucht FUSE)
mkdir -p /mnt/restic-browse
restic mount /mnt/restic-browse &
# Dann: ls /mnt/restic-browse/snapshots/
# Strg+C zum unmounten
# Wenn Backup abgebrochen wurde und Lock noch aktiv
source /boot/config/plugins/restic-backup/restic.env
restic unlock
netbird statusssh -p 23 u372918-RESTIC@... testen# Bandbreite begrenzen (verhindert Überlastung während Arbeitszeit)
restic backup ... --limit-upload 20000 # 20 MB/s
restic init erfolgreich)restic snapshots)| Blocker | Status |
|---|---|
| disk1 ~voll | Cleanup-Runbook erstellt, Marcel muss ausführen |
| NetBird vm-600 | Marcel muss netbird up + SSO durchführen |
| StorageBox Subuser | Marcel muss anlegen (Hetzner Robot) |
| PBS Orphan-Cleanup | Runbook erstellt, schafft ~1 TB Platz |
Reihenfolge für Marcel:
Erstellt von NanoClaw (autonome Session 2026-03-23)
Basis: Backup-Vergleich-Evaluation | disk1 Cleanup-Runbook