NEWS
[HowTo] ioBroker unter Docker auf Synology DiskStation
-
Hallo,
ich habe mir mir auf meiner Synology DS 916+ IO-Broker im Docker installiert. Läuft soweit alles gut. Seit einigen Wochen probiere ich verschiedene Visualisierungsmöglichkeiten aus. Mein Favorit für die Visualisierung ist Lovelace. Dort habe ich auch schon einige Tests und Versuche gemacht, das hat auch ganz gut geklappt. Nun zu meinem Problem: Wenn ich in der Lovelace Instanz in den Haupteinstellungen eine Änderung mache (egal welche) und speichere, fehlt mir danach im UI in Lovelace der Config-Button und ich kann Lovelace nicht mehr über das UI konfigurieren. Erst, wenn ich eine neue Instanz erzeuge, kann ich diese wieder solange konfigurieren, bis ich eben die Änderungen mache und speichere, dann ist es wieder vorbei.
Ich habe bereits im IO-Broker Lovelace Thread nach Hilfe gefragt, leider kennt das Problem dort niemand und konnte mir auch nicht konkret helfen. Ich habe mich gefragt, was meine Installation ggf. von anderen unterscheidet und ich könnte mir vorstellen, dass es eben die Tatsache ist, dass ich IO-Broker im Docker auf der Syno laufen habe. Sollte dem nicht so sein, auch OK, dann hätte ich es aber wenigstens ausgeschlossen.
Wenn mir jemand helfen könnte wäre das echt klasse, sollte das Thema hier völlig deplatziert sein, bitte löschen.
Zu meinem System:
DS 916+
Docker: 18.09.0-0506
Portainer: 1.23.2
IO-Broker: NPM: 6.14.4 läuft mit Host-Verbindung im Docker
Node.JS: 10.20.1
JS-Controller: 2.2.9Lovelace: 1.0.13 (Wobei das Problem in unterschiedlichen Versionen immer gleich auftritt)
Das Problem äußert sich wie folgt:
Menü des UI bei Initalinstanz ohne Änderung:
Bei beliebiger Änderung im Reiter "Haupteinstellungen" der Lovelace Instanz:
Noch ein paar Zusatzinfos:
- Log-Datei zeigt keine Fehler
- Konsole in Chrome oder Opera zeigen keine Einträge beim Aufrufen der Seiten.
- Cache der Browser geleert, auf verschiedenen Browsern und Geräten gestestet, immer das gleiche Verhalten.
Es wäre wirklich sensationell, wenn mir jemand helfen könnte, das Problem zu lösen.
Danke und viele Grüße,
Domi
-
@Domi1893 mal auch im GitHub ein issue angelegt?
-
@apollon77 GitHub Lovelace, ja.
Grüße
-
@Domi1893
Hallo habe das Verhalten gerade nachstellen können. Du hast bestimmt die Authentifizierung aktiviert, richtig? Bei mir ist es so, dass der Eintrag fehlt wenn Authentifizierung aktiviert ist. Schalte ich es aus, ist der Punkt wieder da. Vielleicht ist das interessant für dein Issue auf Github... Denke das Ganze ist ein Adapterproblem...
Übrigens: Wenn es Probleme dieser Art gibt, nutzt am Besten zum Testen den "Incognito Modus" des Browsers um Probleme mit Daten im Cache zu vermeiden...MfG,
André -
@andre Das ist sehr interessant, vielen Dank. Bei mir tritt es auf, sobald ich in den Haupteinstellungen irgendwas verändere, vollkommen egal was. Die Veränderung des Ports reicht schon aus, dann ist der im UI verschwunden. Passiert bei dir bei der Veränderung anderer Einstellungen nichts, z.B. den Port verändern?
Grüße,
Domi
-
@Domi1893
Komisch, heute tritt es nicht mehr auf. Jetzt lässt sich auch die Authentifizierung aktivieren ohne dass es Probleme gibt. Auch alles Andere kann ich verstellen. Kein Fehler.
Ich teste übrigens mit Chrome im Inkognito Modus.MfG,
André -
@andre Das ist sehr komisch. Ich habe es vorher auch im privaten Modus versucht mit Chrome und Opera. Bei mir ist es unverändert. Änderung beliebig, Menü weg und in dieser Instanz nicht wieder herstellbar durch Rückstellung der Änderung.
Grüße,
Domi
-
HILFE......
ich wollte den js Controller updaten (hab noch die Installation der V2 am laufen)
jetzt startet aber der komplette iobroker nicht mehr....
kann mir da jemand einen tipp geben woran das liegen kann?
Will das nicht alles neu machen müssen, da steckt so unfassbar viel arbeit drin...
Wenn das gehen sollte, ich habe ein Backup mit Backitup, dieses ist aber nur 3 MB groß?
Vielleicht kennt sich damit jemand aus -
@steff-h naja Hättest du ein Log?
Das Backup muss nicht gross sein, es enthält nur die Konfiguration
-
also ich habe jetzt eine komplett neue Instanz aufgesetzt.....
die Situation mit dem Backup, dass man 2 Stunden warten muss, hätte ich bei einem 3 MB großen Update nicht gedacht
Gedult hätte ich mitbringen müssen, das hatte ich irgendwie aufgrund des Schocks nicht.....er hat jetzt sehr viel wiederhergestellt, muss jetzt alles Punkt für Punkt kontrollieren, ob wirklich alles wieder da ist
js-controller ist jetzt auf Version 2.2.9, er bietet mir aber wieder das Update zu 3.0.17 an, genau dieses Update ging bei der alten Instanz schief.....Ebenso ist mir vor dem Absturz noch aufgefallen, dass Javaskript in der Version 4.5.1 nicht mehr ausführbar war (Punkt und "Play-Pfeil" immer rot) weshalb ich den js-controller überhaupt updaten wollte.....weiß man da eventuell einen bekannten Fehler?
-
@steff-h Das update ist deswegen so klein weil der controller nach dem einspielen eines Backups einfach alles neu frisch installiert.
Ohne Log zum Thema "Update auf js.controller 3.0" kann man wenig sagen. Da es aber schon ein paar tausend User erfolgreich gemacht haben ... ...
AUch zu js 4.5.1 ist bisher kein Problem bekannt
Zu allem gilt an sich: Was sind denn die Ausgaben? Was steht denn im Log?
-
Hab unter Version 4 des ioBroker-Abbilds auf meiner DS718+ ein Update des js-controllers auf Version 3.0.18 durchgeführt. Dabei wurden auch zahlreiche meiner Adapter aktualisiert. Lief alles problemlos durch. Auch bei der Bedienung des ioBrokers gibt es bisher keine Auffälligkeiten.
-
@apollon77 said in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
@steff-h Das update ist deswegen so klein weil der controller nach dem einspielen eines Backups einfach alles neu frisch installiert.
Ohne Log zum Thema "Update auf js.controller 3.0" kann man wenig sagen. Da es aber schon ein paar tausend User erfolgreich gemacht haben ... ...
AUch zu js 4.5.1 ist bisher kein Problem bekannt
Zu allem gilt an sich: Was sind denn die Ausgaben? Was steht denn im Log?
Mit dem Log kann ich leider nicht dienen, Instanz leider komplett weg, werde mich aber die Tage nochmal am update versuchen
-
Moin,
nachdem ioBroker nun ja als macvlan auf IP 192.168.1.249 in meinem Netzwerk auf nem Pi-Host läuft, wollte ich nun die andere Anleitung zur Anbindung des E3/DC-Hauskraftwerks ausführen und hab mir mit Docker Compose eine MySQL-DB samt phpMyAdmin (2 voneinander abhängige Container) installiert. Jetzt laufe ich dann wohl auf das Problem, dass ich mit dem Adapter sql.0 Probleme beim Zugriff auf die MySQL-DB bekomme.
Die beiden Container MySQL und phpMyAdmin bekommen automatisch ein eigenes Netzwerk mit IPs drin und verstehen sich dadurch. Der Container iobroker hat neben dem Netzwerk iob_public auch noch die Standard-Bridge, wie angeraten. Vom ioBroker aus komme ich natürlich trotzdem nicht an die DB, zumindest nicht über die IP des Raspi-Hosts (192.168.1.25).
Nun habe ich dem Container mysql-iobroker per Portainer zusätzlich auch noch die Standard-Bridge hinzugefügt:
Nun kann ioBroker tatsächlich die MySQL-DB erreichen:
So weit, so gut. Nun stellen sich die Fragen:
- Um zu verhindern, dass das manuell zum MySQL-Container hinzugefügte Bridge-Netzwerk nach jedem Neustart des MySQL-Containers wieder weg ist, kann ich das Hinzufügen der Bridge vermutlich im docker-compose.yml angeben (gehe ich mal von aus). Kann ich da angeben, dass der Container jedesmal die 172.17.0.3 bekommt? Weil ich die im ioBroker ja fest hinterlegen muss...
- Was passiert (z.B. bei einem Pi-Neustart), wenn ein anderer Container vor dem MySQL-Container startet und die 172.17.0.3 dann evtl. schon belegt ist? Wenn ich Bridge zu nem Container per Portainer hinzufüge, dann scheint die IP-Adresse ja frei vergeben zu werden. Dann könnte ja die Datenbank ne andere IP bekommen und für ioBroker wieder nicht erreichbar sein...
- Oder anders gefragt, wie kann ich irgendwie sicherstellen, dass die 172.17.0.3 immer für den MySQL-Container frei bleibt? Müsste ich dann alle Container, die ich in Zukunft benutze so per Docker oder Docker Compose erstellen/starten, dass ich immer das Netzwerk mit IP-Adresse mitgebe (vorausgesetzt das geht)?
-
Die Probleme mit der Anbindung der direkt als Paket auf der DS eingerichteten MariaDB 10 Datenbank über MACVLAN führten letztlich dazu, dass ich etwas entnerft auf einen Host-Betrieb des ioBroker umgeschwenkt bin. Leider haben sich da irgendwie im MACVLAN- oder Bridge-Betrieb immer die SQL-Datenbank und der Zugriff auf den yahka-Adapter ausgestochen. Seit Umstellung auf den Host-Betrieb läuft wieder alles rund.
-
@dtp: Du hättest eigentlich die beiden Container MYSQL und phpMyADmin in dasselbe Netzwerk hängen müssen, wie dein iobroker container. Also einfach über docker-compose beim start den beiden containern das existierende macvlan (iob_public) zuweisen. Dann sehen und sprechen alle 3 miteinander.
Das bridge Netzwerk ist dazu eigentlich nicht notwendig.
(wenn ich mich richtig an die Anleitung von buanet erinnere, hat er dort dem macvlan bei Erstellung allerdings nur eine einzige IP-Adresse zugewiesen, das müsstest Du erweitern)IP-Adressen (und sogar MAC-Adressen für z.B. Filterregeln in Deinem Router) lassen sich einfach in der docker-compose zuweisen. Hier mal ein Auszug aus meinem eigenen docker-Container, aber Zuweisung zu einem existirenden NEtzwerk funktioniert mit jedem anderen Container auch.
services: iobroker: image: buanet/iobroker:latest container_name: ioBroker hostname: ioBroker-Host *** environment / volumes / etc. Abschnitt *** (den Abschnitt habe ich hier rausgelöscht, um es übersichtlicher zu halten) mac_address: 02:42:13:5B:C5:64 (Beispiel) networks: iob_public: ipv4_address: 192.168.1.130 (Beispiel) #network "iob_public" zeigt auf bereits existierendes externes docker netzwerk networks: iob_public: external: name: iob_public
Wenn Du das willst, kannst Du Deinen Containern auch noch das bridge Netzwerk zusätzlich mitgeben. Ich hätte vermutlich nur Angst, dass es da zu Konflikten kommt. Der Abschnitt in docker-compose sähe ungefähr so aus:
services: iobroker: *** diverses *** networks: iob_public: ipv4_address: 192.168.1.130 (Beispiel) bridge: ipv4_address: 172.17.0.3 (Beispiel)
GRüße
-
@ts020339 sagte in [[HowTo][Anleitung]
Okay, danke für die Bestätigung dass es so gehen müsste.
(wenn ich mich richtig an die Anleitung von buanet erinnere, hat er dort dem macvlan bei Erstellung allerdings nur eine einzige IP-Adresse zugewiesen, das müsstest Du erweitern)
Variante 1: Exakt das hat eine schnelle Lösung erstmal verhindert, das hatte ich tatsächlich auch schon probiert. Kann ich einfach in Portainer die Netzwerkkonfiguration iob_public_conf und das Netzwerk iob_public löschen, neu erstellen und dann dem ioBroker-Container sagen, er soll das neue Netzwerk nehmen? Oder müsste ich bei jedem Neustart das Netzwerk neu hinzufügen (merkt er sich ja scheinbar nicht wenn nachträglich hinzugefügt)? Momentan merkt er sich iob_public, weil der Container damit erstellt/neu aufgebaut wurde? Oder würde da ein Recreate oder Edit mit neu deployen helfen? Daten dürfte ich damit nicht verlieren, da ich ja das Verzeichnis wie in der Anleitung beschrieben außerhalb des Containers gemappt habe?!
Variante 2: Als Alternative hatte ich es bereits geschafft per Docker Compose tatsächlich für MySQL und phpMyAdmin ein separates (virtuelles) Netzwerk mit festen IPs drin zu bauen. Damit könnte ich dann immer dieselbe IP in ioBroker für die DB-Verbindung angeben. Inzwischen habe ich auch herausgefunden, dass man die DB-Verbindung über den Servicenamen hinbekommt. Dann ist es ja sowieso kein Problem mehr. Immer unter der Voraussetzung, man fügt dem ioBroker-Container das neue Netzwerk hinzu. Was man dann bei jedem Neustart aber wiederholen muss und das Runterfahren des DB-Stacks geht dann auch nicht, da dessen Netzwerk noch von ioBroker verwendet wird.
Variante 3: Du erstellst also auch ioBroker per Docker Compose, wenn ich das richtig gesehen habe, ne? Aber das Netzwerk iob_public erstellst du also nicht per Compose sondern greifst auf es als bestehendes Netzwerk zurück?! Warum nicht auch komplett erstellen? Müsste doch mit den gezeigten Bordmitteln auch gehen, oder?
Wollte Compose erst vermeiden, aber das gleichzeitige reproduzierbare Hoch- und Runterfahren hat schon was, merke ich inzwischen. War mir auch nicht sicher, ob ich die DB für ioBroker brauche (hielt die Anbindung meines E3/DC-Hauskraftwerks erst für ne Spielerei, deswegen DB optional für Spielbetrieb), aber inzwischen werde ich die drei Container wohl immer zusammen brauchen. Würdest du mir vielleicht dein komplettes docker-compose.yml zukommen lassen (geht das per Chat)? Dann würde ich den Schritt wagen und hätte eine vergleichbare Lösung in der Hinterhand als Backup sozusagen... -
@andre said in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
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éGuten Abend,
ich versuche seit einigen Tagen mein RPI Iobroker Installation auf meine Synology, im Docker unter zu bringen.
Bis jetzt habe ich soweit alles zum laufen bekommen, bis auf zwei Dinge hmip, und den radar2 Adapter.Auch mit den Env Variable Packages "vi libcap2-bin arp-scan bluetooth bluez libbluetooth-dev libudev-dev net-tools", dem einschalten der Capabilities, versucht den Befehl in der konsole mit
gosu root setcap 'cap_net_raw,cap_net_admin+eip' $(readlink -f $(which node))
oder auch
sudo setcap 'cap_net_raw,cap_net_admin+eip' $(readlink -f $(which node))
Kommt dieser Fehler...
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
Komme ich nicht weiter und der Adapter bringt mir ständig diesen Fehler...
radar2.0 2020-04-24 22:07:37.928 error (12366) Error: bind EACCES 0.0.0.0:67 at state.handle.lookup (dgram.js:242:18) at process._tickCallback (internal/process/next_tick.js:63:19) radar2.0 2020-04-24 22:07:37.927 error (12366) uncaught exception: bind EACCES 0.0.0.0:67
Habe eine macvlan Konfiguration...
Hat jemand eine Idee oder weiss was dem kleinen Radar2 hier fehlt?
Bin ich mit den setcap auf dem richtigen Weg? Warum will er den die Befehle hier nicht nehmen?Würde mich über Hilfe oder ein Link zur Problemlösung freuen, danke!
-
@ts020339 sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
Danke für den Ansatz. Ohne die zusätzliche Bridge und mit vordefiniertem macvlan-Netzwerk habe ich die Erstellung des ioBroker-Containers per Compose nun auch hinbekommen. Lediglich die Bridge funktioniert noch nicht.
Wenn Du das willst, kannst Du Deinen Containern auch noch das bridge Netzwerk zusätzlich mitgeben. Ich hätte vermutlich nur Angst, dass es da zu Konflikten kommt. Der Abschnitt in docker-compose sähe ungefähr so aus:
services: iobroker: *** diverses *** networks: iob_public: ipv4_address: 192.168.1.130 (Beispiel) bridge: ipv4_address: 172.17.0.3 (Beispiel)
version: "3.8" services: iobroker-test: container_name: iobroker-test image: buanet/iobroker:latest hostname: iobroker restart: always mac_address: 02-42-C0-A8-01-F9 dns: - 127.0.0.1 - 192.168.1.1 networks: iobroker-network: ipv4_address: 192.168.1.225 bridge-network: ipv4_address: 172.17.0.100 volumes: - "/home/pi/docker-data/iobroker-compose-data:/opt/iobroker" environment: - PACKAGES=nano networks: iobroker-network: external: name: iobroker-network #bridge-network: # external: # name: bridge
Wie oben aufgeführt, gibt's den Fehler: ERROR: Service "iobroker-test" uses an undefined network "bridge".
Wenn ich versuche bridge-network vergleichbar auf die vorhandene Standard-Bridge zu mappen (auskommentierte Zeilen wieder rein), dann gibt's den Fehler ERROR: for iobroker-test user specified IP address is supported on user defined networks only. Mir scheint das mit dem Vergeben der IP der falsche Ansatz zu sein. Wie kann ich definieren, die Standard-Bridge zusätzlich zu verwenden aber ohne eine IP zu definieren?Danke und Grüße,
Steffen -
@stevie77 said in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
dann gibt's den Fehler ERROR: for iobroker-test user specified IP address is supported on user defined networks only
Ist mir tatsächlich auch aufgefallen.
Passiert übrigens genauso, wenn man versucht der Bridge direkt über Poirtainer eine IP zuzuweisen.
Ohne feste interne IP kann es beim RPi-Reboot passieren, dass man hinterher die interne influxdb- und mosquitto-IP im IOBroker wieder anpassen muss. (Je nachdem in welcher Reihenfolge die Container durchstarten)
Ein Reboot kommt bei mir nicht oft vor, habe ich daher nicht weiter verfolgt.