IoBroker unter Docker auf der Synology DiskStation ( v3)

Nachdem sich in letzter Zeit bei mir einiges zum Thema ioBroker und Docker getan hat, und das alte Tutorial mittlerweile an der ein oder anderen Stelle nicht mehr auf die aktuelle Version gepasst hat, habe ich mich entschieden eine komplette Neuauflage zu machen. Damit wird praktisch die alte Version, welche ihr hier weiterhin einsehen könnt, eins zu eins abgelöst.

Weiterhin habe ich versucht das Ganze einigermaßen übersichtlich zu gestalten und habe daher das Tutorial in verschiedene Teilbereiche gegliedert. Für allgemeine Hinweise und weiterführende Erläuterungen habe ich eine Knowledge Base (KB) eingerichtet und den Inhalt dorthin ausgelagert.

Da ich mit dieser Art der Aufbereitung noch keinerlei Erfahrungen sammeln konnte, gebt mir gerne mal Feedback ob sich mit den Änderungen noch ordentlich arbeiten lässt. 🙂

Ansonsten wünsche ich euch viel Erfolg beim Einrichten des ioBroker-Containers unter Docker und freue mich auf eure Kommentare.

Bevor es mit dem neuen Tutorial los geht ein kurzer Überblick über die größten Veränderungen und Neuerungen.

Portainer als Ersatz der Docker Weboberfläche im DSM

Während ich im alten Tutorial noch die Webobefläche innerhalb des Disk Station Managers (DSM) gelobt und verwendet habe, so fehlen mir dort mittlerweile jedoch wichtige Möglichkeiten zur Administration. So ist es mir z.B. bisher nicht gelungen dem ioBroker-Container mit Hilfe von macvlan über die DSM-Oberfläche eine eigene IP-Adresse zu verpassen. Mit Portainer hingegen ist das innerhalb von zwei Minuten erledigt. Weiterhin bietet Portainer eine Reihe von komfortablen Features, wie z.B. die Verwendung von Stacks und Templates, die die Erstellung von Containern in Zukunft noch einfacher machen werden. Dazu aber zu gegebener Zeit mehr in einem anderen Tutorial.

Änderungen im ioBroker Setup

Durch Änderungen im eigentlichen ioBroker-Setup und in der Art und Weise wie ioBroker später läuft, waren auch im Image umfangreiche Anpassungen notwendig. Durch z.B. die Verwendung eines separaten iobroker Users ergeben sich ganz neue Anforderungen an die Rechteverwaltung innerhalb und auch außerhalb des Containers. Zu diesem Zweck wurde und wird das Startupscript innerhalb des Containers ständig weiterentwickelt.

Mount des ioBroker-Verzeichnises

Auch hier gibt es Neuerungen. So ist es nun z.B. möglich, nein, wird es nun dringend empfohlen, beim ersten Start des Containers ein leeres oder ein mit einer bestehenden Installation gefülltes Verzeichnis in /opt/iobroker zu mounten. Den Rest erledigt dann das überarbeitete Startup-Script. Die mühsame Prozedur mit dem hin und her kopieren wird dadurch deutlich vereinfacht bzw. entfällt bei einer Neuinstallation komplett!

Neue Umgebungsvariablen zur Konfiguration des Containers

Zusätzlich zu den bekannten Umgebungsvariablen für z.B. die Zeitzone kommen weitere Variablen hinzu die es ermöglichen Features zu aktivieren (z.B. dem AVAHI-Daemon) oder zusätzlich benötigte Linux-Pakete zu installieren. Es ist nicht auszuschließen dass dieses noch weiter ausgebaut wird. Aktuelle Informationen zu den möglichen Variablen finden sich immer im Readme auf Github

Im Gegensatz zum alten Tutorial starten wir dieses Mal nicht sofort durch. Bevor wir den eigentlichen ioBroker-Container mit wenigen Klicks erstellen können, sind ein paar Vorbereitungen zu treffen.

Systemvoraussetzungen

Wie der Titel es schon vermuten lässt, habe ich dieses Tutorial für die Installation von ioBroker unter Docker auf einer Synology Disk Station geschrieben. Es wäre also nicht verkehrt wenn ihr eine konfigurierte Disk Station mit installiertem Docker-Paket euer eigen nennen würdet. Allerdings ist das diesmal kein Muss! Ich teste zum Beispiel meine Builds zusätzlich zur DS auch immer auf einem ganz normalen Debian PC mit installiertem Docker CE. Trotzdem beziehe ich mich in diesem Tutorial grundsätzlich immer auf die Installation auf der DS, werde aber an einigen Stellen entsprechende Anmerkungen machen wenn Schritte auf anderen Systemen deutlich abweichen. 🙂

Eine weitere Voraussetzung für das Gelingen dieses Tutorials ist die Installation von Portainer als alternative Weboberfläche zur Administration von Docker. Dazu habe ich im Vorfeld bereits ein Tutorial veröffentlicht welches beschreibt wie man Portainer auf die DS bringt. Keine Angst, bei Portainer handelt es sich lediglich um einen weiteren Docker-Container. Es ist also kein komplizierter Eingriff auf der DS nötig. Benutzer die keine DS verwenden, müssen an dieser Stelle höchstwahrscheinlich die Kommandozeile bemühen. Anleitungen zum Aufsetzen von Portainer auf einem "normalen" Docker-PC gibt es zu genüge im Netz.

