Zum Inhalt

Backup Strategie

Status: ✅ Eingerichtet & Automatisiert\ Letzte Aktualisierung: 2026-03-02

Changelog

2026-03-02: - Bugfix: rclone Config-Pfad — monatliches Backup schlug fehl (03:00 via HA shell_command) - Ursache: /data/.config/rclone/rclone.conf nur im Claude Code Add-on-Kontext zugänglich, nicht im HA-Kontext - Fix: Config nach /config/tools/rclone.conf verschoben (für beide Kontexte zugänglich) - Rotation vereinfacht: 1× Yearly + 1× Monthly + 1× Weekly (statt 2+3) - Yearly Backup hinzugefügt: 1. Januar um 04:00 - Weekly Trigger: Tage [8, 16, 23] → nur noch 9. des Monats - Watchdog-Tage aktualisiert: [2, 8, 16, 23] → [2, 9] + 1. Januar - Cleanup läuft jetzt vor dem Upload (verhindert Quota-Fehler bei vollem OneDrive) - Backup-Größe korrigiert: ~9 GB pro Backup (statt geschätzter ~15 GB) - OneDrive-Limit dokumentiert: 30 GB → bei >29 GB Yearly streichen

2026-02-27: - Umfassende Robustifizierung: 7 Bugs im Script analysiert und behoben - Bug 1 (bestätigt): Sonarr tar crashte auf asp/key-*.xml (Container-gesperrte Session-Keys) - Bug 2–5 (präventiv): Radarr, Lidarr, SABnzbd, Glances, Paperless tar ohne %%--ignore-failed-read%% - Bug 6: KEEP_COUNT weekly war 1 statt 3 (seit Anfang falsch, jetzt korrigiert) - Bug 7: rm statt rm -f für alle tmp-Dateien (würde crashen wenn tar fehlschlägt) - Neu: Graceful Degradation für pg_dump/pg_dumpall falls Container gestoppt - Backup neu gestartet — läuft jetzt alle 9 Schritte komplett durch

2026-02-24: - Bugfix: rclone-Config-Pfad korrigiert (war nach HAOS-Update nicht mehr vorhanden) - Refactoring: Benachrichtigungssystem auf Watchdog-Ansatz umgestellt (robuster) - Entfernt: Webhook-Automationen (cloud_backup_erfolgreich, cloud_backup_fehlgeschlagen) - Neu: Watchdog-Automation prüft täglich um 07:00 ob Backup stattfand

2026-02-18: - Bugfix: Webhook-Automationen für Benachrichtigungen erstellt (fehlten!) - Umstellung: Backup-Zeitplan von Cron auf HA-Automationen (HAOS hat keinen persistenten Cron) - Aufräumen: Initiales Backup (flache Struktur) gelöscht

2026-02-02: - Initiales Setup

Übersicht

Versionierte 3-2-1 Backup-Strategie: - 3 Kopien (Original + Cloud + Lokal) - 2 verschiedene Medien (NAS + Cloud) - 1 Offsite (OneDrive Cloud, verschlüsselt)

Backup-Rotation

| Typ | Tag | Zeit | Behalte | | Yearly | 1. Januar | 04:00 | 1 | | Monthly | 2. des Monats | 03:00 | 1 | | Weekly | 9. des Monats | 03:00 | 1 |

Max. Speicher: ~27 GB (3× ~9 GB) — OneDrive-Limit: 30 GB (bei >29 GB Yearly streichen)

Struktur in OneDrive:

backup-crypt:/
  yearly/
    2026-01-01/
  monthly/
    2026-03-02/
  weekly/
    2026-03-09/

Was wird gesichert

