NEWS
[HowTo] ioBroker unter Docker auf Synology DiskStation
-
Im Prinzip sollte das Aufsetzen des Beta-Containers funktionieren wie in der V3-Anleitung beschrieben, mit zwei kleinen Änderungen:
- statt dem Image mit dem tag "latest" wird "beta" heruntergeladen (buanet/iobroker:beta)
- als Netzwerk wird "host" verwendet (MACVLAN bzw. Portweiterleitungen für bridge entfallen)
Alles Andere sollte 1:1 so umsetzbar sein.
Theoretisch sollte sich der Container auch nach der V2-Anleitung erstellen lassen. Aufgrund der im DSM beschränkten Administrationsmöglichkeiten empfehle ich aber weiterhin Portainer als alternative Weboberfläche, also:
@cash sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
Das hieße auf Portainer könnte man im Prinzip verzichten?
Kann man wahrscheinlich, würde ich aber nicht tun da Portainer ein echter Mehrwert ist.
@cash sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
Wie könnte ich am einfachsten die Adapter und dessen Einstellungen transferieren?
Und als letztes: Meine selbst angelegten Datenpunkte liegen direkt ganz oben unter Systemvariabeln.0 wie könnte ich die kopieren?Vielleicht per Backup? Sorry, ich nehme immer den ganzen Ordner mit, daher habe ich dahingehend keine Erfahrungswerte. Aber bei der Übernahme von Daten sollte es keine Rolle spielen ob der ioBroker ein Docker-Container oder ein Raspberry o.Ä. ist.
Meine Empfehlung: neben dem Einhängen vom ioBroker-Verzeichnis würde ich zum einfachen Datentransfer in den Container ein zweites Verzeichnis einhängen. z.B. als /opt/transfer.@RK62 sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
Welche Schritte sind jetzt für die Host-Version auszuführen?
V2 runterfahren & Datenstruktur kopieren
Neuen Container V302 anlegen und kopierte Datenstruktur ankoppeln
V302 startenMuss dann noch irgendwas im Container selbst geupdatet werden?
So ist es. Im Container selbst sollte nichts zu tun sein. Die Node-Version (die die Schritte v1>v2 notwendig gemacht hatte) hat sich nicht verändert.
MfG,
André -
Hi, es besteht bei mir immer noch bzw. nach einem Neustart wieder das Problem mit:
/opt/scripts/iobroker_startup.sh: 54: /opt/scripts/iobroker_startup.sh: cannot create /opt/scripts/iobroker.log: Permission deniediobroker@bfcefd7b98d0:/opt/scripts$ ls -ll insgesamt 12 -rwxr-xr-x+ 1 root users 833 Jun 17 22:40 avahi_startup.sh -rw-r--r--+ 1 root users 0 Jun 17 22:36 iobroker.log -rwxr-xr-x+ 1 root users 1500 Jun 17 22:40 iobroker_startup.sh -rwxr-xr-x+ 1 root users 143 Jun 17 22:40 packages_install.sh
Das ist das besagte Verzeichnis. Was kann ich tun?
-
@Surfer2010 Eventuell hilft ein:
chown -R iobroker /opt/scripts
Zumindest wenn dein Container in V3 ist, sollte das funktionieren.
MfG,
André -
Problem gelöst, die Ursache waren falsche Berechtigungen/Ownership im neuen (geänderten) docker-root Verzeichnis sorry again-what-learned
-
@andre
Ich hab ja jetzt auf MACVLAN umgestellt und es läuft ja auch alles, was ich installiert habe.Welchen Vorteil hat der "Host-Modus", ausser das ich nicht extra eine IP vergeben muss?
-
@tugsi sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
@andre
Ich hab ja jetzt auf MACVLAN umgestellt und es läuft ja auch alles, was ich installiert habe.Welchen Vorteil hat der "Host-Modus", ausser das ich nicht extra eine IP vergeben muss?
Ich würde immer MACVLAN empfehlen, allerdings nur für fortgeschrittene User. Das aufsetzen eines Containers im Host-Modus traue ich hingegen jedem zu, der weiß wie er auf die Weboberfläche der DiskStation kommt.
Da du aber nach einem Vorteil gefragt hast, ein Vorteil wäre, dass es im Host-Modus möglich ist aus dem Container heraus direkt auf die DS zu zu greifen. Also z.B. eine Datenbank auf der DS anzusprechen. Das geht im MACVLAN nur über die Anbindung eines zweiten Netzwerks (bridge). Haben wir etwas weiter oben drüber gesprochen.
MfG,
André -
@andre
Danke André, dann werde ich das so lassen.
Soll denn noch irgendwas durchgetestet werden? Eventuell kann ich da unterstützen.
Gruß
Thomas -
Ich hab 2 grundlegende Probleme.
- Ich kann im portainer keine Images aus dem Docker Hub installieren. In dem Eingabefeld tauchen nur die eigenen Images auf.
Auf der ds Oberfläche kann ich das Image zwar laden aber es muss wohl nen altes sein. Ausgewählt habe ich Beta. Komm auf der console aber nur root user.
2 Problem: hat schon jemand den radar2 Adapter zum laufen bekommen? Ich bekomme da bei der Installation schon Fehlermeldungen ohne Ende.
- Ich kann im portainer keine Images aus dem Docker Hub installieren. In dem Eingabefeld tauchen nur die eigenen Images auf.
-
@rostnagel sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
Ich hab 2 grundlegende Probleme.
- Ich kann im portainer keine Images aus dem Docker Hub installieren. In dem Eingabefeld tauchen nur die eigenen Images auf.
Das ist so korrekt. Dort tauchen nur heruntergeladene Images auf. Unter "Images" solltest du ein Image auch jederzeit laden können. Z.B.
buanet/docker:latest
registry:DockerHub
.Auf der ds Oberfläche kann ich das Image zwar laden aber es muss wohl nen altes sein. Ausgewählt habe ich Beta. Komm auf der console aber nur root user.
Das verstehe ich inhaltlich nicht.
2 Problem: hat schon jemand den radar2 Adapter zum laufen bekommen? Ich bekomme da bei der Installation schon Fehlermeldungen ohne Ende.
Hab ich noch nicht probiert. Bei mir läuft der auf nem multihost slave (raspberry).
hast du hier mal unter "Installation" geschaut? Die Capabilities musst du außerdem auch im Container setzen (in Portainer unter advances settings der letzte Tab "Capabilities").MfG,
André -
@andre sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
buanet/docker:latest
okay, soweit klarist es normal nicht so wenn in das feld etwas eintippe das dann vorschläge kommen? bei mir kommt da nix. d.h. ich muss die genaue bezeichnung vom image wissen bzw die version.
@andre sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
Hab ich noch nicht probiert. Bei mir läuft der auf nem multihost slave (raspberry).
hast du hier mal unter "Installation" geschaut? Die Capabilities musst du außerdem auch im Container setzen (in Portainer unter advances settings der letzte Tab "Capabilities").MfG,
Andréjap, die zusätzlichen treiber und BT geschichten hatte ich schon installiert
habe aber keinen zugriff auf den BT stick.unter V2 hat es gereicht den container mit hoher priorität laufen zu lassen...
schade.. -
@andre Habe eben mal das Update 3.0.2 mit meiner vorhandenen Installation getestet. Das sieht echt gut aus!
Habe nur eine Fehlermeldung vom amazon-dash im Log:
2019-06-23 13:00:38.223 - info: amazon-dash.0 starting. Version 0.3.1 in /opt/iobroker/node_modules/iobroker.amazon-dash, node: v8.16.0 2019-06-23 13:00:38.618 - info: amazon-dash.0 terminating 2019-06-23 13:00:38.633 - error: Caught by controller[0]: Error: libpcap.so.0.8: cannot open shared object file: No such file or directory 2019-06-23 13:00:38.633 - error: Caught by controller[0]: at Object.Module._extensions..node (module.js:682:18) 2019-06-23 13:00:38.633 - error: Caught by controller[0]: at Module.load (module.js:566:32) 2019-06-23 13:00:38.633 - error: Caught by controller[0]: at tryModuleLoad (module.js:506:12) 2019-06-23 13:00:38.634 - error: Caught by controller[0]: at Function.Module._load (module.js:498:3) 2019-06-23 13:00:38.634 - error: Caught by controller[0]: at Module.require (module.js:597:17) 2019-06-23 13:00:38.634 - error: Caught by controller[0]: at require (internal/module.js:11:18) 2019-06-23 13:00:38.634 - error: Caught by controller[0]: at Object. (/opt/iobroker/node_modules/pcap/pcap.js:3:21) 2019-06-23 13:00:38.634 - error: Caught by controller[0]: at Module._compile (module.js:653:30) 2019-06-23 13:00:38.634 - error: Caught by controller[0]: at Object.Module._extensions..js (module.js:664:10) 2019-06-23 13:00:38.634 - error: Caught by controller[0]: at Module.load (module.js:566:32) 2019-06-23 13:00:38.634 - error: host.iobroker instance system.adapter.amazon-dash.0 terminated with code 0 (OK) 2019-06-23 13:00:38.634 - info: host.iobroker Restart adapter system.adapter.amazon-dash.0 because enabled 2019-06-23 13:01:08.644 - info: host.iobroker instance system.adapter.amazon-dash.0 started with pid 4300 2019-06-23 13:01:09.108 - error: amazon-dash.0 uncaught exception: libpcap.so.0.8: cannot open shared object file: No such file or directory 2019-06-23 13:01:09.114 - error: amazon-dash.0 Error: libpcap.so.0.8: cannot open shared object file: No such file or directory
Neuinstallation des Adapters hat nicht geholfen, auf https://github.com/PArns/ioBroker.amazon-dash habe ich auch nichts gefunden.
Wenn ich das benötigte Paket nachinstallieren möchte, erhalte ich folgende Fehlermeldung:
root@z-iobroker-beta:/opt/iobroker# apt-get install libpcap-dev Paketlisten werden gelesen... Fertig Abhängigkeitsbaum wird aufgebaut. Statusinformationen werden eingelesen.... Fertig E: Paket libpcap-dev kann nicht gefunden werden. root@z-iobroker-beta:/opt/iobroker#
Ich nehme an, das hat nichts mit Deinem Update zu tun, führt aber dazu dass die Dash Buttons nicht mehr genutzt werden können.
Danke für Deine Arbeit!
Ralf -
@andre ich habe mich jetzt an die iobroker v3 Installation gewagt und gleich die MACVLAN Variante nicht die Host Variante. Dazu habe ich die letzt beta geladen und alle Einstellungen gemacht.
Der Fehler den ich kriege hat auch nichts mit Host oder MACVLAN zu tun sondern mit ENV.
Im Log bekomme ich diese Meldung:Sun, 23 Jun 2019 19:19:52 GMT node-telegram-bot-api deprecated Automatic enabling of cancellation of promises is deprecated. In the future, you will have to enable it yourself. See https://github.com/yagop/node-telegram-bot-api/issues/319. at module.js:653:30
Schnell gegoogelt und auf diese Lösung gekommen:
Permanent fix: set the environment variable NTBA_FIX_319 (to any value). You will have to enable Promise cancellation yourself, if you need it. This fix will be applied by default once we bump major version as it introduces backwards-incompatible changes.
Gesagt getan und habe den Container editiert und die ENV hinzugefügt. Leider habe ich das Problem, dass die zusätzliche ENV nicht übernommen wird. Ich habe das jetzt schon öfter probiert, add environment variable und dann deploy ich und die Variable ist wieder weg. Oder liege ich hier vollkommen falsch mit meinem Lösungsversuch? Bin eher nicht der iobroker Spezialist
-
@RK62 Hast du vorher ein "apt-get update" gemacht? Scheint so, als hätte der Docker Container keine Liste mit den Paketen.
-
@Holzlenkrad Das war schon mal ein guter Hinweis, danach konnte ich die Bibliotheken installieren. Nun erhalte ich eine neue Fehlermeldung.
Gruß, Ralf
2019-06-23 23:07:28.248 - info: host.iobroker instance system.adapter.amazon-dash.0 started with pid 1616 2019-06-23 23:07:28.818 - debug: amazon-dash.0 objectDB connected 2019-06-23 23:07:28.845 - debug: amazon-dash.0 statesDB connected 2019-06-23 23:07:28.872 - info: amazon-dash.0 starting. Version 0.3.1 in /opt/iobroker/node_modules/iobroker.amazon-dash, node: v8.16.0 2019-06-23 23:07:28.894 - debug: amazon-dash.0 manual MAC : 25 2019-06-23 23:07:28.895 - info: amazon-dash.0 starting pcap session on default interface 2019-06-23 23:07:28.907 - error: amazon-dash.0 uncaught exception: socket: Operation not permitted 2019-06-23 23:07:28.907 - error: amazon-dash.0 Error: socket: Operation not permitted at new PcapSession (/opt/iobroker/node_modules/pcap/pcap.js:49:39) at Object.exports.createSession (/opt/iobroker/node_modules/pcap/pcap.js:123:12) at main (/opt/iobroker/node_modules/iobroker.amazon-dash/main.js:78:29) at Adapter. (/opt/iobroker/node_modules/iobroker.amazon-dash/main.js:43:5) at emitNone (events.js:106:13) at Adapter.emit (events.js:208:7) at initAdapter (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:5289:18) at createInstancesObjects (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:869:54) at createInstancesObjects (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:830:13) at Socket.that.getForeignObject (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:869:25) 2019-06-23 23:07:28.907 - info: amazon-dash.0 cleaned everything up... 2019-06-23 23:07:28.924 - info: amazon-dash.0 terminating 2019-06-23 23:07:28.960 - error: Caught by controller[0]: Error: socket: Operation not permitted 2019-06-23 23:07:28.960 - error: Caught by controller[0]: at new PcapSession (/opt/iobroker/node_modules/pcap/pcap.js:49:39) 2019-06-23 23:07:28.960 - error: Caught by controller[0]: at Object.exports.createSession (/opt/iobroker/node_modules/pcap/pcap.js:123:12) 2019-06-23 23:07:28.961 - error: Caught by controller[0]: at main (/opt/iobroker/node_modules/iobroker.amazon-dash/main.js:78:29) 2019-06-23 23:07:28.961 - error: Caught by controller[0]: at Adapter. (/opt/iobroker/node_modules/iobroker.amazon-dash/main.js:43:5) 2019-06-23 23:07:28.961 - error: Caught by controller[0]: at emitNone (events.js:106:13) 2019-06-23 23:07:28.961 - error: Caught by controller[0]: at Adapter.emit (events.js:208:7) 2019-06-23 23:07:28.961 - error: Caught by controller[0]: at initAdapter (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:5289:18) 2019-06-23 23:07:28.970 - error: Caught by controller[0]: at createInstancesObjects (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:869:54) 2019-06-23 23:07:28.970 - error: Caught by controller[0]: at createInstancesObjects (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:830:13) 2019-06-23 23:07:28.971 - error: Caught by controller[0]: at Socket.that.getForeignObject (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:869:25) 2019-06-23 23:07:28.971 - error: host.iobroker instance system.adapter.amazon-dash.0 terminated with code 0 (OK) 2019-06-23 23:07:28.971 - info: host.iobroker Restart adapter system.adapter.amazon-dash.0 because enabled
-
@RK62
Das scheint dann so, als ob der Adapter nicht auf das Netzwerk-Interface zugreifen kann um nach den Paketen vom Dashbutton zu lauschen.Wie ist der Docker-Container denn gestartet worden? Im Netmode Host? Damit geht es garantiert.
-
@Holzlenkrad Im Host-Modus, genau wie der V2-Container:
Pakete hatte ich mit "sudo apt-get update" / "sudo apt-get install libpcap-dev" installiert.
-
@RK62
Ach so, hier hieß es schon ein paar Mal, dass der Kernel der Diskstation einen Bug in Verbindung mit dem Netmode host hat.
Aber der V2 Container lief so problemlos mit den Dash Buttons? Dann kann es daran ja nicht gelegen haben...Bin dann auch etwas ratlos, habe halt auch keine Diskstation.
-
In einem Forum habe ich gelesen, dass man bei dem "dashbutton-Problem" folgenden Befehl ausführen soll:
root@z-iobroker-beta:/usr/bin# sudo setcap 'cap_net_raw,cap_net_admin+eip' $(readlink -f $(which node)) sudo: Hostname z-iobroker-beta kann nicht aufgelöst werden Failed to set capabilities on file `/usr/bin/node' (Operation not supported) The value of the capability argument is not permitted for a file. Or the file is not a regular (non-symlink) file root@z-iobroker-beta:/usr/bin#
Wenn ich mit der neuen Meldung weiter google komme ich auf 2 Einträge die sich auf das Filesystem beziehen:
- https://serverfault.com/questions/665709/allowing-node-js-applications-to-run-on-port-80
- https://serverfault.com/questions/801037/allowing-node-js-applications-to-run-libpcap-without-sudo-symlink-issue
Damit bin ich mit meinem Latein am Ende
Magisch ist auch, dass der getcap-Befehl unter meinem V2-Docker gar nicht vorhanden ist.
Werde es die Tage vielleicht nochmal mit einem leeren Container ohne migrierte Daten versuchen.Gruß, Ralf
-
@rostnagel sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
okay, soweit klar
ist es normal nicht so wenn in das feld etwas eintippe das dann vorschläge kommen? bei mir kommt da nix. d.h. ich muss die genaue bezeichnung vom image wissen bzw die version.
Ja, du musst die genaue Version wissen. Es sei denn du hast das Image vorher schon herunter geladen, dann bekommst du in dem Feld auch Vorschläge...
jap, die zusätzlichen treiber und BT geschichten hatte ich schon installiert
habe aber keinen zugriff auf den BT stick.unter V2 hat es gereicht den container mit hoher priorität laufen zu lassen...
schade..Das sollte auch unter V3 genauso funktionieren. Da hat sich nichts geändert. Kannst du denn den Bluetooth Stick über die Kommandozeile im Container sehen?
MfG,
André -
Zur installation von zusätzlichen Linux Paketen könnt ihr auch eine Umgebungsvariable benutzen. in diesem Fall die Variable "PACKAGES" (Siehe hier). Die manuelle Installatation innerhalb eines Containers ist kein guter Weg, da du diesen Schritt immer wiederholen musst, wenn du einen neuen Container erstellst...
@Holzlenkrad sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
Ach so, hier hieß es schon ein paar Mal, dass der Kernel der Diskstation einen Bug in Verbindung mit dem Netmode host hat.
Das ist korrekt, allerdings habe ich im aktuellen Beta (v3.0.2) dazu was getan. Dort sollte der "Host-mode" wieder funktionieren.
sudo setcap 'cap_net_raw,cap_net_admin+eip' $(readlink -f $(which node))
Sollte im aktuellen Beta nicht funktionieren, da das Image statt "sudo" den Befehl "gosu" verwendet.
Capabilities wie "NET_ADMIN" oder "NET_RAW" sollten/ müssen bei Bedarf auch in den erweiterten Container-Einstellungen gesetzt werden. Geht allerdings nur im Portainer:
MfG,
André