Verzeichnisstruktur

Docker-Container sind per Definition zu 100% austauschbare Hüllen für die darin laufende Software. Dies bedeutet wir müssen uns Gedanken darüber machen welche (Konfigurations-)Daten wir außerhalb des Containers speichern sollten um nicht bei jedem Update des Containers neu anfangen zu müssen.
Im Fall von ioBroker ist das relativ einfach. Das Verzeichnis /opt/iobroker beinhaltet sämtliche Konfigurationsdateien von ioBroker und seinen Adaptern. Dieses Verzeichnis sollten wir also auf jeden Fall außerhalb des Docker-Containers lagern. Wie euch aus meinem Portainer Tutorial bereits bekannt sein sollte, habe ich für die Container-Daten auf der DS eine einfache Ordnerstruktur angelegt. Diese befindet sich bei mir auf "volume1" im Ordner "docker". Hier lege ich über die FileStation für jeden Container einen Order nach folgendem Schema an "/volume1/docker/[containername]_[bezeichnung]". Bei Portainer war es "portainer_data". Auch für ioBroker ist das nicht anders. Mein Verzeichnis heißt hier "iobroker_data". (Im alten Tutorial hieß das Verzeichnis übrigens noch "iobroker_mount".)

Netzwerk

Prinzipiell sind zu diesem Thema drei Varianten relevant. Eine kurze Erläuterung zu den drei Modi habe ich mal in meine neue Knowledgebase ausgelagert.
Welche Variante ihr verwendet bleibt euch überlassen. Die einfachste ist sicher der Host-Modus. Ich persönlich bevorzuge die MACVLAN-Variante, wenngleich ich diese nur den fortgeschrittenen Benutzern empfehlen würde. Hierbei sind nämlich gute Kenntnisse des eigenen Heimnetzwerks sowie der Netzwerkkonfiguration der DiskStation (Stichwort: Network-Device-Name) unerlässlich.
Mit dem Bridged Mode kann man als Einsteiger nicht viel falsch (kaputt) machen. Als Nachteil ist hie aber zu sehen, dass jeder benötigte Port separat als Weiterleitung im Container eingetragen werden muss. Eine entsprechende (noch unvollständige) Liste der Ports habe ich in der Knowledgebase abgelegt. Außerdem gilt für den Bridged Mode der Hinweis, dass Adapter die per Multicast arbeiten hier nicht funktionieren werden.

Vorbereitungen für MACVLAN

Wer sich als "fortgeschrittenen Benutzer" bezeichnet und jetzt bereits für die MACVLAN Variante entschieden hat, der kann das Netzwerk an diesem Punkt bereits über Portainer vorbereiten. Allerdings hier gleich nochmal der Hinweis: Ihr solltet dazu euer Netzwerk und eure DS kennen! Außerdem benötigt ihr für einen Schritt einen SSH-Zugang auf eure DS.
Im folgenden Beispiel verwende ich als Testnetz ein 192.168.0.0/24-Netz. Das Gateway liegt auf der 1 und es gibt keinen DHCP-Bereich. Mein "iobrokertest" soll die IP-Adresse 192.168.0.100 bekommen.

Und schon geht es los. Das Erstellen des MACVLAN-Netzwerkes umfasst insgesamt zwei Schritte. Im ersten Schritt erstelle wir eine "Configuration" mit den gewünschten Neztwerkinformationen. Im zweiten Schritt erstellen wir dann mit Hilfe der "Configuration" die sogenannte "Creation" die wir dann später auch mit dem ioBroker-Container verbinden.

Hinweis: Bis einschließlich der Docker-Paketversion 17 war es durch einen Bug auf der DS nicht möglich nach der Erstellung der "Configuration" eine "Creation" zu erstellen. Dafür konnte man aber die "Configuration" direkt mit dem ioBroker-Container verbinden und hatte ein funktionierendes MACVLAN. Eine Erklärung dafür habe ich nicht gefunden, es lief so aber bei mir montaelang problemlos. Trotzdem würde ich empfehlen bei Installationen auf einer DS das Docker-Paket vorher auf die aktuellste Version zu bringen.

Öffnen wir also ersteinmal die Portainer-Weboberfläche, melden uns an und wählen unseren Endpoint (Host). Anschließend starten wir die Erstellung der "Configuration" mit einem Klick auf den Button "Add network" unter "Networks".

Im folgenden Dialog sind einige Felder zu füllen. Beginnen wir mit dem Namen. Ich werde dem MACVLAN nur eine einzelne IP-Adresse zuweisen. Daher bekommt mein MACVLAN auch einen eindeutigen Namen, weil es sich um die "Configuration" handelt, hänge ich noch ein "conf" dran: "iob_public_conf". Als Driver wählen wir natürlich "MACVLAN".

Weiter geht es zum nächsten Feld: Parent network card. Hier müssen wir angeben auf welche physikalische Netzwerkkarte wir unser MACVLAN binden wollen. An dieser Stelle liegt dann auch die Beurteilung "für fortgeschrittenen Benutzer" begründet. Denn mir ist bisher kein Weg bekannt diese Information der Weboberfläche der DS zu entlocken. Da hilft nur Kommandozeile raus und "ifconfig" rein.

