FHEM #7 – Meine (neue) Backup-Strategie

FHEM #7 – Meine (neue) Backup-Strategie

FHEM #7 – Meine (neue) Backup-Strategie

Heute ein Beitrag zum Thema FHEM und Backups. Ich zeige euch wie ich meine verschiedenen FHEM Instanzen regelmäßig und automatisiert in einem cloud-Speicher sichere.

Einleitung

Ich teste viel in FHEM und stelle auch mal häufiger meine Konfigurationen im Große Stile um. Daher bietet es sich an Backups der kompletten FHEM-Instanz zu erstellen. Gerade auch wer neu in FHEM unterwegs ist, zerschießt sich gerne mal seine FHEM-Konfiguration und sollte daher schon früh auf Backups setzen. 

Meine hier gezeigte Backup-Strategie verwende ich nicht nur für FHEM, sondern für alle meine Daten.

Backups in FHEM erstellen

Kurz noch mal alle abgeholt, die meine FHEM-Serie bisher nicht so genau verfolgt haben.

Mit dem Befehl backup im FHEM-Eingabefeld starte ich ein Backup. Easy bis jetzt.

Mit dem Eintrag attr global backup_before_update 1 in der fhem.cfg erzeuge ich automatisch Backups vor einem Update.

Dann noch einen Eintrag in der fhem.cfg für manuelle und automatische Backups:

#########################################################################
## FHEM manuelles Backup
#########################################################################
define SYS.fhem.main.Backup dummy
attr SYS.fhem.main.Backup group fhem-main Backup
attr SYS.fhem.main.Backup room System
attr SYS.fhem.main.Backup webCmd Ausführen
define SYS.fhem.main.BackupRun notify SYS.fhem.main.Backup:.* backup
attr SYS.fhem.main.BackupRun group fhem-main Backup
attr SYS.fhem.main.BackupRun room System

#########################################################################
## FHEM automatisches Backup
#########################################################################
define SYS.fhem.main.BackupRunAuto at *04:00:00 set SYS.fhem.main.Backup Ausführen
attr SYS.fhem.main.BackupRunAuto group fhem-main Backup
attr SYS.fhem.main.BackupRunAuto room System

Wichtig für später: Die erstellten Backups landen dabei, wenn nicht anders eingestellt, im Ordner ./fhem/backup

Mehr zu FHEM-Backups im FHEM-Wiki.

Meine alte Backup-Strategie

odrive

odrive ist ein cloud-Aggregator, in dem viele verschiedene cloud-Anbieter oder auch die eigene cloud hinterlegt werden können. Man kann dann zentral über ein Windows-/Mac Desktopsync-Tool seine Daten auf die cloud-Server schieben bzw. synchronisieren. 

odrive hat dabei 2 interessante Funktionen, weswegen ich es ein Jahr lang für 99$ getestet habe.

Die erste Funktionen ist die Verschlüsselung. Alle Daten, d.h. Dateien und Ordner, können verschlüsselt mit dem Sync-Tool hochgeladen werden. Man kann dann weder den Inhalt noch die Datei-/Ordnernamen lesen, wenn man nicht den Schlüssel hat. Wichtig: Mit dem Sync-Tool werden die Daten schon vor dem hochladen verschlüsselt. Sehr interessant, wenn man sensible Daten mit US-clouds synchronisiert.

 

Die zweite interessante Funktion ist die “unsync”-Funktion im Sync-Tool. Damit werden bereits hochgeladene Daten von der Festplatte gelöscht und durch einen 0-Byte Platzhalter ersetzt. So kann kann ich lokal sehen welche Daten in der cloud liegen ohne das sie physisch Platz auf dem Datenträger wegnehmen. Mit dem “sync”-Befehl lassen sich bei Bedarf die Daten wieder lokal herunterladen.