| Nr | Daten | Größe | | 1 | HA Backups (VorClaudeCode + neuestes) | ~4.5 GB | | 2 | DokuWiki | ~7 MB | | 3 | Paperless Dokumente | ~2 GB | | 4 | Paperless Datenbank (SQL Dump) | ~5 MB | | 5 | Immich Datenbank (SQL Dump) | ~570 MB | | 6 | Plex (library.db + Preferences.xml) | ~680 MB | | 7 | Sonarr Config | ~290 MB | | 8 | Radarr Config | ~155 MB | | 9 | Lidarr Config | ~7.2 GB | | 10 | SABnzbd Config | ~18 MB | | 11 | Glances Config | (leer) | | Pro Backup | ~9 GB |

Automatisierung

WICHTIG: Der Backup-Zeitplan läuft über Home Assistant Automationen, NICHT über Cron!\ (HAOS hat keinen persistenten Cron-Dienst)

Automationen: - automation.cloud_backup_yearly → 1. Januar um 04:00 - automation.cloud_backup_monthly → 2. des Monats um 03:00 - automation.cloud_backup_weekly → 9. des Monats um 03:00 - automation.cloud_backup_watchdog → Überwachung täglich um 07:00 (an Backup-Tagen)

Shell-Commands: - shell_command.cloud_backup_yearly - shell_command.cloud_backup_monthly - shell_command.cloud_backup_weekly

Benachrichtigungen (Watchdog-System)

Das Backup-Script sendet keine Webhooks mehr. Stattdessen:

  1. Script schreibt bei Erfolg das heutige Datum in /config/tools/cloud_backup_last_success
  2. HA-Sensor sensor.cloud_backup_letzter_erfolg liest diese Datei (stündlich)
  3. automation.cloud_backup_watchdog prüft um 07:00 an Backup-Tagen (2., 9., 1. Jan):
  4. Sensor enthält heutiges Datum → kein Alarm
  5. Sensor nicht aktuell → Push-Benachrichtigung: "❌ Cloud Backup FEHLER"

Kein Push bis 07:00 = Backup lief durch. Wenn Push kommt = Fehler, Log prüfen.

Bewusst NICHT gesichert

  • Plex Metadata - Kann neu heruntergeladen werden
  • Docker Images - Können neu gepullt werden
  • Media-Dateien (Filme, Serien, Musik) - Zu groß, ersetzbar
  • Immich Fotos - Gehen auf lokalen Backup-Server (160+ GB)
  • MediaCover/ Verzeichnisse - Werden automatisch regeneriert
  • logs/ Verzeichnisse - Nicht relevant

Wichtige Pfade

| Komponente | Pfad | | rclone Binary | /config/tools/rclone | | rclone Config | /config/tools/rclone.conf | | Backup-Script | /config/tools/backup-to-cloud.sh | | Backup-Log | /config/tools/backup.log | | Cron-Log | /config/tools/backup-cron.log | | Erfolgs-Marker | /config/tools/cloud_backup_last_success | | HA-Sensor | sensor.cloud_backup_letzter_erfolg |

rclone Config: Liegt in /config/tools/rclone.conf (für HA-Kontext und Claude Code Add-on zugänglich).\ NICHT mehr in /data/.config/ — dieser Pfad ist im HA shell_command-Kontext nicht zugänglich!

KRITISCH: Verschlüsselungs-Credentials

DIESE DATEN UNBEDINGT SICHER AUFBEWAHREN!\ Ohne diese Passwörter sind die Cloud-Backups NICHT wiederherstellbar!

rclone Crypt Passwort

t2k1Srf4L7v6Lkd-vDKE29bfvdl9i5Ln60LiuBX3-YIYcUALRHCJfydKoEQOOxtqr8
  • Algorithmus: AES-256
  • Dateinamen: Verschlüsselt
  • Verzeichnisnamen: Verschlüsselt

OneDrive

Drive ID: 80F7981F07217716
Drive Type: personal

OMV SFTP

Host: 192.168.178.20
User: claude
Passwort: GTEDB1CA2T

Backup manuell ausführen

# Yearly Backup manuell starten
/config/tools/backup-to-cloud.sh yearly

# Monthly Backup manuell starten
/config/tools/backup-to-cloud.sh monthly

# Weekly Backup manuell starten
/config/tools/backup-to-cloud.sh weekly