Auf meiner virtuellen Test-DS liegt die lokale IP-Adresse (192.168.0.32) auf dem Interface eth0. Ich verwende also dieses.

Weiter geht es mit dem Abschnitt "Network configuration" Hier fülle ich die Informationen meinem Netzwerk entsprechend aus. Für "IP range" verwende ich die gewünschte IP-Adresse mit einer Präfixlänge von "/32". Dieses Netz enthält dann schließlich genau eine IP-Adresse.
Über den Button "Create the network" schließe ich die Erstellung der "Configuration" ab.

Die Erstellte "Configuration" sollte nun in der Liste der Netzwerke auftauchen.

Fehlt noch die "Creation". Um diese zu erstellen klicken wir erneut auf den Button "Add network" und geben einen Netzwerknamen an. Dieses Mal verwenden wir nur "iob_public" und wählen als "Driver" erneut "MACVLAN" aus. Anschließend klicken wir auf den Button "Creation" und wählen im Dropdownmenü "Configuration" unsere vorab bereits erstellte "Configuration" aus.

Über den Button "Create the network" schließen wir nun die Erstellung der "Creation" ab. Das neue Netzwerk erscheint in der Liste und ist bereit zur Verwendung.

Übernahme von ioBroker Daten aus anderem System

Immer wieder ein spannendes Thema ist auch die Übernahme von ioBroker-Daten aus einer bestehenden Installation. Im aktuellen ioBroker-Docker-Image sollte dies allerdings kein Problem mehr darstellen. Hier gibt es die Möglichkeit zum ersten Start des Containers bereits ein mit Daten aus einem anderen System gefülltes "/opt/iobroker"-Verzeichnis einzubinden. Scripte innerhalb des Containers kümmern sich dann im besten Fall um den Rest 😉

Hinweis: Eine Datenübernahme kann nur glücken wenn die Major-Node-Version übereinstimmt! Arbeitet auf dem Quellsystem noch eine ältere Node-Version, solltet ihr diese vor dem Umzug hochrüsten. Für den Container ab Version 4 auf node10.

Ansonsten reicht es zur Übernahme der alten ioBroker-Installation die Daten im Ordner /opt/iobroker auf dem (Linux-)Quellsystem per tar-Befehl in ein Archiv zu packen und auf die DiskStation bzw. den Docker Host zu transferieren. Über die FileStation auf der DS lassen sich die Daten dann komfortabel extrahieren und im späteren Mount-Verzeichnis (z.B. /volume1/docker/iobroker_data) ablegen. Das Verzeichnis wird dann beim Erstellen des Containers in selbigen gemountet und die alte Installation wird automatisch übernommen.

Damit sollten dann alle Voraussetzungen erfüllt sein und wir können den ioBroker Container erstellen.

OK, nachdem wir alle Voraussetzungen geklärt haben, sollte das Erstellen des Containers keine große Hürde mehr darstellen. Los geht es natürlich in der Portainer-Weboberfläche unter dem Punkt: "Containers".

Über den Button "Add container" gelangen wir in ein Formular. Auch hier sind wieder einige Felder zu füllen.

Als Namen vergeben wir zunächst einen aussagekräftigen Namen. Ich schlage "iobroker" vor (bei mir im Testumfeld "iobrokertest").

Das Image beziehen wir aus der Registry "DockerHub" und es heißt "buanet/iobroker:latest". Auch wenn wir es bisher nicht geladen haben, können wir es hier hinterlegen. Beim Erstellen des Containers wird das Image automatisch heruntergeladen. Achtung: Das könnte etwas Zeit in Anspruch nehmen!

Für den Fall dass ihr den ioBroker im Bridged Modus laufen lassen wollt, müssen im Bereich "Ports configuration" die entsprechenden Port-Weiterleitungen eingerichtet werden. Für den Admin ist das z.B. der Port 8081. Eine Liste der von ioBroker verwendeten Ports findet ihr dazu auch hier in der Knowledgebase.

In meinem Fall werde ich die MACVLAN-Konfiguration verwenden, welche wir im letzten Abschnitt bereits vorbereitet haben. Daher brauche ich an dieser Stelle keine Ports mappen (weiterleiten).

Den Bereich "Access control" können wir einfach ignorieren oder falls gewünscht natürlich auch entsprechend konfigurieren.

Scrollen wir nun nach unten finden wir einen Button "Deploy the container". Diesen drücken wir aber noch nicht! Zuvor konfigurieren wir noch ein paar "Advanced container settings".

Erster wichtiger Punkt hier: Volumes. Hier mounten wir unser lokales Verzeichnis in den ioBroker, damit unsere Daten lokal auf der DS bleiben und nicht aus Versehen mit dem Container gelöscht werden können. Dazu hatten wir ja bereits eine Ordnerstruktur angelegt, welche wir jetzt wie folgt einbinden.

Durch Klick auf "map additional volume" erscheinen zwei neue Felder. Im ersten Feld tragen wir den Pfad innerhalb des Containers (/opt/iobroker) ein und wählen anschließend den Button "Bind". Im zweiten Feld tragen wir den lokalen Pfad auf der DS ein. Dieser sollte natürlich "Writeable" (beschreibbar) sein.

