ioBroker Docker Container – Backup & Restore

Das Thema Backup & Restore des ioBroker im Docker Container ist eigentlich gar nichts Besonderes. Denn grundsätzlich gilt nämlich, dass die ioBroker-Daten im Container genauso gesichert werden können wie in jeder anderen ioBroker-Installation auch.

Im Folgenden ein paar Informationen und Links zu den beiden wichtigsten Varianten des ioBroker-Backups und was ich euch diesbezüglich empfehle.

Variante 1: Backup auf Dateiebene

Beim Backup auf Dateiebene wird schlichtweg der gesamte Ordner in dem sich die ioBroker Installation befindet in einem Backup gesichert. Wie euch bekannt sein sollte, ist dies der Ordner /opt/iobroker oder unter Docker eben jener Ordner bzw. jenes Volume auf dem Host, der/ das bei der Erstellung in den Container eingebunden wurde.

In der Regel erfolgt das Backup auf Dateieben über ein Script auf dem Docker Host. Hier sollte aber unbedingt berücksichtigt werden, dass der ioBroker Container vor dem Kopieren/ Sichern des ioBroker-Ordners beendet sein sollte.

Diese Methode eignet sich in Bezug auf das ioBroker Docker Image vor allem für Updates des ioBroker Containers innerhalb der Major-Versionen (z.B. innerhalb der Version 5.x.x). Durch simples Anlegen einer Kopie des Ordners oder Volumes auf dem Docker Host kann man so schnell und unkompliziert eine neue Version des Docker Images testen und im Zweifel auch schnell auf die alte Version zurück schwenken.

Achtung

Beim Wechsel der Major-Version, also z.B. von einem ioBroker Docker Image v4.x.x auf v5.x.x ändert sich innerhalb des ioBroker Images zumeist auch die Node-Version. In diesem Fall wären weitere Schritte über die Kommandozeile erforderlich. Details zum Wechsel der Node Version gibt es auch hier in der offiziellen ioBroker-Doku.  

Da diese Methode eher etwas für fortgeschrittenen User ist, habe ich mich dazu entschlossen diesen Weg hier nicht weiter zu erörtern. Wer doch einen Blick wagen möchte, dem empfehle ich einen kurzen Blick in die Rubrik „Sichern & Wiederherstellen“ des folgenden, eigentlich bereits eingemotteten Tutorials:

Variante 2: Backup der Konfiguration (Best Practice)

Mittlerweile bringt der ioBroker aber eine wirklich gute eingebaute Möglichkeit mit ein Backup der Konfiguration direkt aus ioBroker heraus zu erstellen. Dies geschieht entweder über den Befehl iobroker backup in der Kommandozeile oder mittels des Adapters „ioBroker.backitup“.

In beiden Fällen steht am Ende ein Archiv, dass die komplette Konfiguration des ioBroker enthält und sich ebenfalls per Kommandozeile oder Adapter einfach wiederherstellen lässt. Über den Adapter lassen sich außerdem zeitgesteuert Backups erstellen. Mit einem kleinen Copy Script auf dem Docker Host lässt sich das Backup dann problemlos regelmäßig auch an einen „sicheren“ Ort kopieren.

Der Große Vorteil dieser Variante besteht aber darin, dass das Backup in der Regel relativ klein ist und sich problemlos auf einem neuen oder beliebig anderem System mit ioBroker wiederherstellen lässt. 

Für den Fall des ioBroker Docker Containers bedeutet dies, dass ihr getrost den alten Container und das zugehörige Image löschen könnt und nur allein aus dem Backupfile eure Installation wiederherstellen könnt. 

Allerdings gibt es auch einen Nachteil. Währen ihr bei Variante 1 im besten Fall den Container einfach startet und alles wieder läuft, muss bei Variante 2 der ioBroker nach dem Restore erst die verwendeten Adapter (neu) installieren. Dies kann bei einer größeren Anzahl Adapter mitunter recht lange dauern…  

Beispiel: Wiederherstellung eines ioBroker-Containers aus dem Backupfile

Wie immer gibt es also Vor- und Nachteile. Trotzdem ist Variante 2 aus meiner Sicht grundsätzlich die sauberere und zuverlässige Methode. Grund genug sie einmal in einem Beispiel durchzuspielen. 

Wir stellen uns also vor, wir hatten einen Systemcrash. Das Backupfile vom gestiegen Backup ist vorhanden. Unser Docker Host (welcher Art auch immer) ist wiederhergestellt und unser Portainer läuft auch wieder. 

Portainer auf der Synology DiskStation

Alles was wir nun zur Wiederherstellung tun müssen ist einen neuen ioBroker Container anlegen. Wie das geht haben wir ja bereits in diesem Tutorial besprochen:

Der Clou an der Sache: Seit Version 4.1.0 des ioBroker Container Images ist es möglich vor dem ersten Start ein Backupfile in das noch leere Verzeichnis, welches in den Container als /opt/iobroker eingebunden wird, zu kopieren. Das Backup wird dann vom Startup-Script des Container erkannt und für die Wiederherstellung verwendet. Vollautomatisch.

Weiteren Informationen dazu findet ihr auch in der Readme auf Github. Bitte behaltet bei der Prozedur nach dem Start des Containers die Logausgabe im Auge. Hier könnt ihr sehen ob der Restore erfolgreich durchgeführt werden konnte oder es ggf. Probleme gab.

Nachdem der ioBroker Container dann gestartet ist und ihr Zugriff auf den ioBroker Admin bekommen habt, könnt ihr im dortigen Log beobachten wie der ioBroker nun die Adapter nach und nach neu installiert. Jetzt braucht ihr eigentlich nur noch etwas Geduld, und der Restore ist abgeschlossen.

Hinweis

Sollte es mal nicht mit der automatischen Wiederherstellung klappen, könnt ihr natürlich auch einfach einen neuen, leeren ioBroker Container starten, das Backupfile in das ioBroker-Verzeichis kopieren und den Restore über die Kommandozeile (mehr Infos) oder den Backitup-Adapter (mehr Infos) durchführen.

Ihr seht, so richtig kompliziert ist das Ganze nicht. Wie macht ihr es? Welche Erfahrungen habt Ihr zum Thema Backup & Restore vielleicht schon gemacht? Schreibt es gerne in die Kommentare. Ich freue mich auf euer Feedback.

MfG,
André