NEWS
[HowTo] ioBroker unter Docker auf Synology DiskStation
-
-
Lieber Andre,
@andre said in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:Wenn du von der Synology die SimpleAPI in deinem ioBroker-Container mit MACVLAN ansprechen möchtest, musst du dem Container ein zusätzliches Bridge-Netzwerk hinzufügen.
Funktioniert das auch um eine Verbindung zwischen ioBroker und MariaDB im NAS-Host zu ermöglichen?
-
@Fichtendickicht
Ja, mit dieser Konfiguration macht man die Kommunikation zwischen Host (DS) und Container trotz MACVLAN möglich.Allerdings könnte man die MariaDB auch als Container laufen lassen. Dazu schreibe ich aktuell ein Tutorial (für fortgeschrittene User) zum Thema "Docker Compose über Portainer". Damit könnte man mit einem Konfigurationsfile mehrere Container aufsetzen (etwa Maria DB, Redis usw...), inkl. Netzwerkkonfiguration...
MfG,
André -
@andre
Darf ich Dich um eine etwas genauere Auführung bezüglich der Erstellung einer eigenen Bridge bitten?
Mein ioBroker hat ein MACVLAN, die Adresse 10.0.0.100 und liegt im selben Adressraum wie die Syno (10.0.0.79). Was muss ich denn da bitte eintragen, damit ein Zugriff auf den Host funktioniert?
Ich kann im Netz leider keine vernünftige Anleitung finden.
Danke! -
@Fichtendickicht
Nichts vernünftiges im Web zu finden? Dann muss ich das heute Abend wohl mal ändern! #knowledgebaseDa es sich um ein internes Netz handelt, kannst du da fast machen was du willst (soweit ich weiß). Ich orientiere mich immer an dem default bridge netz. In der Konfiguration sieht das dann so aus:
bridge: driver: bridge ipam: config: - subnet: 172.18.0.0/16 gateway: 172.18.0.1 ip_range: 172.18.0.1/24
MfG,
André -
@andre
Vielen Dank. Habe ich als eigenes Network konfiguriert und dem ioBroker hinzugefügt. Dann ioBroker neu gestartet.
Nur wie bekomme ich jetzt eine Verbindung zur MariaDB im NAS-Host?
-
@Fichtendickicht
Du musst dann natürlich auch die IP der DS aus dem Bridge Netzwerk im Adapter verwenden. Diese entspricht dem Gateway des Bridge-Netzwerks. Oder du verwendest den Hostnamen der DS.MfG,
André -
@andre
Tut mir Leid, das verstehe ich nicht. Wenn ich ein Bridge Netzweerk erstelle mit Deinen Werten bekomme ich keine Verbindung hin und kann auch als Gateway die IP meines DS nicht eintragen.
Wenn ich als Subnet 10.0.0.0/16 eintrage steht das im Konflikt mit der IP des ioBrokers (10.0.0.100).
Oder muss ich dem ioBroker einen anderen Adressbereich zuweisen damit ich in der Bridge den Adressbereich meiner DS verwenden kann? -
@Fichtendickicht Du bist etwas falsch abgebogen:
Das Bridge-Netz darf nicht im gleichen Adressraum liegen wie die Syno.Beim erstellen schlägt er ja z.B. schon was vor:
Subnet: 172.20.0.0/16
IP range 172.20.10.128/25
Gateway 172.20.10.11So, jetzt hätte deine Syno die IP-Adresse 172.20.10.11, der ioBroker Container bekommt wenn er dem Bridge-Netz zugeordnet ist automatisch auch eine IP-Adresse in diesem Netzwerk. Und über diese beiden IP-Adressen kann dann der Container mit der Syno und umgedreht kommunizieren. Die IP-Adressen in diesem Bridge-Netz sind nicht von außen erreichbar, die kannst du somit auch nicht anpingen oder im Browser aufrufen.
-
@duffbeer2000 said in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
172.20.10.128/25
Klappt!
sql.0 2019-12-19 16:12:07.713 info (662) enabled logging of modbus.0.holdingRegisters.23.3304_Temperature, Alias=false, 11 points now activated sql.0 2019-12-19 16:12:07.712 info (662) enabled logging of modbus.0.holdingRegisters.100.846_Battery_Time to Go (System), Alias=false, 10 points now activated sql.0 2019-12-19 16:12:07.712 info (662) enabled logging of modbus.0.holdingRegisters.100.845_Battery_Consumed Amphours (System), Alias=false, 9 points now activated sql.0 2019-12-19 16:12:07.712 info (662) enabled logging of modbus.0.holdingRegisters.100.844_Battery_state (System), Alias=false, 8 points now activated sql.0 2019-12-19 16:12:07.712 info (662) enabled logging of modbus.0.holdingRegisters.100.843_Battery_State of Charge (System), Alias=false, 7 points now activated sql.0 2019-12-19 16:12:07.711 info (662) enabled logging of modbus.0.holdingRegisters.100.842_Battery_Power (System), Alias=false, 6 points now activated sql.0 2019-12-19 16:12:07.711 info (662) enabled logging of modbus.0.holdingRegisters.100.841_Battery_Current (System), Alias=false, 5 points now activated sql.0 2019-12-19 16:12:07.711 info (662) enabled logging of modbus.0.holdingRegisters.100.840_Battery_Voltage (System), Alias=false, 4 points now activated sql.0 2019-12-19 16:12:07.710 info (662) enabled logging of modbus.0.holdingRegisters.100.819_AC_Consumption L3, Alias=false, 3 points now activated sql.0 2019-12-19 16:12:07.710 info (662) enabled logging of modbus.0.holdingRegisters.100.818_AC_Consumption L2, Alias=false, 2 points now activated sql.0 2019-12-19 16:12:07.708 info (662) enabled logging of modbus.0.holdingRegisters.100.817_AC_Consumption L1, Alias=false, 1 points now activated sql.0 2019-12-19 16:12:07.244 info (662) Connected to mysql sql.0 2019-12-19 16:12:04.773 info (662) starting. Version 1.9.4 in /opt/iobroker/node_modules/iobroker.sql, node: v10.17.0 host.iobroker 2019-12-19 16:11:54.566 info instance system.adapter.sql.0 started with pid 662 host.iobroker 2019-12-19 16:11:52.103 info instance system.adapter.sql.0 terminated with code null ()
Ihr seid die Größten! Vielen Dank!
(was ich leider noch nicht ganz verstehe, ist der Umstand, dass eine beliebige Adresse im GAteway immer die Verbindung zur DS darstellt. Aber egal, jetzt funktioniert´s ja). -
@Fichtendickicht Das Bridge Network wird auf dem Host erstellt. Daher ist der Host auch immer das Gateway.
-
@duffbeer2000
Wenn ich das richtig verstehe, wird die bridge auf dem Host (meiner DS) erstellt obwohl ich das Netzwerk im Portainer errichtet habe.
Und weil die Bridge auf dem Host erstellt wird führt das auf der Bridge eingetragene Gateway immer zu dem Container welcher an die Bridge angeschlossen ist. -
@andre
Ich kann auf Deiner Seite hier nichts posten, die Seite hört nicht auf zu laden.Wenn ich nämlich den iobroker mit den von Dir vorgeschlagenen Volumes installieren will,
bekomme ich folgende Fehlermeldung:, ------------------------------------------------------------, --------------- 2019-12-19 18:07:03 ---------------, ------------------------------------------------------------, , ------------------------------------------------------------, ----- Welcome to your ioBroker-container! -----, ----- Startupscript is now running. -----, ----- Please be patient! -----, ------------------------------------------------------------, , ------------------------------------------------------------, ----- Debugging information -----, ----- -----, ----- System -----, ----- arch: x86_64 -----, ----- -----, ----- Versions -----, ----- image: v4.0.0 -----, ----- node: v10.17.0 -----, ----- npm: 6.11.3 -----, ----- -----, ----- ENV -----, ----- AVAHI: false -----, ----- PACKAGES: nano -----, ----- SETGID: 1000 -----, ----- SETUID: 1000 -----, ------------------------------------------------------------, , ------------------------------------------------------------, ----- Step 1 of 5: Installing additional packages -----, ------------------------------------------------------------, , The following packages will be installed: nano..., Done., , ------------------------------------------------------------, ----- Step 2 of 5: Detecting ioBroker installation -----, ------------------------------------------------------------, , There is data detected in /opt/iobroker, but it looks like it is no instance of iobroker!, Please check/ recreate mounted folder/ volume and restart ioBroker container.,
Und es ist unerheblich ob ich mittels den Container kopiere oder aus dem Image neu erstelle.
-
@Fichtendickicht
Ich glaube du musst dir ganz dringend noch ein paar Basics zu Docker aneignen....@Fichtendickicht sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
Wenn ich das richtig verstehe, wird die bridge auf dem Host (meiner DS) erstellt obwohl ich das Netzwerk im Portainer errichtet habe.
Portainer ist nur eine Webobefläche zur Administration von Docker, was als Dienst auf der DS läuft den du über das Docker-paket im DSM installiert hast... Du kannst nichts im Portainer einrichten. Die kannst nur mit Hilfe von Portainer etwas unter Docker einrichten....
@Fichtendickicht sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
Und weil die Bridge auf dem Host erstellt wird führt das auf der Bridge eingetragene Gateway immer zu dem Container welcher an die Bridge angeschlossen ist.
Das Bridge-Netzwerk ist ein virtuelles Netz, dass nur innerhalb von Docker auf deiner DS existiert. Dabei führt das Gateway immer auf die DS.
BTW:
@andre sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
Nichts vernünftiges im Web zu finden? Dann muss ich das heute Abend wohl mal ändern! #knowledgebase
Brauch ich nichtmal was tun. Habe ich im Mai schon gemacht: https://buanet.de/knowledge-base/eigenes-bridged-netzwerk-anlegen/
MfG,
André -
@andre said in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
Brauch ich nichtmal was tun. Habe ich im Mai schon gemacht: https://buanet.de/knowledge-base/eigenes-bridged-netzwerk-anlegen/
Du hast Recht, ich habe erst gestern damit begonnen un muss noch viel lernen.
Aus Deinem Tutorial kann ich jedoch nicht entnehmen, dass die Gateway IP der Bridge auch gleichzeitig die Verbindung zum DS-Host ist um bsp-weise eine externe SQL-Datenbank anzubinden.Und hier hab ich nur ausgeführt was
@duffbeer2000 said in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
@Fichtendickicht Das Bridge Network wird auf dem Host erstellt. Daher ist der Host auch immer das Gateway.
-
@Fichtendickicht sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
@andre
Ich kann auf Deiner Seite hier nichts posten, die Seite hört nicht auf zu laden.Wenn ich nämlich den iobroker mit den von Dir vorgeschlagenen Volumes installieren will,
bekomme ich folgende Fehlermeldung:, ------------------------------------------------------------, --------------- 2019-12-19 18:07:03 ---------------, ------------------------------------------------------------, , ------------------------------------------------------------, ----- Welcome to your ioBroker-container! -----, ----- Startupscript is now running. -----, ----- Please be patient! -----, ------------------------------------------------------------, , ------------------------------------------------------------, ----- Debugging information -----, ----- -----, ----- System -----, ----- arch: x86_64 -----, ----- -----, ----- Versions -----, ----- image: v4.0.0 -----, ----- node: v10.17.0 -----, ----- npm: 6.11.3 -----, ----- -----, ----- ENV -----, ----- AVAHI: false -----, ----- PACKAGES: nano -----, ----- SETGID: 1000 -----, ----- SETUID: 1000 -----, ------------------------------------------------------------, , ------------------------------------------------------------, ----- Step 1 of 5: Installing additional packages -----, ------------------------------------------------------------, , The following packages will be installed: nano..., Done., , ------------------------------------------------------------, ----- Step 2 of 5: Detecting ioBroker installation -----, ------------------------------------------------------------, , There is data detected in /opt/iobroker, but it looks like it is no instance of iobroker!, Please check/ recreate mounted folder/ volume and restart ioBroker container.,
Und es ist unerheblich ob ich mittels den Container kopiere oder aus dem Image neu erstelle.
Die Fehlermeldung die ich ins Logging eingebaut habe sagt doch eigentlich alles:
There is data detected in /opt/iobroker, but it looks like it is no instance of iobroker!, Please check/ recreate mounted folder/ volume and restart ioBroker container.,
Wenn du einen Ordner einbindest prüft das Script ob sich dort eine ioBroker-Installation befindet. Wenn ja, passiert nichts, wenn der Ordner Leer ist, wird er vom Script gefüllt, sind Daten im Ordner, die aber nicht als ioBroker-Installation identifiziert werden können bricht das Script ab... Was bei dir der Fall ist. Scheint als sei dein Ordner nicht leer. Wenn du mir einem leeren Ordner starten willst, lösche den Ordner auf deiner DS nochmal und lege ihn neu an...
@Fichtendickicht sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
Aus Deinem Tutorial kann ich jedoch nicht entnehmen, dass die Gateway IP der Bridge auch gleichzeitig die Verbindung zum DS-Host ist um bsp-weise eine externe SQL-Datenbank anzubinden.
Dem kann ich nur zustimmen. Das Thema mit dem zweiten Bridge-Netzwerk wird aber auch gar nicht im Tutorial behandelt
MfG,
André -
Danke hat jetzt, nachdem ich ein eigenes Bridge Netzwerk angelegt habe hat es geklappt. Daten kommen im Iobroker an.
Ich meine es hätte woh auch über das Standard Bridge funktioniert - hätte ich in meinem Script auch die "BridgeIP" genommen... anstelle der Macvlan Adresse. Denkfehler...
war aber schwere Geburt!
auch allen anderen Beteiligten Vielen Dank für die konstruktiven Vorschläge -
Hallo zusammen,
iobroker läuft eigentlich ohne Probleme im Docker auf meiner DS218+ im Host - Modus.
Leider nur die Console funktioniert nicht mehr seit einiger Zeit, keine Ahnung warum.
Ich habe mir nun Zeit genommen auch die Installation über Portainer einmal auszuprobieren.
Ich habe soweit alles nach Anleitung hinbekommen. Auch hier habe ich den Container im Host-Modus angelegt, und zuvor meine alte Installation in den neu eingerichteten Ordner kopiert.
Beim ersten Start bekomme ich immer die gleichen fünf Zeilen (node:377) im Log und iobroker startet auch nicht.host.Server check instance "system.adapter.fullybrowser.0" for host "Server" host.Server check instance "system.adapter.fb-checkpresence.0" for host "Server" (node:377) UnhandledPromiseRejectionWarning: ParserError: Protocol error, got "H" as reply type byte. Please report this. at handleError (/opt/iobroker/node_modules/redis-parser/lib/parser.js:190:15) at parseType (/opt/iobroker/node_modules/redis-parser/lib/parser.js:304:14) (node:377) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1) (node:377) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
Kann mir hier jemand weiterhelfen.
Vielen Dank
Heiko
-
Eine kleine Frage bzgl. Portainer.
Wenn ich in meinem ioBroker-Docker-Container mal die ENV anpassen möchte, dann kann ich ja oben auf "Duplicate/Edit" klicken und dann dort unter Advanced container settings - ENV die Einstellungen vornehmen.
Aber jetzt möchte ich ja nur dieses ändern und nicht gleich einen neuen Container generieren oder ähnliches.
Also müsste ich doch "Always pull the image" ausschalten ...
Aber was passiert dann, wenn ich "Deploy the container" klicke?
Holt er sich dann das Image, was er damals schon runtergezogen hat und erzeugt quasi daraus den neuen Container mit den alten bzw neuen Einstellungen von Env?
Bin mir da noch etwas unsicher und wollte über Weihnachten jetzt nicht nur am ioBroker sitzenbtw Frohe Weihnachten euch allen!
-
@tugsi sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
Aber was passiert dann, wenn ich "Deploy the container" klicke?
Dann wird ein neuer Container erstellt. Was an sich dich nicht stören sollte, was ich nur schwer beurteilen kann. WIeso meinst du keinen neuen Container erstellen zu wollen?