Dann ist das Netzwerk an der Reihe. Hier wählen wir unser Netzwerk aus, in das wir unseren ioBroker einbinden wollen. In meinem Fall ist dies das MACVLAN Netzwerk "iob_public". Als Hostname schlage ich wieder "iobroker" vor (bei mir entsprechend "iobrokertest"). Weitere Einstellungen müssen hier nicht getätigt werden.

Unter "Env" können wir nun optional Einfluss auf die Umgebungsvariablen zur Containerkonfiguration nehmen. In meinem Fall habe ich zu Demonstrationszwecken mal die beiden variablen "AVAHI=false" und "PACKAGES=nano" gesetzt. Weitere Informationen zu verwendbaren Variablen gibt es hier in der Readme auf Github.

Das sollten dann auch die wesentlichen Einstellungen gewesen sein. Natürlich könnt ihr nach Bedarf auch noch weitere Optionen konfigurieren. Für unseren Fall sollte das hier aber reichen und wir können endlich den Button "Deploy the container" betätigen.

Je nachdem ob Portainer nun das Image noch laden muss, kann der Prozess eine Weile dauern. Im Anschluss sollte der neu erstellte Container in der Containerliste auftauchen.

Mit einem Klick auf den Containernamen in der Liste könnt ihr euch weitere Informationen zum Container anzeigen lassen. Wenn es unter "Stats" so

und unter Logs in etwa so

aussieht, dann hat wahrscheinlich alles geklappt und ihr könnt den ioBroker-Admin über den bekannten Weg "http://[name]:8081" oder "http://[IP-Adresse]:8081" aufrufen.

Hinweis: Der erste Start des Containers kann unter Umständen auch mal Minuten brauchen. Ursache ist das Startupscript das diverse Aufgaben ausführt. Sollte also euer ioBroker-Container laut Portainer laufen, ihr aber die Weboberfläche nicht erreichen, schaut bitte in die Logs des Containers (siehe etwas weiter oben), hier könnt ihr sehen wie weit das Startupscript ist und ob ioBroker schon gestartet wurde.

Jetzt läuft er also, unser neuer ioBroker-Container. Aber was nun? Ganz klar, erst einmal Adapter installieren und einrichten (worauf ich hier nicht weiter eingehen werde). Und dann? Was kommt sonst in Zukunft noch auf uns zu? Nun ja, nichts ist so kurzlebig wie Softwareversionen. Wer ein zuverlässiges und sicheres System betreiben will kommt um gelegentliche Aktualisierungen nicht herum. Im Folgenden gebe ich ein paar Hinweise was ihr wo und wie aktualisieren könnt/ solltet.

Adapter & js-controller aktualisieren

Fangen wir mit dem Teil an, der am häufigsten Aktualisierungen erfahren wird. Dem ioBroker selbst. Wie ihr vielleicht in der Knowledgebase bereits gelesen habt, befinden sich ioBroker und seine Adapter im Ordner /opt/iobroker. Da dieser Ordner auf eurer DS liegt und nur in den ioBroker Container eingehängt ist, werden Aktualisierungen des Containers auf ioBroker und seine Adapter keine Auswirkung haben. Ihr müsst diese Komponenten also immer separat aktualisieren. Dies erfolgt in der Regel über die Weboberfläche (den Admin) des ioBroker. Mit einem Klick auf das Symbol zum Updaten wird ioBroker eure Adapter vollautomatisch aktualisieren. Nun kann es allerdings vorkommen, das für einige Aktualisierungen die Kommandozeile bemüht werden muss. So zum Beispiel zum Updaten des js-controllers. Auch dies sollte aber kein Problem sein. Über Portainer habt ihr die Möglichkeit euch auf die Kommandozeile des Containers zu verbinden und so die nötigen Befehle abzusetzen.

Achtung! Aufgrund von Problemen beim Autostart verwende ich im ioBroker-Image nicht den ioBroker-Daemon (ioBroker-Dienst). Daher unterscheiden sich die Befehle zum Stoppen und Starten von ioBroker im Container. Eine detaillierte Beschreibung dazu findet ihr in der Knowledgebase zu meinen Tutorials.

Pakete innerhalb des Containers aktualisieren

IoBroker läuft im Container unter Linux. Jedes Betriebssystem benötigt früher oder später Systemupdates. Gleiches gilt für die ganzen Pakete die die Ausführung von ioBroker im Container erst möglich machen. Um diese Updates in eurem Container zu installieren habt ihr zwei Möglichkeiten. Die erste ist das manuelle installieren der Updates über die Kommandozeile im Container. Das funktioniert wie in jedem anderen Linux auch über den Paketmanager. Im Falle von Debian ist dies apt. Demnach könnt ihr die Updates wie folgt installieren:

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

Das System wird nun alle vorliegenden System-Updates automatisch laden und installieren.

Die zweite Möglichkeit zum Installieren der Updates ist das Aktualisieren des gesamten Containers wie ich es im nächsten Abschnitt beschreiben werde.

Container aktualisieren

