NEWS
[HowTo] ioBroker unter Docker auf Synology DiskStation
-
Servus,
ich hätte da auch mal eine Frage. Bei mir läuft auf der DS218+ unter Docker auch der iObroker Container von André. Jetzt würde ich gerne das ganze auch auf Portainer umziehen um so via macvlan dem Iobroker eine eigene IP zu geben. Das hat den Hintergrund das ich beim Node Red Adapter den Port 80 brauche, der aber schon von der DS belegt ist. Meine Hoffnung ist, dass es so dann klappen müsste und ich meine Geräte via Node Red Echo Plugin über Alexa steuern kann.
Leider scheitere ich beim Starten des Containers. Auch nach etlichen Minuten ist der Iobroker-Admin nicht aufrufbar. Bei den Prozessen sieht alles so aus wie immer aber im Protokoll sehe ich Fehlermeldungen die wohl von den Homematic-Adaptern kommen. Die finden die IP des Hosts nicht mehr....scheint ja auch logisch weil da ja noch die alte eingetragen ist...2020-01-07 07:12:58 stderr port: 12010 } 2020-01-07 07:12:58 stderr address: '172.17.0.1', 2020-01-07 07:12:58 stderr syscall: 'listen', 2020-01-07 07:12:58 stderr errno: 'EADDRNOTAVAIL', 2020-01-07 07:12:58 stderr code: 'EADDRNOTAVAIL', 2020-01-07 07:12:58 stderr at process._tickCallback (internal/process/next_tick.js:63:19) 2020-01-07 07:12:58 stderr at doListen (net.js:1461:7) 2020-01-07 07:12:58 stderr at listenInCluster (net.js:1328:12) 2020-01-07 07:12:58 stderr at Server.setupListenHandle [as _listen2] (net.js:1263:19) 2020-01-07 07:12:58 stderr { Error: listen EADDRNOTAVAIL: address not available 172.17.0.1:12010 2020-01-07 07:12:54 stderr 2020-01-07 07:12:54 stderr port: 12001 } 2020-01-07 07:12:54 stderr address: '172.17.0.1', 2020-01-07 07:12:54 stderr syscall: 'listen', 2020-01-07 07:12:54 stderr errno: 'EADDRNOTAVAIL', 2020-01-07 07:12:54 stderr code: 'EADDRNOTAVAIL', 2020-01-07 07:12:54 stderr at process._tickCallback (internal/process/next_tick.js:63:19) 2020-01-07 07:12:54 stderr at doListen (net.js:1461:7) 2020-01-07 07:12:54 stderr at listenInCluster (net.js:1328:12) 2020-01-07 07:12:54 stderr at Server.setupListenHandle [as _listen2] (net.js:1263:19) 2020-01-07 07:12:54 stderr { Error: listen EADDRNOTAVAIL: address not available 172.17.0.1:12001 2020-01-07 07:12:51 stderr 2020-01-07 07:12:51 stderr port: 18701 } 2020-01-07 07:12:51 stderr address: '172.17.0.1', 2020-01-07 07:12:51 stderr syscall: 'listen', 2020-01-07 07:12:51 stderr errno: 'EADDRNOTAVAIL', 2020-01-07 07:12:51 stderr code: 'EADDRNOTAVAIL', 2020-01-07 07:12:51 stderr at process._tickCallback (internal/process/next_tick.js:63:19) 2020-01-07 07:12:51 stderr at doListen (net.js:1461:7) 2020-01-07 07:12:51 stderr at listenInCluster (net.js:1328:12) 2020-01-07 07:12:51 stderr at Server.setupListenHandle [as _listen2] (net.js:1263:19) 2020-01-07 07:12:51 stderr { Error: listen EADDRNOTAVAIL: address not available 172.17.0.1:18701 2020-01-07 07:12:36 stdout host.iobroker check instance "system.adapter.node-red.0" for host "iobroker" 2020-01-07 07:12:36 stdout host.iobroker check instance "system.adapter.vis-plumb.0" for host "iobroker" 2020-01-07 07:12:36 stdout host.iobroker check instance "system.adapter.vis-rgraph.0" for host "iobroker" 2020-01-07 07:12:36 stdout host.iobroker check instance "system.adapter.vis-players.0" for host "iobroker" 2020-01-07 07:12:36 stdout host.iobroker check instance "system.adapter.vis-timeandweather.0" for host "iobroker" 2020-01-07 07:12:36 stdout host.iobroker check instance "system.adapter.vis-metro.0" for host "iobroker" 2020-01-07 07:12:36 stdout host.iobroker check instance "system.adapter.vis-fancyswitch.0" for host "iobroker" 2020-01-07 07:12:36 stdout host.iobroker check instance "system.adapter.vis.0" for host "iobroker" 2020-01-07 07:12:36 stdout host.iobroker check instance "system.adapter.cloud.1" for host "iobroker" 2020-01-07 07:12:36 stdout host.iobroker check instance "system.adapter.info.0" for host "iobroker" 2020-01-07 07:12:36 stdout host.iobroker check instance "system.adapter.netatmo.0" for host "iobroker" 2020-01-07 07:12:36 stdout host.iobroker check instance "system.adapter.pushover.1" for host "iobroker" 2020-01-07 07:12:36 stdout host.iobroker check instance "system.adapter.pushover.0" for host "iobroker" 2020-01-07 07:12:36 stdout host.iobroker check instance "system.adapter.tuya.0" for host "iobroker" 2020-01-07 07:12:36 stdout host.iobroker check instance "system.adapter.alexa2.0" for host "iobroker" 2020-01-07 07:12:36 stdout host.iobroker check instance "system.adapter.mihome-vacuum.0" for host "iobroker" 2020-01-07 07:12:36 stdout host.iobroker check instance "system.adapter.scenes.0" for host "iobroker" 2020-01-07 07:12:36 stdout host.iobroker check instance "system.adapter.zigbee.0" for host "iobroker" 2020-01-07 07:12:36 stdout host.iobroker check instance "system.adapter.terminal.0" for host "iobroker" 2020-01-07 07:12:36 stdout host.iobroker check instance "system.adapter.mobile.0" for host "iobroker" 2020-01-07 07:12:36 stdout host.iobroker check instance "system.adapter.cloud.0" for host "iobroker" 2020-01-07 07:12:36 stdout host.iobroker check instance "system.adapter.sonos.0" for host "iobroker" 2020-01-07 07:12:36 stdout host.iobroker check instance "system.adapter.javascript.0" for host "iobroker" 2020-01-07 07:12:36 stdout host.iobroker check instance "system.adapter.history.0" for host "iobroker" 2020-01-07 07:12:36 stdout host.iobroker check instance "system.adapter.web.0" for host "iobroker" 2020-01-07 07:12:36 stdout host.iobroker check instance "system.adapter.hm-rega.0" for host "iobroker" 2020-01-07 07:12:36 stdout host.iobroker check instance "system.adapter.hm-rpc.2" for host "iobroker" 2020-01-07 07:12:36 stdout host.iobroker check instance "system.adapter.hm-rpc.1" for host "iobroker" 2020-01-07 07:12:36 stdout host.iobroker check instance "system.adapter.hm-rpc.0" for host "iobroker" 2020-01-07 07:12:36 stdout host.iobroker check instance "system.adapter.ping.0" for host "iobroker" 2020-01-07 07:12:36 stdout host.iobroker check instance "system.adapter.discovery.0" for host "iobroker" 2020-01-07 07:12:36 stdout host.iobroker check instance "system.adapter.admin.0" for host "iobroker" 2020-01-07 07:12:36 stdout ================================== > LOG REDIRECT system.adapter.admin.0 => true [starting] 2020-01-07 07:12:33 stdout 2020-01-07 07:12:33 stdout Starting ioBroker... 2020-01-07 07:12:33 stdout 2020-01-07 07:12:33 stdout ------------------------------------------------------------ 2020-01-07 07:12:33 stdout ----- Step 5 of 5: ioBroker startup ----- 2020-01-07 07:12:33 stdout ------------------------------------------------------------ 2020-01-07 07:12:28 stdout 2020-01-07 07:12:28 stdout For more information take a look at readme.md 2020-01-07 07:12:28 stdout Some adapters have special requirements which can be activated by the use of environment variables. 2020-01-07 07:12:28 stdout 2020-01-07 07:12:28 stdout ------------------------------------------------------------ 2020-01-07 07:12:28 stdout ----- Step 4 of 5: Applying special settings ----- 2020-01-07 07:12:28 stdout ------------------------------------------------------------ 2020-01-07 07:12:28 stdout 2020-01-07 07:12:28 stdout Done. 2020-01-07 07:12:28 stdout Fixing "sudo-bug" by replacing sudo with gosu... 2020-01-07 07:12:28 stdout 2020-01-07 07:12:28 stdout Done. 2020-01-07 07:12:22 stdout (Re)Setting folder permissions (This might take a while! Please be patient!)... 2020-01-07 07:12:22 stdout 2020-01-07 07:12:22 stdout Done. 2020-01-07 07:12:22 stderr usermod: Keine Änderungen 2020-01-07 07:12:22 stdout Changing UID to 1000 and GID to 1000... 2020-01-07 07:12:22 stdout 2020-01-07 07:12:22 stdout This is the first run of a new container. Time for some preparation. 2020-01-07 07:12:22 stdout 2020-01-07 07:12:22 stdout ------------------------------------------------------------ 2020-01-07 07:12:22 stdout ----- Step 3 of 5: Checking ioBroker installation ----- 2020-01-07 07:12:22 stdout ------------------------------------------------------------ 2020-01-07 07:12:22 stdout 2020-01-07 07:12:22 stdout Installation of ioBroker detected in /opt/iobroker. 2020-01-07 07:12:22 stdout 2020-01-07 07:12:22 stdout ------------------------------------------------------------ 2020-01-07 07:12:22 stdout ----- Step 2 of 5: Detecting ioBroker installation ----- 2020-01-07 07:12:22 stdout ------------------------------------------------------------ 2020-01-07 07:12:22 stdout 2020-01-07 07:12:22 stdout Done. 2020-01-07 07:12:08 stdout The following packages will be installed: nano... 2020-01-07 07:12:08 stdout 2020-01-07 07:12:08 stdout ------------------------------------------------------------ 2020-01-07 07:12:08 stdout ----- Step 1 of 5: Installing additional packages ----- 2020-01-07 07:12:08 stdout ------------------------------------------------------------ 2020-01-07 07:12:08 stdout 2020-01-07 07:12:08 stdout ------------------------------------------------------------ 2020-01-07 07:12:08 stdout ----- SETUID: 1000 ----- 2020-01-07 07:12:08 stdout ----- SETGID: 1000 ----- 2020-01-07 07:12:08 stdout ----- PACKAGES: nano ----- 2020-01-07 07:12:08 stdout ----- AVAHI: false ----- 2020-01-07 07:12:08 stdout ----- ENV ----- 2020-01-07 07:12:08 stdout ----- ----- 2020-01-07 07:12:08 stdout ----- npm: 6.13.4 ----- 2020-01-07 07:12:06 stdout ----- node: v10.18.0 ----- 2020-01-07 07:12:06 stdout ----- image: v4.0.0 ----- 2020-01-07 07:12:06 stdout ----- Versions ----- 2020-01-07 07:12:06 stdout ----- ----- 2020-01-07 07:12:06 stdout ----- arch: x86_64 ----- 2020-01-07 07:12:06 stdout ----- System ----- 2020-01-07 07:12:06 stdout ----- ----- 2020-01-07 07:12:06 stdout ----- Debugging information ----- 2020-01-07 07:12:06 stdout ------------------------------------------------------------ 2020-01-07 07:12:06 stdout 2020-01-07 07:12:06 stdout ------------------------------------------------------------ 2020-01-07 07:12:06 stdout ----- Please be patient! ----- 2020-01-07 07:12:06 stdout ----- Startupscript is now running. ----- 2020-01-07 07:12:06 stdout ----- Welcome to your ioBroker-container! ----- 2020-01-07 07:12:06 stdout ------------------------------------------------------------ 2020-01-07 07:12:06 stdout 2020-01-07 07:12:06 stdout ------------------------------------------------------------ 2020-01-07 07:12:06 stdout --------------- 2020-01-07 08:12:06 --------------- 2020-01-07 07:12:06 stdout ------------------------------------------------------------ 2020-01-07 07:12:06 stdout
Ich habe hier auch schon Probehalber versucht vor dem Einspielen des Backups etwas umzustellen an den IPs. Das hat aber auch nicht funktioniert. Muss ich die Adapter vorher löschen, dann das Backup machen und damit dann den Container erstellen?
Grüße,
Joscha -
So ich konnte das Problem lösen.
Habe vor dem Erstellen des Backups die Callback Adressen der HM-Adapter auf die neue IP des Containers eingestellt und unter Adapter Adresse "auf alle IPs hören". Dann das Backup gemacht und im mount-Verzeichnis entpackt, den neuen Container unter Portainer erstellt und zack geht alles. Die Anbindung meiner Geräte über Node Red an Alexa war nun auch möglich. Leider habe ich mir wohl mit dem macvlan Einstellungen die Möglichkeit genommen auf meinen Zigbee-Stick an der DS zugreifen zu können. Im Log steht auch was:zigbee.0 2020-01-07 21:09:34.854 error (13470) Error while starting zigbee-shepherd!. Error: Error: No such file or directory, cannot open /dev/ttyACM0
Hat jemand eine Idee wie ich das wieder zum Laufen bekomme?
Grüße,
Joscha -
@jogge
Hatte ich mit dem Z-wave Stick:https://forum.iobroker.net/post/332260
Vielleicht hilft dir das. Ist ein wenig wirr, aber bei den Nachträgen kommt dein Fall...
-
@Troya MEGA!!! Vielen vielen DANK!!!
Hat geklappt. Jetzt läuft alles wie ich es mir vorstelleUnd ich hab schon im Kopf ein Multihost System aus Docker Containern aufgebaut mit dem Master im macvlan und einen Slave im host Modus um das Problem zu umschiffen. So ist das natürlich super elegant!
Grüße,
Joscha -
@gerald123
Hallo Gerald,
soweit ich weiß, kannst du pro Netzwerkadapter nur ein MACVLAN definieren.
Was aber geht ist einfach ein größeres MACVLAN zu konfigurieren.
Zum Beispiel mit einem 192.168.0.80/29 Netz. Da hättest du dann 6 IP-Adressen drin und würdest deinen Test-Container dort mit rein hängen. Natürlich mit einem separaten Hostnamen!Vielleicht reicht es dir aber auch wenn du deinen Test-Container einfach im Bridge-Modus betreibst und nur die benötigten Ports nach außen gibst...
MfG,
André -
@tcfigge sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
Im macvlan braucht man auch das Startscript nicht?
Hallo Thorsten,
die Frage verstehe ich nicht. Das hat beides nichts miteinander zu tun.
Das Startscript ist Teil des Containers und sorgt dafür das ioBroker gestartet wird... grundsätzlich und egal wie dein Netzwerk aussieht...MfG,
André -
@andre Danke für die Info, ich werde es mal mit dem /29 Netz testen.
Kann ich das Bestehende Netz ändern oder muss ich da ein neuse anlegen?
Hab da noch eine frage, bei den Versuchen mit einem weiteren MACVLAN habe ich nun im Portainer einige nicht funktionierende Netze angelegt. Kann ich die irgendwie wieder Löschen?
Mfg. Gerald -
-
@dos1973 Hast du es komplett gelöscht oder kann man es bearbeiten und die falschen Netze entfernen?
-
Musste es komplett löschen...
Aber die Daten im filesystem bleiben erhalten. Du musst nur in Portainer wieder einrichtenBackup trotzdem!!
-
@dos1973 Danke, werde es am Wochenende mal probieren.
-
@dos1973 sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
Backup trotzdem!!
Muss man aber nicht extra machen, wenn man das Docker-Verzeichnis eh schon mit Hyper Backup sichert.
Übrigens, André hatte ja hier beschrieben, wie man den Portainer anlegt. Kleiner Tipp: die mit dem Aufgabenplaner erstellte Aufgabe nicht löschen. Damit kann man nämlich nachträglich sehr einfach den Portainer aktualisieren bzw. neu erstellen. Einfach den alten Portainer löschen, das neue Portainer-Abbild herunterladen und dann wieder die Aufgabe ausführen. Fertig.
-
@andre said in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
@Telefisch
Wie du schon raus gefunden hast, muss man bei Docker in den meisten Fällen einen neuen Container anlegen. Sollte aber auch kein riesen Ding sein. Dazu gibt es ja schließlich den "Edit/ Duplicate" Button im Portainer....Was deinen Fehler aus dem Screenshot angeht, da würde ich die Dateien einfach per Hand löschen/ umkopieren und nochmal versuchen... Sieht mir nicht nach nem großen Ding aus...
MfG,
AndréHallo @andre ,
ja, das funktioniert hier anscheinend, ist nur sehr mühselig und kann ja auch nicht des Rätsels Lösung sein.
Ich muss für jede Datei, die nicht gelöscht werden kann einmal das Update laufen lassen weil immer nur die erste in den Meldungen ausgegeben wirdWer ist denn normalerweise Besitzer bzw. wie sind die Rechte der Verzeichnisse einzustellen?
Muss ich vielleicht einen neuen User anlegen? Hat sich da was geändert in der iob Installation?
Ich hab mal chmod -R 777 /opt/iobroker laufen lassen, was ja eigentlich solche Probleme beseitigen müsste aber das hat auch nicht geholfen. -
@Telefisch Eine andere Lösung habe ich nicht parat. Da müssen die node und npm Profis ran. An den rechten sollte es nicht liegen, die werden eigentlich bei jedem Container start neu gesetzt...
MfG,
André -
@andre danke für das Dockerimage funktioniert soweit bestens (auf Unraid).
Ein Problem habe ich jedoch:
Wenn ich auf Objekte gehe dann habe ich dauerhaft das Ladesymbol und die Icons über den Objekten werden nicht angezeigt und sind auch nicht bedienbar.Hat jemand das gleiche Problem bzw. eine Lösung dafür?
-
@ozboss Hab es bei mir auch auf unraid laufen. Kannst du mal schauen ob im iobroker im Log errors sind? Also wenn du links im Menü vom iobroker auf Log gehst.
-
@andre sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
Wenn du mir sagst was ich fixen soll? Am liebsten per Issue auf Github....
Ganz vergessen.
Nun ja, es geht ja darum, dass ich beim Versuch, einen installierten Adapter zu deinstallieren, jedes Mal die Fehlermeldung erhalte, dass die Deinstallation nicht möglich war und ich den Adapter manuell deinstallieren möge. Also gehe ich immer per Portainer in das Verzeichnis "node_modules" und lösche dann dort per "rm -R" den entsprechenden Adapter "iobroker.xxxxx". "Immer" ist natürlich relativ gemeint. So häufig muss ich einen Adapter ja nicht deinstallieren.
Woran könnte das liegen? An falschen Rechten? Witzigerweise ist das aber auch bei über den admin-Adapter frisch installierten Adaptern so. Wenn du mir sagt, ich soll diesbezüglich bei github ein Issue starten, dann mache ich das gerne. Wenn du aber sagst, dass das nichts mit dem Docker-Image als solches zu tun hat, dann lohnt es sich nicht und ich muss der Ursache anderweitig auf den Grund gehen. Oder hast du direkt eine Idee, woran es liegen könnte? Ansonsten läuft die Version 4.0 bei mir sehr rund.
Gruß,
Thorsten
-
@dtp
Hm, ich kann den Fehler nicht nachvollziehen. Bisher hatte ich nie das Problem. Eben habe ich dann nochmal mit meiner Testumgebung und dem DWD-Adapter getestet. Installation sauber, Adapter funktioniert. Instanz gelöscht, Adapter gelöscht... Alles ohne gemecker.
Woran das liegen könnte müsste mal ein npm-Spezi bewerten. Berechtigungen kann ich mir fast nicht vorstellen, da der Container ja bei jedem start die Berechtigungen für das gesamte Verzeichnis /opt/iobroker prüft bzw. neu setzt...MfG,
André -
Nun ja, es geht ja darum, dass ich beim Versuch, einen installierten Adapter zu deinstallieren, jedes Mal die Fehlermeldung erhalte, dass die Deinstallation nicht möglich war und ich den Adapter manuell deinstallieren möge. Also gehe ich immer per Portainer in das Verzeichnis "node_modules" und lösche dann dort per "rm -R" den entsprechenden Adapter "iobroker.xxxxx".
Ich habe unter der Docker Version 4 das gleiche Problem.
Kann man denn den Fixer gefahrlos auf den Container loslassen?
-
@Knallochse sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
Nun ja, es geht ja darum, dass ich beim Versuch, einen installierten Adapter zu deinstallieren, jedes Mal die Fehlermeldung erhalte, dass die Deinstallation nicht möglich war und ich den Adapter manuell deinstallieren möge. Also gehe ich immer per Portainer in das Verzeichnis "node_modules" und lösche dann dort per "rm -R" den entsprechenden Adapter "iobroker.xxxxx".
Ich habe unter der Docker Version 4 das gleiche Problem.
Kann man denn den Fixer gefahrlos auf den Container loslassen?
Ja. Es sind Probleme mit den Zugriffsrechten. Du kannst ggf. bei der Installation von IoBroker-Container die uid und gid mit angeben.