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.

218
Hinterlasse einen Kommentar

avatar
10000
63 Kommentare
155 Antworten
9 Abonnenten
 
Meiste Antworten
Beliebtester Kommentar
65 Kommentatoren
Matze77AndréChristianSteffkatja Letzte Kommentatoren
  Abonnieren  
Benachrichtige mich zu:
Matze77
Gast
Matze77

Hallo,

wie kann ich den Hostname im Docker dauerhaft umbenennen? Jedesmal wenn der Docker neustartet stehen als Hostname diese Zeichenabfolge „a394c6d6b3b6“.

Vielen Dank für Deine Mühe die Du hier Investierst.

Viele liebe Grüße
Mathias

Christian
Gast
Christian

Hallo,
seit ein paar Tagen erhalte ich bei dem Versuch die Adapter zu aktualisieren, folgende Fehlermeldung im Log.
warning: empty repo received!
warning: Cannot read http://download.iobroker.net/sources-dist-latest.json
Habt ihr einen Tipp, wie ich das beheben kann?
Vielen Dank im Voraus.
Liebe Grüße,
Christian Fiedler

Steff
Gast
Steff

Vielen Dank für deine Anleitung, die V2 läuft bei mir immernoch 1A. Wollte jetzt einem Bekannten die neue Version installieren, bei Erfolg dann ebenfalls umsteigen und daran scheitert es schon…. – Docker ist installiert – Portainer ist installiert – in Portainer bei Netzwerk muss ich ja nichts einstellen, da ich den „host“ Mode nutzen möchte – Container installieren… – bei Volumes, auf + , dann auf Bind und die Pfade eingeben, /opt/iobroker und /volume1/docker/iobroker_data – Network, noch host auswählen – er installiert auch alles soweit, aber ich komme einfach nicht auf den ioBroker drauf IP der DS 192.168.178.12 Fritzbox 192.168.178.1… Mehr lesen »

Katja
Gast
Katja

Vielen Dank für Deine Anleitungen, sie sind sehr informativ!

Leider stosse ich an einer Stelle auf folendes Problem:
beim Schritt „Create Container – Map additional Volume“
steht zu Beginn der letzten Zeile bei mir nicht „host“ sondern „volume“.
ich kann kann im darauffolgenden Feld nichts eintragen ( laut deinem Beispiel /volume1/docker/iobroker_data)
sondern nur auswählen.
Alle gelisteten Optionen bestehen aus einem langen String beendet mit -local
zB: 52cf6cd8f7b85…-local
(der string ist in dem Auswahlmenue länger, enthält aber auch „…“ vor dem -local)

diese Bezeichnung finde ich weder auf der DSM Oberfläche, noch auf der Comandline der DS.

Irgendwelche Ideen dazu?

Vielen Dank und liebe Grüße Katja

Anni
Gast
Anni

Hallo,
obwohl ich mich streng an die Anleitung gehalten habe, scheint mein ioBroker nicht zu starten. Das Log endet mit „Starting ioBroker…“ (auch nach 45 Min. ändert es sich nicht) und unter Stats sind nur 2 Prozesse zu sehen. Im Log sind auch zwei Fehlermeldungen wegen eines „Einstelligen Operators“ zu sehen:

/opt/scripts/iobroker_startup.sh: Zeile 169: [: !=: Einstelliger (unärer) Operator erwartet.

/opt/scripts/iobroker_startup.sh: Zeile 192: [: 8081: Einstelliger (unärer) Operator erwartet.

Die zwei Prozesse:
root 22854 22838 0 21:11 ? 00:00:00 /bin/bash /opt/scripts/iobroker_startup.sh
root 23521 22854 0 21:12 ? 00:00:00 tail -f /dev/null

Ist es richtig, dass im Log steht: „System arch: x86_64“? Die Synology ist doch kein x86-Rechner?
Hat jemand eine Idee?
Gruß
Anni

anni
Gast
anni

Hallo,
danke für die ausführliche Anleitung, damit habe ich auch als Nicht-Linuxer sehr viel verstanden.
Leider wird die Installation im Host-Modus nur ein mal angesprochen. Habe ich es richtig verstanden, dass ich damit das gesammte Kapitel „Vorbereitungen für MACVLAN“ vollständig ignorieren kann?
Noch eine zweite Frage: Ich habe einen laufenden ioBroker im Docker aus der alten Anleitung am laufen. Ich würde nun gern einen zweiten neuen Container nach der neuen Anleitung parallel bauen um den alten nicht anzutasten. Ist das eine Gute Idee? Portprobleme sollten doch nicht auftreten, solange ich immer nur Einen laufen lasse, oder?
Gruß
Anni

Sascha
Gast
Sascha

Hallo Andre, da sich nun manche Adapter nicht aktualsiseren lassen weil sie eine Version 2.00 des JS. controllers oder höher benötigen. Muss ich wohl oder über updaten 🙂 (Hab mich bisher gedrückt.) 1. Ich habe meine INstalltion dank deiner Tollen Anleitung zu deinem Docker Image V2.0.0 am laufen. Inlusive der von Dir beschriebenen Vorgehensweise der Datenausgliederung und des Backups. 2. Nun stehe ich zugleich vor mehrere Fragen die ich nicht selber ganz durchblicke. 1. Wenn ich auf eine höhere Version deines Docker Images will, kann ich dann mit dieser Anleitung hier auf Version 3 (oder welche Unterversion ) oder auf… Mehr lesen »

Thaddäus
Gast
Thaddäus

js-controller Update geht mit folgender Anleitung nicht:

https://buanet.de/knowledge-base/steuerung-iob-ueber-kommandozeile/

Hi, ich bekommen den js-controller nicht geupdatet.
In der Console des iobroker Containers gebe ich folgende befehle ein:

1. pkill io
2. iobroker update

dann folgt die Meldung:
/usr/bin/iobroker: Zeile 1: /node_modules/iobroker.js-controller/iobroker.js: Datei oder Verzeichnis nicht gefunden

kann mir bitte jemand dabei helfen?

Christian
Gast
Christian

Hallo André, vielen Dank für die super Anleitung!
Bei mir läuft das ganze nun auf einem QNAP TS251+.
Ich hätte lediglich eine Frage. Wie bekomme ich es hin, dass der ioBroker-Container automatisch startet?
Viele Grüße,
Christian

Josef
Gast
Josef

Hallo André, ich habe den iobroker nach Deiner schönen Anleitung promt zum laufen bekommen – vielen Dank dafür! Jetzt wollte ich noch zusätzlich meinen pihole als Docker-Container laufen lassen, und wollte dafür ein zusätzliches MACvLAN einrichten. Durch viel Ausprobieren habe ich jetzt 3 MACvLAN_confs, die nicht mehr gelöscht werden können. Es heißt immer, sie wären „in use“. Ich habe aber noch keine Container dafür in Verwendung, und noch nicht mal die eingerichteten Networks (deren Einrichtung wurde jeweils mit Fehlermeldung abgebrochen, da die IP-Adresse des Gateways angeblich schon in Verwendung war). Ich weiß nicht mehr weiter. Auch der Befehl „docker network… Mehr lesen »

Hannes
Gast
Hannes

Danke für die Anleitung. Das hat soweit (fast) problemlos funktioniert. In dem Container wird iobroker leider nicht gestartet. Es scheint sich dabei um das host-problem zu handeln, dass Du auch im letzten Jahr bereits mit diskutiert hattest. Dies ist der Status direkt nach dem klick auf „deploy container“. Hast Du eine Idee wie man das fixen kann? Mein Log zeigt am Ende folgendes: Starting ioBroker… host.Diskstation check instance „system.adapter.admin.0“ for host „Diskstation“ host.Diskstation check instance „system.adapter.discovery.0“ for host „Diskstation“ host.Diskstation check instance „system.adapter.info.0“ for host „Diskstation“ (node:1020) UnhandledPromiseRejectionWarning: ParserError: Protocol error, got „H“ as reply type byte. Please report this.… Mehr lesen »

Christian
Gast
Christian

Hallo und vielen Dank für die tolle Anleitung. Ich habe Portainer problemlos auf meiner DS218+ zum laufen bekommen, habe nun aber ein Problem bei der Erstellung des iobroker Containers. Ich kann in den Einstellungen kein Volume auswählen. In Menü steht nur local. Der Punkt Host ist nicht wählbar, demnach auch kein lokales Verzeichnis auf der DS. Hast Du eine Idee wo hier das Problem liegen könnte?

Johannes
Gast
Johannes

Hallo Zusammen, erstmal herzlichen Dank an André! Leider klappt bei mir die Installation auf der DS218+ mit aktuellem DSM nicht problemlos. Ich bekomme folgende Fehlermeldungen (s.u.) im Log. Der iobroker Container läuft, iobroker ist aber nicht über das Webinterface zu erreichen. Ich möchte den Container in der Netzwerkumgebung meiner DS betreiben, also ohne MACVLAN. Ich würde mich sehr freuen wenn ich hier hilft finden würde. Mit den besten Grüßen Johannes … ————————————————————, —– Step 5 of 5: ioBroker startup —–, ————————————————————, , Starting ioBroker…, , host.Graf_D check instance „system.adapter.admin.0“ for host „Graf_D“, host.Graf_D check instance „system.adapter.discovery.0“ for host „Graf_D“, host.Graf_D… Mehr lesen »

Matthias
Gast
Matthias

Hallo zusammen, ich habe folgendes Problem und hoffe ihr könnt mir helfen: Seit geraumer Zeit läuft auf meiner DS918+ der iobroker in einem Docker Container. Dieser wurde von mir nach der hier veröffentlichten (alten Anleitung) eingerichtet und läuft bislang tadellos. Leider ist die Performance meiner DS – aus mir unerklärlichen Gründen – unterirdisch schlecht, wenn der Dockercontainer aktiv ist und ist somit für jeglichen anderen Aufgaben unbrauchbar. iobroker läuft, aber ich kann alle anderen Funktionen meiner DS leider nicht mehr nutzen. Die Auslastung des Systems, die man sich in Docker anzeigen lassen kann, ist sehr niedrig. Und auch die Gesamtauslastung… Mehr lesen »

Max
Gast
Max

Ich würde gerne die Sonos http api zum Laufen bringen. Installieren konnte ich es, aber den Autostart des Service bekomme ich nicht hin. systemd oder systemctl funktioniert ja leider nicht, weil es wohl in der Distribution nicht enthalten ist ?! Gibt es andere Möglichkeiten ? Im iobroker Forum bin ich leider nicht weitergekommen, da wohl vorwiegend andere Distributionen zum Einsatz kommen, bei denen es so funktioniert.

Christof
Gast
Christof

Hi,
ich nutze noch den Container von der „vor MACVLAN“ Ära. Dort läuft nodejs in der Version 8.
Um auf dem letzten Stand zu bleiben und die Vorteile von MACVLAN nutzen zu können, möchte ich nun den Container updaten.
Sehe ich das richtig, dass ich meine ioBroker Installation einfach in einen neuen Container umziehen kann und danach nur „npm rebuild“ ausführen muss, um die Adapter für nodejs 10 zu kompilieren?
Oder muss ich vorher meine Installation auf nodejs 10 hochziehen?

Danke und bis bald
Christof

Daniel Mehne
Gast
Daniel Mehne

Hallo André, leider bekomme ich aus dem iobroker docker Container keinen zugriff auf die Diskstation, um dort openHAB mit Iobroker zu verknüpfen. Ich habe iobroker mit MACVLAN eine eigene IP gegeben. Soweit funktioniert iobroker auch, aber ich erhalte keinen Zugriff auf die Diskstation, weder um meinen CALDAV Kalender in iobroker einzubinden, oder openHAB ebenfalls auf der Diskstation oder die Diskstation als FTP-server.

hast Du einen Tipp für mich???

Viele Grüße

Daniel

Timo
Gast
Timo

Hallo Andre,

Ich verzweifle so langsam mit dem iobroker als Docker Image. Evtl kannst du mir in diesem Forumsbeitrag weiterhelfen. Vielen Dank schon vorab

https://forum.iobroker.net/topic/27805/javascript-updaten-mit-iobroker-im-synology-docker

Frank Hermes
Gast
Frank Hermes

Hallo, erstmal vielen Dank für die tolle Anleitung. Sie hat mir bei der ersten einrichtung von IOBroker auf meiner DS sehr geholfen. Nun habe ich etwas erfahrung gesammelt und möchte gerne noch folgendes zum MACVLAN-Netzwerk hinzufügen. Der Netzwerkport muss nicht eth0 oder eth1 heißen, in meiner DS hat er den namen ovs_eth0 und ovs_eth1. Benutze ich ovs_eth0 wo die IP der DS drauf liegt, ist diese aus IOBroker nicht mehr erreichbar. Nutze ich allerding ovs_eth1 kann ich nun die DS weiterhin normal erreichen. Im meinen fall war es für die Maria DB welche auf der DS läuft notwendig. Ich muss… Mehr lesen »

Robert
Gast
Robert

Hallo André, danke für die ausführliche Anleitung. Mittlerweile habe ich es geschafft, das MACVLAN-Netzwerk zu erstellen. Der iobroker bekommt in meiner FritzBox auch die von mir zugewiesene IP-Adresse, allerdings öffnet sich kein Port. Außerdem bekomme ich in den Logs im 5. Schritt immer nur folgende Meldung, danach geht es dann nicht mehr weiter: Cannot send diag info: ETIMEDOUT Cannot download json from http://download.iobroker.net/sources-dist-hash.json. Error: Error: ETIMEDOUT Cannot download json from http://download.iobroker.net/sources-dist.json. Error: Error: ETIMEDOUT Was kann ich da tun? Scheinbar bekommt der ioBroker keine Verbindung zum Internet, denn die IP erscheint zwar in meiner FritzBox, allerdings nicht mit dem sonst… Mehr lesen »

Jens
Gast
Jens

Hallo Andre, ich habe mich jetzt mehrfach durch Deine Seiten gewälzt, auch im iobroker Forum hoch und runter gelesen.. Leider kriege ich es einfach nicht hin, in iobroker mittels sql-adapter auf eine mariadb10 zu connecten. 🙁 Eigentlich war der Plan, so wie Du es auch machst, für das E3DC Logging eine DB zu verwenden, daher hab ich im ersten Ansatz mariadb10 + phpmyadmin auf die DS (DSM) installiert. Später anhand der Forumsbeiträge gelesen und verstanden, dass die Kommunikation so nicht geht (ein und diesselbe phys. Adresse). Dann wollte ich die mariadb10 als weiteren Container mit Bridge-Netzwerk aufnehmen, und iobroker zusätzlich… Mehr lesen »

Matze
Gast
Matze

hallo André,

super Arbeit das Tutorial, habe sowei alles hinbekommen Iobroker läuft im macvlan und ist auch unter der ipadresse:8081 ansprechbar die webui geht auf und der blaue Balken läuft durch. Das war es aber auch schon ich kann nichts anklicken oder sonst etwas machen.
in den logs seht:

Starting ioBroker…

host.iobroker check instance „system.adapter.admin.0“ for host „iobroker“
host.iobroker check instance „system.adapter.discovery.0“ for host „iobroker“
host.iobroker check instance „system.adapter.info.0“ for host „iobroker“

und mehr nicht. Hängt er!?!

was kann ich da tun?

Vielen Dank
Matze

Noel
Gast
Noel

Guten Abend André, ich habe dein IOBroker-Container neben Docker und Portainer auf meinem RPi4 installiert. Nun habe ich nur einige Adapter installiert, noch nichts wirklich eingerichtet. Außerdem habe ich über Docker ein Network erstellt, sodass ich über die 192.168.178.6:8081 darauf zugreifen kann. Nun ist mir aufgefallen, dass die logs die ganze Zeit Fehler schmeißen. Magst du vielleicht einmal drüberschauen oder mir einen Tipp geben. Ich habe erst vor ein paar Tagen das erste mal Docker und IOBroker installiert und benutzt. Vielen Dank für die Mühe. https://pastebin.com/Lxf82yQP Log-File ist mittlerweise etwa 10MB groß, also pastebin ist nur ein kleiner Ausschnitt, falls… Mehr lesen »

Sven
Gast
Sven

Hallo André, ich habe ein großes Problem. Ich erreiche den Portainer nicht mehr. Vorab habe ich die V3 vor vielen Monaten problemlos installiert. Vor ein Tagen, habe ich mein Netzwerk etwas umgebaut (Subnetz auf 255.255.254.0 erweitert) Der Ip Bereich ist jetzt von 192.168.0.1 – 192.168.1.254. Da ich dachte, dass diese Umstellung mit dem Problem zu tun hat, habe ich den Portainer und ioBroker Container in der Synology gelöscht und auch das erstellte maclan Netzwerk. Um alle Einstellungen neu machen zu können, habe ich auch die Daten im Portainer_Daten Ordner gelöscht. Ich kann machen was ich will, auch nach mehrmaliger Neuinstallation… Mehr lesen »

Max
Gast
Max

Ich hatte eine ältere buanet/iobroker Installation mit node.js V6. Diese lief erfolgreich im Host Modus. Heute habe ich mich rangesetzt mit dem Ziel, möglichst auf die V4 zu gehen. Dazu habe ich node.js aktualisiert und auch ein neues Abbild genutzt. Portainer habe ich erfolgreich installiert. Leider gelingt es mir nun nicht mehr, iobroker im Host Modus zu betreiben Ich komme mit Port 8081 nicht mehr drauf (Website nicht erreichbar). Wenn ich eine neuen Container im Bridge Modus einrichte, funktioniert es, aber dafür dann einige Adapter nicht mehr… Zwischenzeitlich habe ich natürlich immer wieder Backups vom iobroker Datenverzeichnis gemacht. Egal was… Mehr lesen »