Im letzten Abschnitt haben wir den Container ja aus einem heruntergeladenen Docker-Image erstellt. Dieses Image ist allerdings in der Regel einen Tag später schon veraltet, denn es wird jede Nacht automatisch eine neuere Version erstellt welche dann jeweils die neuesten Updates des Debian Grundsystems und aller installierten Pakete enthält. Weiterhin fließen in das Image auch immer wieder Änderungen und Bugfixes von mir ein, sodass auch aus diesem Grund die Aktualisierung des gesamten Containers ratsam ist.

Aber wie funktioniert die Aktualisierung des Containers eigentlich? Es ist wirklich ganz einfach. Im Prinzip müsst ihr nur den alten ioBroker-Container weg schmeißen und aus dem aktualisierten Image einen Neuen mit identischer Konfiguration erstellen. Mit Hilfe von Portainer sind das am Ende gerade einmal drei Klicks:

Ruft einfach euren ioBroker-Container in Portainer auf und stoppt ihn über die Bedienschaltflächen. Anschließend wählt ihr "Recreate" und aktiviert den Switch "Pull latest Image". Dann nur noch auf "Recreate" klicken und Ruhe bewahren. Portainer läd nun voll automatisch die neueste Version des verwendeten Images herunter und erstellt den Container mit der selben Konfiguration neu. Anschließend müsst ihr den Container lediglich wieder starten und der Container ist auf die neueste Version aktualisiert. Einfacher geht es nicht!

Hinweis: Sollte doch mal etwas schief gehen, dann löscht den "Unfall" einfach und erstellt manuell einen neuen Container, wie bereits unter "Neuen Container erstellen" beschrieben. Dass ihr euch vorher am Besten ein Backup des ioBroker-Ordners (iobroker_data) auf der DS angelegt habt, brauche ich an dieser Stelle wohl nicht extra erwähnen, oder etwa doch? 😉

Datensicherung

Über kurz oder lang kommt jeder an den Punkt an dem man sich Gedanken über das Thema Backup machen sollte. Die Meisten kommen dort allerdings erst an, wenn einmal Daten verloren gegangen sind. Das muss aber nicht sein. Wie ich mein Backup mache habe ich ja bereits im alten Tutorial beschrieben. Dieser Teil hat sich auch mit der neuen ioBroker-Version nicht geändert und ist damit auch weiterhin gültig.

Damit sind wir am Ende dieses Tutorials angelangt. Wie immer gilt: Ich freue mich auf euer Feedback. Gerne auch wenn es bei eurer Umsetzung keine Probleme gab/ gibt. Bitte seht nach Möglichkeit davon ab mich bei Fragen persönlich zu kontaktieren. Support gibt es ausschließlich über die öffentlichen Kommentare und das ioBroker-Forum. Vielen Dank für euer Verständnis.

Im folgenden nun noch einmal eine kurze Übersicht über die relevanten Links zum Thema.

Quellcode und Docker-Image

Wer sich für den Quellcode zum Docker-Image interessiert, der wird in meinem Github-Repo fündig. Das fertige Image wird letztendlich in den Docker Hub gepusht und kann von dort in jegliche Docker-Installation herunter geladen werden.

Allgemeines zu Docker und Synology DiskStation

Allgemeine Infos und Grundlagen zu Docker findet ihr auf docker.com oder auch bei Wikipedia. Wärmstens empfehlen, aber leider nur in Englisch verfügbar, kann ich außerdem die offizielle und sehr umfangreiche Docker-Dokumentation.
Infos zum Docker-Paket für die Synology DiskStation gibt es natürlich auf der Webseite von Synology.

Knowledgebase

Wie bereits mehrfach innerhalb des Tutorials angesprochen und verlinkt, habe ich für weiterführende Informationen und Erläuterungen zu meine Tutorials eine kleine Knowledgebase angelegt. Hier werde ich auch den ein oder anderen "Best Practice" Hinweis plazieren.

Support

In Sachen Support kann ich nur immer wieder auf den tollen Support im ioBroker-Forum hinweisen. Mittlerweile haben wir auch eine recht starke Docker-Fraktion die sich viel Mühe gibt aufkommende Fragen zuverlässig zu beantworten und bei Bedarf Ünterstützung zu geben. Erstes Anlaufziel bei Fragen zum Tutorial sollte für euch mein ioBroker-Forum-Threat sein. Für kurze, einfache Problemchen bietet sich zwar auch die Kommentarfunktion unter diesem Tutorial an. Wenn es dann allerdings um Screenshots und Logfiles geht, sind die Möglichkeiten an dieser Stelle leider sehr begrenzt.

Veröffentlichung am 04. Mai 2019

Mit der Veröffentlichung des neuen Tutorials sowie der neuen Image Version 3 wird das alte Tutorial abgelöst, ist aber weiterhin einsehbar.

Überarbeitung am 29. Juni 2019

Kleinere Anpassungen und Korrekturen. Änderung der Infobox zum "MACVLAN-Synology-Bug".

Überarbeitung am 21. August 2019

Wegfall der Beschränkungen zur Verwendung des Host-Modus auf der Synology DiskStation nach Anpassungen im Docker-Image.

Umfangreiche Überarbeitung am 23. Oktober 2019

Zum bevorstehenden Release der neuen Image Version 4 wurde das komplette Tutorial überarbeitet, neu strukturiert und auf den aktuellen Stand gebracht.

