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 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.

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.

130
Hinterlasse einen Kommentar

avatar
10000
40 Kommentare
90 Antworten
5 Abonnenten
 
Meiste Antworten
Beliebtester Kommentar
44 Kommentatoren
SvenAndréMaxDavidStM47 Letzte Kommentatoren
  Abonnieren  
Benachrichtige mich zu:
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 »

David
Gast
David

Hallo Frank, leider bekomme ich das Update des JS-Controllers nicht hin und bin so immer noch auf Version 1.5.14. In deiner Anleitung (https://buanet.de/knowledge-base/steuerung-iob-ueber-kommandozeile/) sind zwei Verfahren beschrieben: Methode a) pkill io iobroker update iobroker upgrade self node node_modules/iobroker.js-controller/controller.js >/opt/scripts/docker_iobroker_log.txt 2>&1 & Hier erhalte ich beim zweiten Befehl (iobroker update) die Fehlermeldung „/usr/bin/env: ’node\r‘: No such file or directory“. Methode b) pkill io npm install iobroker.js-controller –-production node node_modules/iobroker.js-controller/controller.js >/opt/scripts/docker_iobroker_log.txt 2>&1 & Der zweite Befehl läuft noch durch, allerdings erscheint, wenn ich das Terminal in Docker verwende, am Ende des Upates die Meldung „+ iobroker.js-controller@1.5.14 updated 1 package and audited 33538… Mehr lesen »

StM47
Gast
StM47

ich habe bei meiner DisKStation, Netzwerk link Aggregation am Laufen. Was Sollich für MACVLAN für eine IP Adresse wählen? dockerd24 Link encap:Ethernet HWaddr 9A:11:D4:D3:28:FA inet6 addr: fe80::9811:d4ff:fed3:28fa/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:946 errors:0 dropped:0 overruns:0 frame:0 TX packets:1186 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:871226 (850.8 KiB) TX bytes:896766 (875.7 KiB) eth0 Link encap:Ethernet HWaddr 00:11:32:5E:9D:BF UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1 RX packets:13075140 errors:0 dropped:0 overruns:0 frame:0 TX packets:3191 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:18654985653 (17.3 GiB) TX bytes:472601 (461.5 KiB) eth1 Link encap:Ethernet HWaddr 00:11:32:5E:9D:BF UP BROADCAST RUNNING SLAVE MULTICAST… Mehr lesen »

Artur
Gast
Artur

Hallo André,
ich möchte einfach mal ein riesengroßes DANKE hierlassen!
Das ist wirklich eine super Arbeit die Du hier leistest. Um den Container herum hast Du noch eine super Doku auf die Beine gestellt. Dank Dir wurden mir nun wesentliche Docker-Basics erst klar.
Bei mir läuft – Dank Dir – das ganze einwandfrei und auf einem wesentlich professionelleren Level als vorher

Grüße
Artur

Jojo
Gast
Jojo

Hallo,
tolle Anleitung.
Hat sofort auf einer DS218+ funktioniert.

Vielen Dank
Jojo

Florian
Gast
Florian

Hallo,
Einrichtung hat bei mir super geklappt, jetzt würde ich aber gerne dem bestehenden macvlan mehr als eine IPAdresse reservieren. Im portainer kann ich aber leider keine Eigenschaften ändern, wie läuft die neue Einrichtung ohne Risiko, dass mein iobroker-Container nicht mehr funktioniert? Danke für die Hilfe!

Viele Grüße
Florian

base
Gast
base

Nach einigen Installationsversuchen von iobroker mit Portainer habe ich jetzt unter Portainer-Networks 2 Netzwerke die sich nicht mehr löschen lassen, da sie angeblich in Benutzung sind. Hab Portainer schon deinstalliert und neu eingerichtet aber die Netzwerke sind weiterhin da. Wie werde ich die wieder los???
iobroker hatte ich schon am laufen, leider funktionierte der Zugriff auf meine Diskstation über den SNMP-Adapter nicht. Nach etwas Recherche habe ich gelesen, dass eine Bridge eingerichtet werden muss. Leider Blicke ich da dann nicht mehr durch welche IP ich wo eintragen muss.

BLRD
Gast
BLRD

Hallo,

nach dieser Anleitung habe versucht die V3 zu installieren.

Beim ersten Versuch ging jedoch was schief, sodass ich den Docker und Portainer eigentlich komplett gelöscht habe.

Jedoch erscheint nun nach erneuter Installation schon der Anmeldebildschirm des Portainer und ich kann mich nicht anmelden, da admin besteht (Passwort geht nicht).

Was auch merkwürdig ist, das der Docker anscheinend nicht komplett gelöscht wurde, da nach Neuinstallation die alten Ordner und Verknüpfungen vorhanden sind.

Wie kann ich damit umgehen, bzw. dies beheben!?

Danke.

BLRD

andy
Gast
andy

Hi, ich habe jetzt schon zum zweiten Mal das gleiche Problem: installiere nach Anleitung, übernehme eine alte Installation und es funktioniert problemlos. Dann mache ich im ioBroker Admin ein Update irgend eines Adapters, dabei zerschiesst es irgendwas. Im Log steht folgendes, wenn ich den Container lösche und neu installiere bleibt die Log Ausgabe gleich —————————————- —– Image-Version: 3.1.0 —– —– 2019-10-06 11:27:39 —– —————————————- Startupscript running… Installing additional packages… The following packages will be installed: nano Installing additional packages done… Changing permissions upon first run (This might take a while! Please be patient!)… Changing permissions done… Starting ioBroker… —————————————- ——-… Mehr lesen »

Andi
Gast
Andi

Hi André,

ich hatte den iobroker v2 gut laufen. Da wir umgebaut haben und die Elektrik neu ist, habe ich meine Homematic Anlage und auch den iobroker neu aufgesetzt.
Ich bin der Anleitung für die v3 gefolgt und bin gut durchgekommen und habe auch das mcvlan ohne probleme eingerichtet bekommen (glaube ich). Der iobroker container ist auch gestartet.
Im log steht „Starting ioBroker …“ und das ist nun seit 2 Stunden so.
Die letzte Zeile im Log ist „Send diag info: {…..“

Ich komme nicht auf die admin seite von iobroker.
Hast Du eine Idee was ich machen kann? Ist mir etwas durchgegangen?

Grüße Andreas

Ha-dida
Gast
Ha-dida

Hallo André,
nutze schon seit Längerem dein Image in Verbindung mit openmediavault im ‚Bridge mode‘.
Erstklassige, professionelle Arbeit.
Wegen meiner Shelly Devices und der Multicast Problematik (Nutzung nur über mqtt) wollte ich deinem Vorschlag
folgen und auf MACVLAN (nur iobroker docker) umsteigen.
Der Container wird auch sauber erstellt, Verzeichnis wird gefüllt, Fehlermeldungen gibt es keine.
Allerdings kann ich unter der def. IP Adresse 192.168.178.100:8081 nicht auf die Seite zugreifen.
Ping aus dem Docker heraus ist nach allen Seiten möglich, von der openmediavault Seite her nicht!
Kann das mit den firewall Einstellung auf meinem NAS zusammenhängen?

Gruß,
Dieter

Enrico
Gast
Enrico

Ich habe mich an die Anleitung gehalten und Portainer eingerichtet (läuft auch). Auch das macvlan bekomme ich eingerichtet. Config ist Subnet=192.168.0.0/16 (wie das lokale Netz auch), Gateway=192.168.0.5 (Fritzbox) und IPRANGE=192.168.5.1/24 (ab hier soll Docker die IPs vergeben) Beim Erstellen der Container wird dann aber immer als erstes die IP 192.168.5.0 zugewiesen, also hab ich in Portainer die IP manuell beim erstellen des Containers vergeben (192.168.5.1). Damit ist dann der Container auch erreichbar und ich komme auf den iobroker drauf. Jetzt aber das Problem: Der Container kann nicht ins Internet…schon beim Starten gibt es Fehlermeldungen, dass Statistiken nicht hochgeladen werden können.… Mehr lesen »

Thaddäus
Gast
Thaddäus

Hi, ich habe IoBroker schon einige Wochen per MACVLAN nach deiner Anleitung am laufen. Gestern habe ich mein DSM auf der Diskstation auf Version „6.2.2-24922 Update 3“ geupdatet. Ebenso das Paket „Universal Search“ auf v.1.4.0.-0275. Die Diskstation hat einen Neustart durchgeführt. Anschließend erreiche ich IoBroker nicht mehr. unter http://192.168.178.20:8081/ kommt : Die Website ist nicht erreichbar Im Portainer läuft der Container iobroker, im Docker auch. Muss ich noch was machen nach einem Neustart? Ich muss sagen, dass ich mich definitiv nicht als Fortgeschrittener User nennen bezeichnen kann, fand die Installation schon sehr aufwäändig, habe sie jedoch grade so hinbekommen. Verstehen… Mehr lesen »

Stefan
Gast
Stefan

Hallo,

danke für das ausführliche Tutorial. Ich hänge aber leider beim Deployen des Containers. Ich habe soweit alle Daten eingetragen. Es wird mir aber leider jedes Mal folgender Fehler angezeigt:
„Error. Cannot create endpoint on configuration-only network“

Was könnte das bedeuten?

Eduard Sarjadjuk
Gast
Eduard Sarjadjuk

Hallo Andre,

ich benutze deine Docker-Image V3 und es funktioniert einwandfrei, vielen dank für das teilen deines Wissens !
Ich sehe das dein Image auf der Node.js 8.16.0 Version basiert. Der Info Tab im Iobroker gibt mir die Info, dass es vom Node.js eine neuere Version gibt. Planst du hier auch noch ein Update ? Oder könntest du mir evt. sagen wie man dies macht ?
Oder sollte man dies nicht tun ?
Falls du mal Zeit haben solltest, würde ich mich über ein kurzes Feedback freuen.
Vielen Dank im Voraus !

JHG
Gast
JHG

Hallo zusammen, ich habe heute iobroker über den beschriebenen Weg installiert, was auch problemlos funktioniert hat. Bei der Übernahme meiner alten Installation habe ich mich dann irgendwie vertan, so dass ich entschieden habe, das Systeme einfach neu zu installieren. Sollte ja kein Problem sein. Nun erhalte ich aber folgende Meldungen und iobroker startet nicht mehr. Installing additional packages… The following packages will be installed: nano Installing additional packages done… cp: der Aufruf von stat für ‚/opt/iobroker/iobroker‘ ist nicht möglich: Datei oder Verzeichnis nicht gefunden sed: /opt/iobroker/iobroker kann nicht gelesen werden: Datei oder Verzeichnis nicht gefunden Changing permissions upon first run… Mehr lesen »

Henrik
Gast
Henrik

Man könnte auch beim Erzeugen des macvlan Netzwerkes einen IP-Range von 192.168.0.240/28 (statt 192.168.0.100/32) eintragen, dann hat man 14 IPs „frei“ für Container. Aufpassen, dass der DHCP-Range im Router nur bis *.239 eingestellt wird. Nun vergibt man bei der Containererzeugung einfach eine feste IPv4 IP „192.168.241“, für den nächsten Container *242 etc.

Dirk
Gast
Dirk

Erstmal vielen Dank für die super Anleitungen. Ich folge diesen schon eine ganze Weile und sie funktionieren super. ich bin bereits auf ioBroker v3 und habe nun ein Update gemacht, da der js.controller eine neue Version brauchte. Also genau nach Anleitung vorgegangen, wobei ich zunächst über portainer ein Recreate des Containers durchgeführt habe. Dann über portainer auf die Konsole im ioBroker und Deine Befehlskette pkill io iobroker update iobroker upgrade self node node_modules/iobroker.js-controller/controller.js >/opt/scripts/docker_iobroker_log.txt 2>&1 & ausgeführt. Danach habe ich den Container nochmal über DSM Docker neu gestartet. Wenn ich jetzt die Weboberfläche des Admin aufrufe, sehe ich zwar den… Mehr lesen »

Frank
Gast
Frank

Hallo Andre, ich benutze deine Io-Broker Images auch schon lange und möchte mich für deine tolle Arbeit bedanken. Bisher hat immer alles prima funktioniert aber nun hab ich seit einigen Tagen ein Problem an dem ich ncht weiterkomme. Es gelingt mir partout nicht meinen iobroker container per bridge-network mit einem zweiten container (in meinem Fall mysql) zu verbinden. Der Iobroker Container bekommt die 172.17.0.3 und der sql-container die 172.17.0.4 aber es ist keine Verbindung möglich. ich kann noch nicht mal das gateway also die 172.17.0.1 pingen. Ich hab schon die verschiedensten konstellationen versucht, aber ich krieg es nicht hin. Ist… Mehr lesen »

Thorsten
Gast
Thorsten

Ich habe alles so eingerichtet, wie beschrieben und es läuft auch soweit. Allerdings bekomme ich jedes Mal, wenn ich in der ioBroker-Konsole des Portainers den Befehl „iobroker update“ oder „iobroker backup“ oder dergleichen eingebe, eine Fehlermeldung

/usr/bin/env: „node\r“: Datei oder Verzeichnis nicht gefunden

Das lässt wohl auf eine DOS-Konvertierung schließen. Ich kann die Konsole nur als root aufrufen. Wenn ich das selbe ioBroker-Verzeichnis mit der alten Version 2 des buanet-Images verwende, klappt es. Hat jemand eine Idee, wie ich das Problem gelöst bekomme. Wie gesagt, alles andere funktioniert. Die ioBroker-Adapter lassen sich auch über die ioBroker-Admin-Oberfläche problemlos updaten.

Marc
Gast
Marc

Hallo Andre, jetzt muss ich mich doch gleich noch mal melden :/ Du schreibst: „Trotzdem gibt es einen Wermutstropfen: Eine direkte Kommunikation zwischen der IP-Adresse des ioBrokers und der des Docker-Hosts ist leider nicht möglich. Praktisches Beispiel ist hier z. B. die Anbindung einer auf dem Host laufenden SQL-Datenbank an den ioBroker-Container. In so einem Fall müssen andere Lösungen gefunden werden.“ AAAAHHHHH…. Ich hab es gerade probiert – ich kann wirklich auf alles zugreifen, aber nicht auf den eigentlichen DockerHost. Warum ist das so? Ich hab natürlich eine SQL-DB und auch noch weitere Sachen auf dem Server am laufen. Letztendlich… Mehr lesen »

Marc
Gast
Marc

Hallo Andre,
super HowTo, ganz großes Dankeschön dafür!!!

Eher eine kleine Ergänzung an alle, die wie ich mit der MACVLAN-Konfiguration kämpfen.
Wenn man diese löscht, den DockerContainer aber schon erstellt hat, muss man diese nachträglich wieder manuell dem Container (im DockerContainer) zuweisen – diese eigentliche „Kleinigkeit“ hat mich gerade etwas Nerven gekostet :}

In dem Container selbst, steht dann auch, welche IP-Adresse zugewiesen wurde 🙂

Vielleicht hilft es dem einen oder anderen.

Gruß
Marc

Chris
Gast
Chris

Hi André vielen Dank für die tolle Anleitung, leider hänge ich bei iobroker und bekommen keine Verbindung zu Port 8081 -Netzwerk Zeitüberschreitung. Der Ordner auf der ds iobroker_data ist auch leer.

Homematic läuft über die ds IP aber keine Verbindung zum LGW auch die Link LED leuchtet nicht.

Jemand eine Idee wo ich ansetzen könnte?

Wlad
Gast
Wlad

Hallo André, Ich hoffe du kannst mir helfen. Ich bekomme ioBroker einfach nicht auf meiner Synology (DSM 6.1-15047) zum laufen. Momentan läuft ioBroker als Container im Bridge Netzwerk. Hier habe ich jedoch das Problem, dass ich jeden Port einzeln mappen muss. Das führt dazu, dass der BroadLink2.0 Adapter nicht funktioniert, da er bei jedem Start unterschiedliche UDP Ports verwendet, was das mappen im Vorfeld unmöglich macht. Also habe ich versucht ioBroker im MACVLAN Modus via Portainer laufen zu lassen. Leider bekomme ich jedoch Portainer nicht zum laufen, da Portainer keinen Zugriff auf die Docker.Sock bekommt. Auch der Trick mit dem… Mehr lesen »