ioBroker Docker Container – Updates & Upgrades

Wie halte ich meine ioBroker-Installation aktuell? Eine kurze Frage die aber durchaus etwas komplexer zu beantworten ist. Daher im folgenden erst einmal ein paar ausführliche Informationen sowie einfache Kurzanleitungen zu den verschiedenen Updates. 

Updates der ioBroker Adapter

Die Aktualisierung der ioBroker Adapter erfolgt in der Regel über die Weboberfläche des ioBroker Admins. Unter Anderem über eine Zahl neben dem Menüpunkt „Adapter“ werden verfügbare Updates signalisiert. Über die Adapter-Übersicht lassen sich die Updates dann installieren. Soweit, so einfach.  

Hinweis

Die Adapter sind im Ordner /opt/iobroker installiert, den wir ja (hoffentlich) auf den Docker-Host ausgelagert haben. Diese Tatsache erklärt auch, warum Adapter nicht aktualisiert werden wenn man den Container selbst aktualisiert!

Alternativ lassen sich die Adapter natürlich auch über die Kommandozeile aktualisierten. Weitere Infos zur Bedienung des ioBrokers über die Kommandozeile findet ihr in der offiziellen Dokumentation der Konsolenkommandos

Update des js-controllers

Mit dem js-controller verhält es sich zuerst einmal wie mit den ioBroker-Adaptern. Er ist ebenfalls in Ordner /opt/iobroker installiert und wird nicht aktualisiert wenn man den Container über sein Image aktualisiert. Allerdings ist es aktuell nicht möglich den js-controller über die Weboberfläche des ioBroker Admins zu aktualisieren. Um den js-controller zu aktualisieren ist also zwingend die Kommandozeile zu bemühen.

Damit das Update funktioniert muss der js-controller innerhalb des laufenden Containers beendet werden. Ohne js-controller kein ioBroker, daher wird damit natürlich der gesamte ioBroker inkl. aller Adapter gestoppt.

Und hier kommen wir zu einer Besonderheit des ioBroker Containers. Während der js-controller auf anderen Systemen über den ioBroker Dienst gesteuert wird, startet er im Container „nur“ als normaler Prozess. Aus diesem Grund sind die Kommandos iobroker stop und iobroker start im Container auch teilweise ohne Funktion und sollten nicht verwendet werden!

Um den ioBroker und den js-controller innerhalb des Containers zu beenden werden über den Konsolenbefehl pkill -u iobroker kurzerhand alle Prozesse des Benutzer „iobroker“ beendet. Anschließend kann der js-controller wie auf jedem anderen Linux System aktualisiert werden.

Nach der Aktualisierung muss der ioBroker neu gestartet werden. Das geht theoretisch auch über einen Befehl, allerdings empfehle ich dringend dies einfach über den Neustart des Containers zu erledigen.

Im Detail würde sich also die komplette Prozedur des Updates über die folgenden beiden Befehle erledigten lassen:

pkill -u iobroker
iobroker update
iobroker upgrade self

Anschließend ist dann, wie bereits angesprochen, der Container zu beenden und neu zu starten.

Update des Containers

Nachdem wir jetzt alles über die Updates innerhalb des ioBrokers wissen, bleibt noch der Container selbst. Im Container, bzw. dem Image aus dem der Container gestartet worden ist, sind alle Softwarepakete enthalten die der ioBroker zum Laufen benötigt. Wenn man es nicht so ganz genau nimmt dann könnte man sagen, es ist praktisch das Betriebssystem in dem der ioBroker ausgeführt wird.

Natürlich gibt zu den einzelnen Paketen die im Container enthalten sind auch immer wieder Updates. Prominente Pakete sind zum Beispiel „node“ und „npm“, die ihr vermutlich schon aus  Weboberfläche des ioBroker Admin kennt.

Wer weiß wie man in einer Linux Umgebung über die Kommandozeile Updates abruft und installiert, der kann dies im Grunde genauso auch über die Kommandozeile innerhalb des Containers tun. Zum Beispiel in etwas so:

apt-get update && apt-get upgrade -y

Ich persönlich bevorzuge allerdings einen anderen Weg, denn über Portainer ist es möglich ein Update des Containers mit wenigen Klicks einfach über die Weboberfläche zu erledigen. Dabei wird praktisch der alte Container gelöscht, die aktuelle Version des Images herunter geladen und der Container wieder neu gestartet. 

Achtung

Das Update über einen neuere Version des ioBroker Docker Images funktioniert innerhalb einer Major Version (z. B. v5.x.x) problemlos.

Beim Upgrade, also dem Wechsel der Major Versions (z.B. von v4.x.x auf v5.x.x) gibt es in der Regel auch immer eine neue Major Version der node-Pakets im Image. Hier wären unter Umständen nach dem Update des Containers noch weitere Schritte innerhalb des ioBrokers notwendig damit der ioBroker wieder ordnungsgemäß funktioniert (Mehr Infos dazu in der ioBroker Doku zum Thema Node Update).

Aus diesem Grund empfehle ich ein Upgrade des Containers immer über die Funktion Backup und Restore durch zu führen. Mehr Infos zu Backup und Restore hier: ioBroker Docker Image – Backup & Restore.

Kurzanleitung: Update des Containers über Portainer

Wir öffnen also unsere Portainer Weboberfläche und öffnen mit einem Klick auf unseren ioBroker Container unter dem Menüpunkt „Containers“ die „Container details“.

Anschließend suchen wir den Button „Recreate“. Durch einen weiteren Klick öffnet sich ein Fenster in dem wir die Checkbox für „Pull latest image“ aktivieren. Mit einem Klick auf den Button „Recreate“ starten wir den Prozess. 

Hinweis

Wenn ihr beim Neuerstellen des Containers Parameter ändern oder auf eine andere Version des Docker Images wechseln wollt, dann schaut euch doch mal die Funktion hinter dem Button „Duplicate/ Edit“ an.

Kleiner Tip dazu: „Duplicate/ Edit“ funktioniert am Besten wenn ihr vorher den Container beendet.

Im Grunde sollte es das gewesen sein. Ich hoffe ich habe alles berücksichtigt und nichts vergessen. Falls euch auffallen sollte, dass etwas fehlt oder mißverständlich erklärt ist, lasse es mich bitte wissen. Am Besten und schnellsten geht das über die Kommentarfnktion. Danke!

MfG,
André