NEWS
[HowTo] ioBroker unter Docker auf Synology DiskStation
-
Bei mir steht auch im Portainer "Host".
Wenn ich versuche auf "Bridge" umzustellen, kommt eine Fehlermeldung.
Danach konnte oder musste ich auf "Host" zurück stellen.Musste dann halt nur mit "iobroker start" den Container wieder starten.
-
@Superdad sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
Musste dann halt nur mit "iobroker start" den Container wieder starten.
startet er bei dir nicht mehr automatisch?
-
Ich glaub ich muss nochmal was grundsätzliches zu Portainer sagen.
Portainer ist nur eine Alternative Weboberfläche. Vergleichbar mit dem was auch der DSM zur Verfügung stellt. Allerdings gibt es in Portainer viel mehr Optionen die man konfigurieren kann. Diese fallen im DSM einfach unter den Tisch.
Unten drunter (also das was von den Weboberfläche bedient wird) steht weiterhin die selbe Docker engine. Eben diese, die sich auch ganz ohne Weboberfläche, also per Kommandozeile der DS bedienen lässt.
Daraus kann z. B. geschlussfolgert werden, dass es sich bei den Netzwerkkonfigurationen "bridge" und "host" sowohl in portainer als auch im DSM um die jeweils die selben Netzwerkkonfigurationen handelt. Ebenso ist ein im DSM erstellter Container anschließend in Portainer zu sehen und umgekehrt. Auch images die in der einen Oberfläche herunter geladen werden, stehen in der jeweils anderen anschließend zur Verfügung...Wenn man den Container, der Portainer bereit stellt beendet oder löscht ist Portainer weg, aber sowohl die Docker engine als auch den DSM interessiert das überhaupt nicht.
Portainer ist also letztendlich nur ein Verwaltungstool für die Docker engine. Eine Hilfe um Docker nicht mit der Kommandozeile bedienen zu müssen.
Außerdem noch kurz was zum netzwerkthema.
In v2 war es kein Problem mit der Option "host" zu arbeiten. Allerdings nutzt das neue ioBroker setup ab sofort sudo (intern). Aufgrund eines Bugs im von synology derzeit für den dsm verwendeten Betriebssystem kernel lässt sich in einem Container, der "host" network verwendet aktuell kein sudo nutzen. Ergebnis iobroker läuft unter Umständen nicht, oder startet z. B. Nicht.
Lösung: bridge oder macvlan als netzwerkoption verwenden. Nachteil:
macvlan = eher für fortgeschrittene,
bridge = jeder von Adaptern und iob selbst verwendete port muss manuell konfigutiert/ weitergeleitet werden.Gerne kann ich das später nochmal tiefer ausführen. Wenn die Kinder im Bett sind werde ich auch eure offenen Fragen beantworten.
Lasst euch nicht verunsichern. Solange ihr den iobroker-Ordner in Kopie habt, gibt es immer einen Weg iob wieder zum laufen zu bringen... Und sei es mit einem neuen Container aus einer alten Image-Version.
MfG,
André -
@Negalein sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
Node-Red funktioniert wieder.
Für die Probleme mit Mihome und History hab ich eigene Themen aufgemacht.
Vielleicht findet wer den Fehler.Noch eine andere Frage zum Image.
Im alten Image, das rein im Docker läuft, sehe ich (wenn ich im Portainer die Netzwerkeinstellungen dieser Installation ansehe) dass dort unter Network "host" steht.
Im neuen Image steht dort ja "bridge".Kann es sein, dass ich wegen dem Eintrag "Host" statt "Bridge" die Probleme mit "kann Host iobroker nicht finden" habe?
Wenn ich dort (im Portainer, nicht direkt im Docker) jetzt auf "bridge" umstelle, kann ich mir dann diese Installation eventuell zerstören? Komm ich jederzeit wieder auf "host" zurück?
Danke
Du kannst beides ausprobieren. Es ist "nur" die Netzwerkeinstellung des containers. ABER: wie ich bereits mehrfach erwähnt habe gibt es mit dem Host-Mode auf des DiskStation einen Bug. Es kann kein "sudo" verwendet werden, was der neue ioBroker aber tut. Bei superdad äußert sich das so, dass iobroker nicht automatisch startet.... der rest funktioniert wohl...
In Anbetracht dessen und des Mihome Problems solltest du mal drüber nachdenken ob du macvlan hin bekommst...MfG,
André -
@andre sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
In Anbetracht dessen und des Mihome Problems solltest du mal drüber nachdenken ob du macvlan hin bekommst...
Da werde ich mich definitiv einlesen.
Gibt glaub ich ein Tutorial auf deiner Seite?Aber vorerst muss ich die gestrige Installation zum laufen bringen.
-
So, jetzt hab ich mal ganz kurz ins Macvlan reingeschnuppert.
Meine DS ist über 10.0.1.22 erreichbar.
ifconfig gibt mir folgendes aus.
eth0 Link encap:Ethernet HWaddr 00:11:32:90:7A:1C inet addr:10.0.1.22 Bcast:10.0.1.255 Mask:255.255.255.0 inet6 addr: fe80::211:32ff:fe90:7a1c/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:127235981 errors:0 dropped:0 overruns:0 frame:0 TX packets:100181078 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:84230315646 (78.4 GiB) TX bytes:12540337862 (11.6 GiB) eth1 Link encap:Ethernet HWaddr 00:11:32:90:7A:1D inet addr:169.254.11.208 Bcast:169.254.255.255 Mask:255.255.0.0 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Also verwende ich dann auch eth0?
Sehe ich das soweit richtig?
-
@Negalein sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
Also verwende ich dann auch eth0?
Sehe ich das soweit richtig?
Das ist korrekt!
-
Morgen Andre,
ich habe gestern bestimmt 20 mal versuch zu installieren bricht aber die Installation immer nach kurzer Zeit ab.
macvlan ist eingerichtet und die Einstellungen wie in deiner Anleitung eingegeben.
Das einzige was bei mir anders ist das ich meine DS über bond betreibe diesen habe ich dann auch im macvlan soweit übernommen. (bond0).
Hier mal noch ein paar Bilder von meinen Einstellungen .Grüße
-
Ich habe bisher die Version 2 des containers am laufen, zusammen mit ein paar abhängigen containern (influxdb, Grafana) und alle im host Modus.
Wenn ich nun auf die Version 3 gehe, müsste ich also vorher alle container auf bridge Modus umstellen und dann den container aktualisieren. Kriegen die hosts dabei eine neue IP Adresse (somit müsste ich alle configs anpassen)?
Ist sonst noch was zu beachten? -
@Homer-J sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
Morgen Andre,
ich habe gestern bestimmt 20 mal versuch zu installieren bricht aber die Installation immer nach kurzer Zeit ab.
macvlan ist eingerichtet und die Einstellungen wie in deiner Anleitung eingegeben.
Das einzige was bei mir anders ist das ich meine DS über bond betreibe diesen habe ich dann auch im macvlan soweit übernommen. (bond0).
Hier mal noch ein paar Bilder von meinen Einstellungen .Mhh, Netzwerk sieht wohl soweit eigentlich gut aus. Bond sollte meines Wissens kein Problem sein. Hast du mal versucht dich auf die Kommandozeile zu verbinden und ioBroker manuell zu starten? Im ersten Screenshot sieht es so aus, als ob zwar das startscript gelaufen ist aber der befehl für den ioBroker-Start fehlt.
Du kannst es in der Kommandozeile mal mit "iobroker start" probieren und schauen ob iobroker dann startet.
Ansonsten kannst du auch den Befehl aus dem Startscript in der Kommandozeile (als root starten) mal eingeben. Schauen ob du ne Fehlermeldung bekommst. Der Befehl aus dem Script lautet: "sudo -u iobroker node node_modules/iobroker.js-controller/controller.js > /opt/scripts/iobroker.log 2>&1 &"MfG,
André -
@cburghardt sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
Ich habe bisher die Version 2 des containers am laufen, zusammen mit ein paar abhängigen containern (influxdb, Grafana) und alle im host Modus.
Wenn ich nun auf die Version 3 gehe, müsste ich also vorher alle container auf bridge Modus umstellen und dann den container aktualisieren. Kriegen die hosts dabei eine neue IP Adresse (somit müsste ich alle configs anpassen)?
Ist sonst noch was zu beachten?Wenn du alle Container auf Bridge umstellst, bekommt jeder Container eine interne IP-Adresse aus dem Netz 172.17.0.0 (sandard docker bridge netz). Über dieses virtuelle Bridge Netzwerk können sich die Container dann untereinander unterhalten (Portweiterleitungen zwischen den Containern sind dabei nicht nötig). Du musst also die Config überall ändern.
Alle Services die von außen (aus dem "Heimnetz") erreichbar sein sollen (z.B. ein Webinterface oder eine eingehende Datenbankverbindung) müssen in den jeweiligen Containern per Portweiterleitung auf einen Port der DS gemappt werden (den du dann von außen über die IP der DS ansprichst).Ich habe das so bei mir produktiv ganz ähnlich laufen. Ich habe ein Docker internes Bridge-Netz in dem sich Container für iobroker, mariadb, phpmyadmin und redis befinden. Die Container können sich über dieses Netz uneingeschränkt unterhalten. Jeder hat eine eigene IP aus dem Bridge netz.
mariadb ist von außen gar nicht direkt erreichbar. Für die Weboberfläche vom phpmyadmin habe ich eine Portweiterleitung eingerichtet. Ebenso für redis, damit mein iobroker slave darauf zugreifen kann.
Zusätzlich habe ich dem iobroker-container ein zweites netz ("eine zweite Netzwerkkarte") zugeordnet. Das ist mein macvlan über das ich von außen, über eine eigene ip im heimnetz uneingeschränkt auf den iobroker zugreifen kann.MfG,
André -
OK super, danke für die Zusammenfassung. Wenn ich alle auf bridged umgestellt habe, muss ich dann noch etwas anderes beachten beim upgrade des container?
Nur als Referenz, gibt es einen issue report für das Kernel Problem von synology das den host Modus zusammen mit sudo verhindert? -
@cburghardt sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
OK super, danke für die Zusammenfassung. Wenn ich alle auf bridged umgestellt habe, muss ich dann noch etwas anderes beachten beim upgrade des container?
Nur als Referenz, gibt es einen issue report für das Kernel Problem von synology das den host Modus zusammen mit sudo verhindert?Backup machen! Nein, ich würde grundsätzlich über eine Kopie des iobroker-Ordners auf der DS gehen.
Also: alten Container weg (vorher ggf. config sichern oder die zumindest die Einstellungen notieren), Verzeichnis auf der DS duplizieren, Neues Image laden, neuen Container erstellen und iobroker-Verzeichnis-Duplikat einbinden + Netzwerk "anders" konfigurieren und ab dafür. Schauen ob iob läuft, ggf. nacharbeiten.
Falls es nicht läuft. neuen Container wieder weg, Version 2 vom Image laden und entsprechend der alten Einstellungen den alten Container neu erstellen und Originalverzeichnis einhängen... sollte in jedem Fall wieder laufen...Issue Report für das Kernel Problem kenne ich nicht und habe ich aufgrund der geringen Fix-Wahrscheinlichkeit auch nicht bei Synology gemeldet.
Wenn man aber die audit-Fehlermeldung, welche man beim Verwenden von sudo in dem entsprechenden Fall bekommt mal sucht, dann bekommt man stack overflow beiträge wo es genau darum geht (ist nicht synology spezifisch!).
Aber wie gesagt (und sehr ärgerlich) es betrifft die Kernel Version die der DSM aktuell verwendet. Ich habe ein Debian mit aktuellem Linux Kernel da ist das kein Problem. Da läuft der ioBroker auch im Host-Mode...MfG,
André -
@andre sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
sudo -u iobroker node node_modules/iobroker.js-controller/controller.js > /opt/scripts/iobroker.log 2>&1 &
Hi Andre,
iobroker wird so wie es aussieht garnicht installiert.
Das Startscript fängt kurz an läuft aber dann nicht mehr weiter und die Ausgabe hatte ich ja weiter oben schon gezeigt.
Hier mal die Eingabe über die Kommandozeile.Grüße Steffen
root@Iobroker:/opt/iobroker# iobroker start
bash: iobroker: Kommando nicht gefunden.
root@Iobroker:/opt/iobroker# sudo -u iobroker node node_modules/iobroker.js-controller/controller.js > /opt/scripts/iobroker.log 2>&1 &
[1] 324 -
@Homer-J sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
@andre sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
sudo -u iobroker node node_modules/iobroker.js-controller/controller.js > /opt/scripts/iobroker.log 2>&1 &
Hi Andre,
iobroker wird so wie es aussieht garnicht installiert.
Das Startscript fängt kurz an läuft aber dann nicht mehr weiter und die Ausgabe hatte ich ja weiter oben schon gezeigt.
Hier mal die Eingabe über die Kommandozeile.Grüße Steffen
root@Iobroker:/opt/iobroker# iobroker start
bash: iobroker: Kommando nicht gefunden.
root@Iobroker:/opt/iobroker# sudo -u iobroker node node_modules/iobroker.js-controller/controller.js > /opt/scripts/iobroker.log 2>&1 &
[1] 324Hallo Steffen,
hast du unter /opt/iobroker ein Verzeichnis eingehängt? Scheint in der Tat als wäre iobroker nicht verfügbar. Schau mal was im /opt/iobroker drin ist (ls per Kommandozeile).MfG,
André -
@andre Hier mal meine Einstellungen.
Ich hab heut morgen iobroker einfach mal im angelegten Container installiert über die Console funktioniert wunderbar. Woran könnte es jetzt noch liegen das es nicht über das Startscript funktioniert. ?
Ich hätte es gern gleich mit einem Backup installieren wollen.Grüße
-
Danke hab nun das neue Docker per macvlan am laufen auf meiner Diskstation.
Jemand erfahrung mit dem unifi ? Hab den Controler im selben netz 192.168.2.1 als Docker HOST .
Kann mich aber nicht damit verbinden. Liegt das an dem HOST bug ? Sollte ich den unifi auch per macvlan einrichten ? -
So, ich hab jetzt den Container auf MACVLAN umgestellt.
War sehr einfach!Und es läuft alles bis auf den Zigbee-Adapter.
Der motzt leider rum.Sogar der Mihome-Adapter hat sofort wieder funktioniert.
PS: Und noch was. Kann es sein, dass der UPNP jetzt die Daten aus der DS auf der der Container installiert ist, jetzt nicht mehr auslesen kann?
PPS: mein Problem mit dem History-Adapter besteht weiterhin.
Er liest zwar die Daten, aber erst ab gestrigen Datum.PPPS: beim Update des JS-Controller bekomm ich NPM-Error und CHMOD-Error
js-controller-update-error.txt -
@Homer-J sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
@andre Hier mal meine Einstellungen.
Ich hab heut morgen iobroker einfach mal im angelegten Container installiert über die Console funktioniert wunderbar. Woran könnte es jetzt noch liegen das es nicht über das Startscript funktioniert. ?
Ich hätte es gern gleich mit einem Backup installieren wollen.Grüße
Kann ich so nicht nachvollziehen. Zeige mal den Inhalt des eingehängten Ordners mit dem Backup. Einmal seitens FileStation, und einmal aus Sicht des Containers (ls in der Kommandozeile)
MfG,
André -
@ChrisXY sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
Danke hab nun das neue Docker per macvlan am laufen auf meiner Diskstation.
Jemand erfahrung mit dem unifi ? Hab den Controler im selben netz 192.168.2.1 als Docker HOST .
Kann mich aber nicht damit verbinden. Liegt das an dem HOST bug ? Sollte ich den unifi auch per macvlan einrichten ?Wenn dein ioBroker mit MACVLAN läuft, kann er nicht mehr auf die IP-Adresse der DS zugreifen. Zumindest nicht auf die IP-Adresse die auf der selben Netzwerkschnittstelle liegt.
Demzufolge auch nicht auf den Unifi-Container der im Host-Modus läuft. Das geht einfach routingtechnisch nicht.
Damit das wieder funktioniert stelle den Unifi auf ein bridge-netzwerk um und hänge den ioBroker als zweites Netzwerk ebenfalls in das bridge netzwerk... Dann können die beiden Container sich darüber unterhalten...Bei mir sieht das so aus, nur dass es bei mir kein unifi sondern ein redis container ist...
network iobroker:
(public ist macvlan, private ist bridge)
network redis:
MfG,
André