NEWS
[HowTo] ioBroker unter Docker auf Synology DiskStation
-
@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é -
@dbathlon sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
NTBA_FIX_319
Ich bezweifle dass diese ENV in meinem Image irgendeine Auswirkung hat, da ich sie nicht definiert habe.
Soweit ich das sehe kommt die Fehlermeldung vom Adapter und ist aktuell nur ein Hinweis dass das "Automatic enabling of cancellation of promises" in Zukunft nicht mehr so funktionieren wird.
Da muss aber der Adapter-Entwickler ran. Am Besten den Fehler mal als Issue zum Adapter bei Github posten. -
@dbathlon sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
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.
Das habe ich übrigens auch schon ein paar mal beobachaten können. Vermute mal, dass das ein Portainer-Problem ist. Wenn ich die ENV ändern will muss ich immer den Umweg über einen neuen Container machen... Über Edit geht es wohl nicht.
-
ich weiss jetzt nicht irgendwo hatte ich schon mal gefragt.
Ich würde gerne die MACVLAN Ips vergeben in einem Bereich 200-220.
Was muss ich beim erstellen für ein subnetz angeben ?
Subnet 192.168.2.0/24 hab ich aktuell da svergibt aber die Ips direkt bei 1 .. die sind jedoch schon von der fritzbox vergeben ... -
@ChrisXY
Foto von weiter oben... -
Danke ich bin 2 mal durchgegangen habe es übersehen. Verstehe ich trotzdem noch nicht so ganz Kann ich nicht sagen nur IPS 200-220 vergeben?
-
du meinst ich soll den Fehler iobroker-community-adapters/ioBroker.telegram im Github melden? Der Fehler scheint ja bekannt zu sein und es gibt ein Issue dazu aber in der node-telegram-bot-api. Ich denke mal, dass der Adapter diese API benutzt. Der permanent fix ist ja, die Environment Variable zu setzen.
-
@ChrisXY ich verstehe nicht genau was du machen willst. Du hast ja dein Netzwerk Subnetz zu Hause 192.168.2.0/24. Die 192.168.2.1 ist dein Gateway bzw. deine Fritzbox und dein DHCP Server? Willst du jetzt für das MACVLAN ein neuen Subnetz erstellen oder einfach dem iobroker die IP 192.168.2.200 geben?
-
@ChrisXY sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
ich weiss jetzt nicht irgendwo hatte ich schon mal gefragt.
Ich würde gerne die MACVLAN Ips vergeben in einem Bereich 200-220.
Was muss ich beim erstellen für ein subnetz angeben ?
Subnet 192.168.2.0/24 hab ich aktuell da svergibt aber die Ips direkt bei 1 .. die sind jedoch schon von der fritzbox vergeben ...Deshalb empfehle ich die Verwendung von MACVLAN an erfahrene Benutzer mit Netzwerkkenntnissen. Das Thema ist nämlich gar nicht so einfach...
@ChrisXY sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
Kann ich nicht sagen nur IPS 200-220 vergeben?
Genau das geht nämlich nicht! Du musst in deinem Docker ein bestimmtes Netzwerk definieren, damit nur bestimmte IP-Adressen verwendet werden. Docker ist und hat keinen herkömmlichen "DHCP".
Bei Heise gibt es einen Netzwerkrechner. Mit diesem kannst du dir ein passendes Netz "errechnen" lassen. Zum Beispiel so:
Das wäre jetzt das kleinste Netz das die Adressen von 200 bis 220 enthält. CIDR-Suffix 27, Netzwerkadresse .192.
Allerdings enthält das Netz nicht nur 200 bis 220 sondern noch ein paar mehr Adressen:Bitte niemals 192.168.2.0/24 angeben. Da sind Probleme vorprogrammiert...
Meine Empfehlung: Überlege ob du solch ein Netz überhaupt brauchst oder doch nur dem ioBroker eine eigene IP über MACVLAN gönnst (wie im Tutorial beschrieben).
Falls du die anderen IPs für andere Container verwenden willst, überlege ob das sinnvoll ist. Ein Redis- oder Maria-DB-Container kommt auch mit einem Bridge-Netzwerk und die Weiterleitung eines einzelnen Ports zurecht. Wenn z.B. ioBroker auf einen Redis-Container zugreifen soll, dann hänge beide (ioBroker zusätzlich, Redis ausschließlich) in ein bridged Netzwerk und die beiden können miteinander (docker-intern) kommunizieren....MfG,
André -
@dbathlon sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
du meinst ich soll den Fehler iobroker-community-adapters/ioBroker.telegram im Github melden? Der Fehler scheint ja bekannt zu sein und es gibt ein Issue dazu aber in der node-telegram-bot-api. Ich denke mal, dass der Adapter diese API benutzt. Der permanent fix ist ja, die Environment Variable zu setzen.
Ja, das wäre der Weg...
Ich verstehe das so: der Fehler ist in der node-telegram-bot-api bekannt. Der Entwickler des Telegram-Adapters hat diese API in seinen Adapter integriert. Es gibt einen Fix, den muss der Entwickler des Adapters selbst integrieren...
Die "Environment Variable" von der bei dem verlinkten Git-Issue gesprochen wird, ist nicht die "Docker-ENV"...
Erklärung zum allgemeinen Begriff hier: https://de.wikipedia.org/wiki/UmgebungsvariableAber nochmal für mich, wo bekommst du denn den Fehler angezeigt? Ich nutze auch den telegram-Adapter, habe aber diesbezüglich nichts im Log....
MfG,
André -
Hi Andre,
Hab jetzt mal die Host Version installiert läuft ohne Probleme einzige was ich habe ist das ich den Zigbee Adapter nicht ans laufen bekomme.
Das habe ich im Log stehen.
zigbee.0 2019-06-26 09:20:10.156 error Error while starting zigbee-shepherd!. Error: Error: No such file or directory, cannot open /dev/ttyACM0Grüße Steffen