Überarbeitung am 18. Februar 2020

Kleinere Korrekturen und Anpassung an neues Layout.

About the author: André

André
Familienvater und bekennender Technik-Nerd. Beruflich unterwegs als Fachinformatiker für Systemintegration bei einem deutschen IT-Dienstleister. In der Freizeit begeisterter "Home-Automatisierer" bzw. "Smarthome-Bastler" und (zumindest bei schönem Wetter) gerne mit der Familie in verschiedenen Outdooraktivitäten unterwegs.
Abonnieren
Benachrichtige mich zu:
guest
325 Kommentare
Inline Feedbacks
View all comments
PFGSnoopy

Ich habe ein eigenartiges Verhalten festgestellt: Ich hatte über Portainer das aktuelle ioBroker image (buanet/iobroker:latest) genutzt, um einen Container zu kreieren und zu starten. Danach habe ich meine komplette Konfiguration vom Raspberry Pi in das Volume des Docker Containers gepackt und alle Aktualisierungen durchgeführt. Es lief jetzt für 3 Tage alles stabil und seit ich gestern Abend den Host nach einem Ubuntu Update neu starten musste, läuft der ioBroker zwar noch, aber es sind plötzlich keine Ports mehr freigegeben und so komme ich weder an das Web Frontend noch an den MQTT Broker… Nachdem ich mir nicht mehr zu helfen… Mehr lesen »

vsa

Hallo zusammen,
danke @andré für die tolle Anleitung. Es hat 1zu1 alles wunderbar geklappt. Außer meine Yahka Instanz – sie ist zwar grün aber APple findet kein yahka.
Avahi habe ich als Umgebungsvariable in Portainer auf true gestellt, aber Homekit zeigt mir auch dann nichts an…

Hat jemenad von Euch eine Lösung?

Willi

hallo Andre, Danke für den Tipp an Pattrick, Ich war auch schon lange den Fehler am suchen …
Mit der Beta klappt es!! (Raspi 4B, 4G, 128G SSD)
Liebe Grüße
Willi

Marcus

Hallo André, ich bin in das gleiche Problem gelaufen, das Patrick im vorherigen Kommentar hatte. Daher bin ich deiner Empfehlung gefolgt und habe das beta Image verwendet. Nun läuft der Start schon etwas weiter aber ich laufe in ein nächstes Problem: In den Stats sieht es soweit gut aus: root 10609 10592 0 23:11 ? 00:00:00 /bin/bash /opt/scripts/iobroker_startup.sh 1000 11368 10609 0 23:11 ? 00:00:07 iobroker.js-controller 1000 11413 11368 0 23:11 ? 00:00:03 io.admin.0 1000 11463 11368 0 23:11 ? 00:00:02 io.discovery.0 1000 11505 11368 0 23:11 ? 00:00:03 io.info.0 root 15092 10592 0 23:17 pts/0 00:00:00 bash Aber im… Mehr lesen »

Uwe Oltmann

Hallo ich habe nach der Anleitung iobroker auf der Synology DS216+II installiert. Zuerst hatte ich das Problem das ich die Admin Seite nicht aufrufen konnte. Dann habe ich die Frage von Patrick Zürndorf gelesen und habe so wie du in deiner Antwort darauf geschrieben hast, die Beta Version installiert. Damit kann ich alles aufrufen und bedienen. Es gibt aber noch ein Problem, und zwar wenn ich den IOBroker stoppen möchte um z.B. ein Update des JS Controllers zu machen. Wenn ich in der Console mit dem Befehl iobroker stop eingebe, zeigt mir die Antwort an, das kein daemon läuft. die… Mehr lesen »

Markus Lommer

Hallo, danke für dieses Tutorial.

Leider bekomme ich den iobroker nicht zum Laufen. Alles nach Anleitung gemacht (MACVLAN). Wie im Kommentar von Patrick angegeben habe ich die beta Version genutzt.

Meine Logs sind:

[EDIT: Log entfernt!]

Bei den stats tauchen nur zwei Einträge auf:

root 1087 1070 0 08:04 ? 00:00:00 /bin/bash /opt/scripts/iobroker_startup.sh
1000 1673 1087 0 08:05 ? 00:00:01 iobroker.js-controller

Kannst du mir sagen, wo hier mein Fehler liegt?

Danke und Gruß
Markus

Patrick Zündorf

Hallo, ich bin deiner Anleitung Schritt für Schritt gefolgt und habe nun das Problem, dass der iobroker über den Browser nicht erreichbar ist. Meine Logs sehen wie folgt aus: [Edit – Log entfernt] Meine Stats sehen so aus: root 8161 8144 0 20:24 ? 00:00:00 /bin/bash /opt/scripts/iobroker_startup.sh 1000 8867 8161 0 20:24 ? 00:00:01 iobroker.js-controller root 9037 8144 0 20:25 pts/0 00:00:00 bash Ich habe zusätzlich über das Terminal im Container folgenden Befehl ausgeführt: curl -sLf https://iobroker.net/install.sh | bash – leider alles ohne Erfolg. Ich habe den Docker den Portainer bestimmt 20 mal neu installiert aber lande immer beim gleichen… Mehr lesen »

kszaboa