Beides wirklich interessant Funktionen, wobei die Verschlüsselung nur in der Desktop-Variante, bei mir unter Windows, funktioniert. Es gibt zwar auch einen Linux-Client, aber hierfür wurde die Verschlüsselung leider nie implementiert, obwohl schon länger versprochen wurde das dies passiert. Der Linux-Client mit Verschlüsselung wäre inbesondere für Raspbian interessant gewesen.

Amazon Cloud Drive

Als cloud-Speicher entschied ich mich in Verbindung mit odrive für das Amazon Cloud Drive (ACD). Damals in der unlimitierten Version für 70EUR. ACD funktionierte zusammen mit odrive in der Regel ganz gut. Aber es gab auch Situationen die mir nicht so gut gefallen haben. Immer wenn ich z.B. Sonntagabends Backups hochschieben wollte war ACD nur sehr eingeschränkt verfügbar. Lag wahrscheinlich, ohne es genau zu wissen, am Streamingangebot von Amazon das über die gleichen Server läuft wie ACD und für gute Auslastung gesorgt hat. Egal warum, sehr nervig auf jeden Fall. 

Alte Strategie

Meine bisherige Strategie für unsensible Daten, wie Backups, bestand im Grunde aus drei Teilen. Zuerst eine virtuelle Maschine mit einem installierten Windows für das odrive Desktopsync-Tool. Windows deshalb um die Verschlüsselung im Sync-Tool nutzen zu können. Alle Backups landeten in dieser VM und wurden dann automatisch verschlüsselt mit ACD syncronisiert und nach 24 Stunden geunsynced, d.h. lokal gelöscht.

Sensible Daten wie Dokumente usw. synchronisierte ich ebenfalls mit odrive und ACD, aber direkt vom jeweilen PC/Laptop und ohne automatisches unsync. 

Prinzipiell hat das beschriebene Konstrukt alles bis auf kleinere Mängel ganz passabel funktioniert. Allerdings ist mir alles zusammengenommen zu teuer und doch zu komplex. Nervige Änderungen siehe ACD-Speichplatzbegrenzung oder fehlende odrive CLI-Verschlüsselung taten ihr übriges. Nach Auslaufen der Dienste odrive und ACD suchte ich nach einer neuen Strategie.

Meine neue Backup-Strategie

Strato HiDrive

Der erste Teil meiner neuen Strategie, beinhaltete die Suche nach einem cloud-Speicher.

Nach etwas Recherche landete ich bei strato. Dort gibt einen interessanten Tarif namens HiDrive mit 1 TB Speicher, zur Zeit in einer Aktion für 7,50€ monatlich und dauerhaft bei 12 Monaten Mindestvertragslaufzeit. 
FHEM #7 – Meine (neue) Backup-Strategie

Wichtiger Punkt ist das Protokollpaket, welches normal 5€ extra kostet, aber in Rahmen der Aktion in dem 1 TB-Tarif enthalten ist. Das Protokollpaket erlaubt den Zugriff auf den cloud-Speicher über folgende Protokolle:

  • FTP
  • FTPS (auch SSL-verschlüsselt)
  • WebDav
  • SFTP
  • SCP
  • rsync (auch SSH-verschlüsselt)
  • SMB /CIFS

Die fett markierten Protokolle sind die auf die ich mich konzentrieren werde. 

Hier noch einige, auf der Webseite beschriebene, Vorteile:

  • Sie behalten die Rechte an Ihren Daten 
  • TÜV-zertifizierte Rechenzentren (ISO 27001) in Deutschland 
  • Bilder werden nicht zu Werbezwecken genutzt 
  • Ihre Daten werden nicht ungewollt veröffentlicht 
  • Von Ihnen gelöschte Daten werden nicht gespeichert 
  • Keine versteckten Preise 
  • Unbegrenzte Dateianzahl und Größe 
  • Unbegrenzter Traffic 
  • Vielzahl von Zugriffsmöglichkeiten 

Viele unterstütze Protokolle, Server in Deutschland usw. hören sich nicht schlecht an. Strato bietet mit HiDrive ein ziemlich rundes Paket zu einem fairen Preis (Aktion) an. Für meine unsensiblen Daten, genau das richtige Paket. Ich lade damit mittlerweile meine Backups von drei FHEM-servern automatisiert und direkt zu HiDrive hoch. 