# Live-Log verfolgen
tail -f /config/tools/backup.log

# Letzten Erfolg prüfen
cat /config/tools/cloud_backup_last_success

# Cloud-Inhalt anzeigen
/config/tools/rclone --config /config/tools/rclone.conf lsd backup-crypt:
/config/tools/rclone --config /config/tools/rclone.conf size backup-crypt:

Wiederherstellung

Schritt 1: rclone installieren

curl https://rclone.org/install.sh | sudo bash

Schritt 2: rclone konfigurieren

mkdir -p ~/.config/rclone
nano ~/.config/rclone/rclone.conf
[onedrive]
type = onedrive
# Token wird bei 'rclone config reconnect onedrive:' neu generiert!

[backup-crypt]
type = crypt
remote = onedrive:Backup
password = t2k1Srf4L7v6Lkd-vDKE29bfvdl9i5Ln60LiuBX3-YIYcUALRHCJfydKoEQOOxtqr8
password2 = t2k1Srf4L7v6Lkd-vDKE29bfvdl9i5Ln60LiuBX3-YIYcUALRHCJfydKoEQOOxtqr8
filename_encryption = standard
directory_name_encryption = true
# OneDrive verbinden (Browser öffnet sich)
rclone config reconnect onedrive:

# Testen
rclone lsd backup-crypt:

Schritt 3: Backup herunterladen

# Neuestes Monthly Backup herunterladen
rclone copy backup-crypt:monthly/DATUM/ /restore/ -P

# Oder einzelne Bereiche
rclone copy backup-crypt:monthly/DATUM/ha-backups/ ./ha-restore/ -P
rclone copy backup-crypt:monthly/DATUM/dokuwiki/ ./dokuwiki-restore/ -P

Einzelne Dienste wiederherstellen

Home Assistant

rclone copy backup-crypt:monthly/DATUM/ha-backups/ ./
# In HA: Einstellungen → System → Backups → Hochladen

DokuWiki

rclone copy backup-crypt:monthly/DATUM/dokuwiki/ /dockeruser/data/dokuwiki/ -P
chown -R 1001:100 /dockeruser/data/dokuwiki/
docker restart dokuwiki

Paperless

# Dokumente
rclone copy backup-crypt:monthly/DATUM/paperless/media/ /dockeruser/data/paperless/media/ -P

# Datenbank
rclone copy backup-crypt:monthly/DATUM/paperless/paperless.sql ./
cat paperless.sql | docker exec -i paperless-postgres psql -U paperless paperless
docker restart paperless-webserver

Immich Datenbank

rclone copy backup-crypt:monthly/DATUM/immich/immich.sql ./
docker stop immich_server immich_machine_learning
cat immich.sql | docker exec -i immich_postgres psql -U postgres
docker start immich_server immich_machine_learning

Plex

rclone copy backup-crypt:monthly/DATUM/plex/ ./plex-restore/ -P
docker stop plex
cp ./plex-restore/com.plexapp.plugins.library.db "/Plex/Library/Application Support/Plex Media Server/Plug-in Support/Databases/"
cp ./plex-restore/Preferences.xml "/Plex/Library/Application Support/Plex Media Server/"
docker start plex

Sonarr / Radarr / Lidarr

# Beispiel Sonarr
rclone copy backup-crypt:monthly/DATUM/docker-configs/sonarr/ ./sonarr-restore/ -P
docker stop sonarr
cp ./sonarr-restore/config.xml /dockeruser/data/Sonarr/
cp ./sonarr-restore/sonarr.db /dockeruser/data/Sonarr/
chown -R 1001:100 /dockeruser/data/Sonarr/
docker start sonarr

SABnzbd

rclone copy backup-crypt:monthly/DATUM/docker-configs/sabnzbd/ /dockeruser/data/sabnzbd/ -P
chown -R 1001:100 /dockeruser/data/sabnzbd/
docker restart sabnzbd

← Zurück zur Backup-Übersicht