Danke für die echt super Anleitung! Bei mir startet iobroker v. 4.2 leider gar nicht, im Log bleibt es bei Step 5 „host.iobroker.v.4.0 check instance „system.adapter.info.0“ for host „iobroker““ stehen, WebGUI ist nicht erreichbar. 4.0 startet aber problemlos. Woran liegt es?
Setup: DS415+ (Atom CPU), DSM 6.2.3

Last edited 2 Monate her by kszaboa
tege0

Hallo Andre,
vielen Dank für das super Images und dem Tut. Hat super geklappt auf meiner DS218+.

Ich versuche mich gerade an dein Backup Empfehlung, hier funktioniert es leider nicht so wie beschrieben und auf git steht auch noch etwas mehr wobei ich nicht weis, ob das beachtetet werden muss z.b. die stop.sh und aus der Anleitung die iobroker.json. Denke über den gebrach von Backitup nach aber kann dies nicht einrichten da per FTP die Ports eingerichtet werden muss und per option NAS auch rechte fehlen. Versteh ich es richtig das mit deinem Backup der Container immer gestopt wird?

Daniel

Hallo André, noch eine Frage von mir (auch wenn das hier eigentlich kein Supportforum ist). Ich bin nun mit meinem ioBroker von meinem Pi3B+ (ARM7) in einen Container auf meiner DS218+ (x86-64) umgezogen. Die automatische Übernahme der alten Installation über /opt/iobroker vom Pi abgezogen und in den Container gemountet hat nicht funktioniert, aber eine händische Installation „entschlackt“ ja auch prima..! Dabei ist mir nun aufgefallen, dass die einzelnen Adapter im Container auf der DS218+ teilweise knapp den doppelten Speicherhunger haben wie auf dem Pi. Ist das normal? Liegt das an der Architektur (ARM vs X86) oder an meinem 64-bit Container… Mehr lesen »

Ralf

Hallo,
ich habe heute mal neu installiert.
Leider haben alle Dateien und Verzeichnisse in /opt/iobroker den owner 999. Dadurch kommt es zu vielen EAACCESS Fehlern. Auch ein ändern des Owners auf iobroker bringt keine Abhilfe. Nach einigen Sekunden gehören die wieder 999.
Falls es wichtig ist, /opt/iobroker liegt auf einem Volume meines Synology.
Hast du eine Ahnung was das sein kann?

Daniel

Hallo André,

tolle Arbeit hier. Ich habe mir das meiste zum Thema ioBroker im Docker-Container von Deiner Seite gelesen und bin nun vom Pi3 auf meine Synology NAS umgezogen, allerdings ohne Portainer.
The (theoretische) Frage bleibt daher: Du beschreibst, wie man den Container mithilfe von Portainer aktualisiert. Geht das ähnlich einfach auch mit den Synology-DSM-Bordmitteln oder komme ich da um eine Installation von Portainer nicht umhin?

Beste Grüße
Daniel

Holger

Hallo André, danke für diesen tollen Container. Leider wird für den Container kein IP-Port veröffentlicht, auch nicht wenn man im Portainer diesen manuell einträgt. Bei manuellem Eintrag bekomme ich beim „Deploy“ eine Fehlermeldung (undefined is not an object (evaluating ‚e.ExposedPorts[n]={}‘)). Ich habe ein AsuStor auf dem Docker (Vers. 19.03.08) und Portainer (Vers. 1.23.2) läuft. Als Netzwerk nutze ich die Bridge, da ich die Kommunikation zwischen den Containern benötige. Auch die ENV-Variable „IOB_ADMINPORT“ ist auf 8081 gesetzt. Einzig eine Route, die ich in meiner FritzBox eintrage für das Bridge-Netz, ermöglicht dann den Zugriff auf ioBroker mit der Container-IP und dem Port.… Mehr lesen »

mr-energy

Hallo Andre, vielen dank für diese tolle arbeit. Leider komme ich nicht weiter mit meiner installation weder im Netzwerkmodus host noch in macvlan. Ich würde gerne macvlan einrichten scheitere aber bei der Network config. Habe hier per ssh die eth0 ausgewählt mit meiner NAS IP 192.168.178.49. Den nächsten Schritt verstehe ich nicht Subnet wäre ja evtl. 255.255.255.0 oder muss hier die 192.168.178.0 rein? Genauso bei Gateway ist hier der Router gemein also in meinen fall die 192.168.178.1? Als IP soll der Container mit iob auf 192.168.178.81 laufen entsprechend ahbe ich die 192.168.178.81/32 bei IP Range eingesetzt. Versuche ich mich jetzt… Mehr lesen »

Torsten

DNS Problem? Bei mir funktioniert die DNS-Auflösung nicht. In der Console ping nach 1.1.1.1 geht.
ping http://www.google.de geht nicht. Temporärer Fehler bei der Namensauflösung.
cat /etc/resolv.conf
nameserver 127.0.0.11
Wie ist das geregelt mit DNS ?

Glenn

Autostart ? Hallo noch mal. Gestern hatte ich einen Stromausfall und die NAS war aus. Von der alten Version bin ich gewohnt das IOBroker nach dem einschalten automatisch startet. Kann man das auch hier einstellen ? Und wenn ja wie 🙂

Raimund

Hallo