Der einzige Kritikpunkt der mir so einfällt, ist die fehlende Unterstützung für eine 2-Faktor-Authentifizierung. Schlecht wer wirklich sensible Daten hochlädt und dies unbedingt als zusätzliche Sicherheitsstufe nutzen möchte. Hier kann Strato noch definitiv nachbessern.

Zu Verwendung von HiDrive kann man den Browser oder verschiedene Tools und Apps auf verschiedene Plattformen nutzen. 

Den Browser verwende ich nur selten für HiDrive, aber wenn dann die classic-Ansicht:

FHEM #7 – Meine (neue) Backup-Strategie FHEM #7 – Meine (neue) Backup-Strategie FHEM #7 – Meine (neue) Backup-Strategie

In der neuen Ansicht sind noch nicht alle Funktionen implementiert:

FHEM #7 – Meine (neue) Backup-Strategie

Benötigt man eine Datei für ein restore verbindet man sich z.B. über SFTP mit HiDrive. Dazu verwende ich das bekannte Tool WinSCP. 

FHEM #7 – Meine (neue) Backup-StrategieFHEM #7 – Meine (neue) Backup-Strategie

Seafile

Seafile möchte ich auch noch kurz erwähnen, obwohl es mit FHEM-Backups bei mir nichts direkt zu tun hat, aber es zur Gesamtbackup-Strategie gehört. 

Seafile ist eine Open-Source Software um Filehosting auf einem eigenen Rechner/Server aufzusetzen.

Ich verwende Seafile für Backups und zur Synchronisation von sensiblen Daten.

FHEM #7 – Meine (neue) Backup-Strategie

Für seafile verwende ich einen kleinen vserver von United-Hoster, welcher als Verteiler fungiert und meine Daten mit verschiedenen Geräten Desktops-Clients synchronsiert. Ein vserver deshalb, damit meine Daten im Ernstfall weit weg von zu Hause und nicht lokal gesichert sind. Der vserver beherbergt nur seafile und hat sonst keine weiteren Abhängigkeiten zu irgendwelchen Smart-Homes, Diensten, Apps, Toos, usw.

Die Daten können innerhalb von seafile verschlüsselt werden. Niemand kann dann ohne Passwort auf die Daten zugreifen, auch nicht bei physischem Zugriff auf die Server-Hardware. Eine 2-Faktor-Autorisierung ist ab Version 6.0 auch möglich. Verschlüsselte Ordner sind mit einem Schloss versehen.

FHEM #7 – Meine (neue) Backup-Strategie

Ein Vorteil ist auch, das ich auf meine Daten über einen Webbrowser zugreifen kann, um mir z.B. Dokumente direkt ansehen zu können. 

 

Neue Strategie

Meine neue Strategie verwendet das rsync-Protokoll, ebenso wie meine alte Strategie. Nur das jetzt die Daten nicht mehr in einer Windows-VM landen, sondern direkt zu HiDrive übertragen werden. 

Hier nun die Schritte um die in FHEM erzeugten Backups zu HiDrive übertragen zu können:

Damit man später die Backups übertragen kann, muss HiDrive meinen Rechner kennen auf dem die Backups liegen. Ich erzeuge also einen öffentlich Schlüssel auf meinem Rechner, den ich später in den HiDrive-Einstellungen hochlade.  

Im ersten Schritt installiert man den Key-Manager Keychain für OpenSSH um Schlüsselpaare zu erzeugen.

Falls noch nicht installiert füge ich mit folgendem Befehl in der Linux-Konsole den Key-Manager hinzu:

sudo apt-get install keychain

Danach erzeugt man das Schlüsselpaar mit dem Befehl

sudo ssh-keygen

Alle Fragen bestätigt man daraufhin einfach mit der Enter-Taste

FHEM #7 – Meine (neue) Backup-Strategie

Das Schlüsselpaar wurde nun im angegeben Ordner für den root-user abgelegt. 

Jetzt am besten mit WinSCP einloggen und die eben erstellte “id_rsa.pub” herunterladen

FHEM #7 – Meine (neue) Backup-Strategie

Danach einmal in HiDrive einloggen und in die Einstellungen -> Kontenverwaltung gehenFHEM #7 – Meine (neue) Backup-Strategie

FHEM #7 – Meine (neue) Backup-Strategie

Jetzt auf “OpenSSH Schlüssel” klicken. Dann auf “Datei auswählen” und die vorher gespeicherte “id_rsa.pub” laden und “Hinzufügen”

FHEM #7 – Meine (neue) Backup-Strategie

Der geladene Schlüssel sollte jetzt in der unteren Liste auftauchen. 

FHEM #7 – Meine (neue) Backup-Strategie

Ab jetzt kennt HiDrive meinen Rechner von dem aus ich die Backups hochladen möchte.

Damit auch mein Rechner HiDrive kennen lernen kann, sollte man kurz einmal manuell die Synchronisation mittels einem rsync-Befehl starten. Der Befehl dasfür lautet bei mir beispielhaft  wie folgt:

sudo rsync -avrze "ssh" --remove-source-files /opt/fhem/backup/ space-XXXX@rsync.hidrive.strato.com:/users/space-XXXX/99_backups_server/backup_fhem_main_ext/FHEM/2017/
  • sudo = Befehlausführung als root-user
  • rsync -avrze “ssh” = rsync-Befehl mit Parametern und ssh-verschlüsselt
  • –remove-source-files = entfernt nach dem Übertragen die Dateien von der Quelle; entspricht einem Verschieben
  • /opt/fhem/backup/ = Pfad zu den FHEM-Backups
  • space-XXXX@rsync.hidrive.strato.com: = username und HiDrive Adresse
  • /users/space-XXXX/99_backups_server/backup_fhem_main_ext/FHEM/2017/ = Zielpfad in HiDrive; vorher bereits angelegt

 

Die nun erscheinende Frage einmal mit “yes” beantworten und schon ist HiDrive in der Liste der bekannten Rechner/Server hinterlegt. 

FHEM #7 – Meine (neue) Backup-Strategie

Das ist wichtig damit der spätere crontab-Eintrag sauber und automatisiert durchlaufen kann.

Damit die Backups, bei mir nachts um 5 Uhr, automatisch hochgeladen werden startet man zuerst die crontab mit

sudo crontab -e

und fügt folgendes am Ende der Liste hinzu:

0 5 * * * rsync -avrze "ssh" --remove-source-files /opt/fhem/backup/ space-XXXX@rsync.hidrive.strato.com:/users/space-XXXX/99_backups_server/backup_fhem_main_ext/FHEM/2017/

Ab jetzt landen alle FHEM-Backups automatisch auf HiDrive.

Backups löschen

Zur Zeit behalte ich noch alle Backups, aber irgnenwann muss ich damit anfangen alte Backups zu löschen. Dies werde ich auch nach einem sinnvollen Schema machen, wahrscheinlich script-gesteuert. Wenn es soweit ist, werde ich diesen Beitrag dazu updaten.

Reinhard
Autor von frombeyond.de. Smart-Home-Verrückter.Nutzt Zuhause FHEM zusammen mit HomeMatic, JeeLink, 1-Wire, Flammtronik / Atmos HV, Buderus KM271, Philips HUE, Xiaomi Yeelight, Alexa, Sonos, FritzBox, Ubiquiti UniFi APs, APC UPS, APC PDU, IPMI. MariaDB, InfluxDB und Grafana zur Auswertung. Als Hardware-Untersatz kommen mehrere RaspberryPis und Supermicro Serverhardware zum Einsatz. Softwareseitig werden hauptsächlich Raspbian, Ubuntu, ESXi und Docker verwendet.
Werbung