Ich bin am verzweifeln. Habe eine Version 2 2.2.9 am laufen . Aber ich bekomme es nicht hin die V3 auf meiner DS216+
zu installieren . Egal welches Image ich verwende es wir immer die Version 2 installiert.
Betriebssystem
linux
Betriebssystem
linux
Architektur
x64
CPUs
2
Geschwindigkeit
1601 MHz
Modell
Intel(R) Celeron(R) CPU N3060 @ 1.60GHz
RAM
7.72 GB
System Betriebszeit
43 T. 19:29:45
Node.js
v12.16.2 (Es gibt eine neuere Version: v12.16.3)
NPM
6.14.4

Vielleicht kann mir ja jemand helfen

Sören

Ich habe vor kurzem von v1 auf v3 „geupdated“, dabei ist mir aufgefallen, dass Node.js
mit v10.x installiert wird. Empfohlen wird derweil v12.x – besteht die Möglichkeit, dass du den Container hinsichtlich der Node.js aktualisierst? Ich hatte bereits ein Update versucht, aber das verursacht mir Kopfschmerzen.

Stefan

Offensichtlich mit viel Liebe zum Detail umgesetzt, leider komme ich nicht weiter und bevor ich im Git einen issue generiere, der vielleicht selbst generiert ist frage ich erst einmal hier. Ich versuche Dein Paket auf einem Pi4 mit 4GB und installiertem Raspbian lite, Docker und Portainer zum Laufen zu bringen. In Verwendung ist ein MACVLAN wie von Dir beschrieben. Sobald der Container startet endet es irgendwann in der folgenden Zeile: hash changed or no sources cached => force download of new sources Leider bleibt es dann an dieser Stelle so stehen. Es erfolgt keine weitere Ausgabe. Auf die Konsole des… Mehr lesen »

Dirk Gerspacher

Hallo Andre,
erstmal Danke für dein Tutorial um den iobroker auf die Diskstation zu bringen. Hatte es bereits mit deiner alten Anleitung geschafft. Auch mit der neuen Anleitung war das kein Problem. Jetzt läuft wieder alles und iobroker sowie das ganze System sind auf dem neuesten Stand. Auch der „Umzug“ hat problemlos geklappt.

Dafür wollte ich einfach mal Danke sagen.

Grüsse aus Kaiserslautern.

Dirk

Glenn

Hallo ! Nach dem ich meine alte Version geschrottet habe wollte ich nun mit der neuen Anleitung mir die V3 neu istallieren. Ich habe den Portainer sauber zum laufen bekommen. Ich habe die macvlan istatalation benutzt. Der Container ist meiner Meinung nach gestartet, aber im log sieht man das NANO nicht herunter geladen werden konnte. Wo liegt mein Fehler ? Die Admin Seite ist nicht erreichbar. —– System —– —– arch: x86_64 —– —- —– —– Versions —– —– image: v4.2.0 —– —– node: v10.20.1 —– —– npm: 6.14.4 —– —– ENV —– —– AVAHI: false —– —– PACKAGES: nano… Mehr lesen »

Armin

Hallo !
Ich habe dank deiner Anleitung von 2017, ioBroker im Docker auf meiner Syno laufen und inzwischen stark ausgebaut. An das JS-Controller Update (Stand V 1.4.2) und an deine Anleitung V3 habe ich mich aus Furcht vor Totalverlust noch nicht herangewagt. Habe bisher nur die Adapter aktualisiert, sonst nichts. Also der ioBroker Stand ist abgesehen von den Adaptern noch von 2017.

Wo finde ich eine Schritt für Schritt Anleitung an der ich mich sicher entlang hangeln kann, um aus dieser Update-Falle herauszukommen ? Habe leider nicht wirklich was gefunden ?

Vielen Dank !!

Peter

Hallo Andre, vielen Dank für das tolle Tutorial. Habe jetzt mal auf der Synology das MACVLAN (auf einem bond0 aller 4 LANs) eingerichtet und auch gleich den redis als Docker drauf gesetzt – tut alles wunderbar und redis antwortet auf dieser Adresse – so weit so gut. Wenn ich nun den ioBroker mit dem MACVLAN als Netzwerk starten will (mit Environment variable gesetzt: REDIS=MACVLAN-IP-Adresse:6379) startet der Container erst gar nicht und Portainer meldet einen Failure mit „no available IPv4 adresses on this networks’s address pools:MACVLAN“. Bin mir nicht sicher wo das Problem zu suchen ist – MACVLAN Setup? oder behaken… Mehr lesen »

Michael

Hallo und erst mal Danke für das tolle Tutorial!
Bei mir läuft iobroker nach dem Umzug vom Raspi super auf einer DS218+ allerdings habe ich folgendes Problem:
Vom PC (zusammen mit der DS218 auf einem Switch) komme ich an alle Seiten ran, auch an den iobroker. Hue, CCU laufen auch damit (per kabel an der Fritzbox) . Über das WLAN meiner Fritzbox komme ich aber nicht auf die Webseiten des iobroker, kann die IP aber anpingen. Die Antwort im Browser ist „Connection refused“.

Wo muss ich jetzt nach meinem Fehler suchen?

Gruß
Michael

Guido

Hallo, localhost:8082 kann ich im Docker nicht erreichen, was läuft nicht richtig?