NEWS
[HowTo] ioBroker unter Docker auf Synology DiskStation
-
@tugsi Du hast wahrscheinlich mit dem iobroker update auf 4.2 nach der Buanet Anleitung ein MACVLAN eingerichtet, oder?
Bei dieser Netzwerkvariante können sich die Synology und auch alle anderen Container die im MACVLAN Modus laufen Netzwerktechnisch untereinander nicht erreichen. Eine Kommunikation ist nur über das zuätzliche Docker interne Bridge Netzwerk möglich.
Das lässt sich nur mit Synologys umgehen die 2 Netzwerkanschlüsse haben. Da lässt man über den einen die Diskstation kommunizieren und auf den anderen physikalischen Anschluss bindet man das MACVLAN, dann könnte der iobroker im Container wieder die Synology mit der "normalen" IP erreichen. -
@hetti72
Ich bin etwas verwirrt. Nein habe diese Variante schon seit der Version3 laufen. Damals hatte ich alles umgestellt. MACVLAN eingerichtet und das Bridge-Netzwerk.
Wie gesagt, bisher lief es auch, nur nach dem Update auf die V4.2 ist mir im Log aufgefallen, dass dutzende Fehlermeldungen vom Synologyadapter kamen, dass er die DS nicht erreichen kann.
In den Einstellungen war meine normale 192er-IP eingetragen, also lief es vorher ja auch so mit MACVLAN, sonst hätte ich ja auch so schon Errorlogs bekommen.
Allerdings habe ich den Synologyadapter nicht in meiner VIS oder so eingebunden, daher bin ich jetzt verwirrt.
Ich habe zwar die 918+, benutze die zwei Netzwerkschnittstellen aber im Bond.
Mit der internen Docker-IP kann ich den Host erreichen, das klappt.
Also hätte ich im MACVLAN nie meine DS über die "normale IP" erreichen können?
Mich verwundert, dass ich die 192er da drin stehen hatte. -
@tugsi Ich habe nochmal ein wenig experiementiert und muss meine Aussage von weiter oben teilweise korrigieren. Alle Container die eine Adresse aus dem gleichen MACVLAN haben können sich über diese IP Adresse untereinander erreichen, und auch alle anderen Geräte im Netzwerk ausserhalb des MACVLAN´s auf der Synology können erreicht werden (z.B. eine CCU oder HUE Bridge).
Lediglich der Docker Host ist nicht mit seiner "normalen" IP Adresse erreichbar, das wird im wohl Linux Kernel verhindert und ist eine Sicherheitsfunktion.
Man kann das ganze aber aushebeln in dem man auf der Synology eine weitere Netzwerkbridge konfiguriert. Es gibt da verschiedene Anleitungen im Netz, zb hier
https://www.synology-forum.de/showthread.html?103178-macvlan-Zugriff-auf-den-HostWenn du also so eine Bridge vorher nicht konfiguriert hattest dann dürfte ein Zugriff aus dem IOBroker Container auf die Synology via der 192er Adresse nie funktioniert haben, aber so genau lässt sich das aus der ferne nicht diagnostizieren.
-
@rostnagel bist Du mit dem Bluetooth stick schon weiter gekommen? Ich habe ihn bisher auch nicht zum laufen bekommen.
-
@hetti72 Da hättest du nicht viel experimentieren müssen Ich habe zum Thema MACVLAN hier schon einige Male referiert:
https://forum.iobroker.net/search?term=MACVLAN &in=posts&matchWords=all&by[]=andre&sortBy=timestamp&sortDirection=desc&showAs=posts
Kann daher deine Erkenntnisse nur bestätigen. In einem der Beiträge habe ich auch einen Auszug der Docker Doku gepostet. Da steht es auch nochmal so drin.MfG,
André -
@andre Ich hab mir schon gedacht das es die Info bestimmt irgendwo in diesem kleinen und überichtlichen Thread zu finden gibt, hab es aber auf anhieb nicht gefunden. Also hab ich mir die Information einach mal selbst erarbeitet und dadurch wieder was gelernt das Thema insgesamt besser verstanden.
Das Docker Thema ist mir Beruflich zwar nicht fremd, aber da arbeite ich mit Kubernetes und Rancher und da läuft das alles ein wenig anders.
Vor allem die Einschränkungen die man auf der Synology hat, machen das Thema nicht einfacher.gruß,
Frank -
@hetti72 sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
Vor allem die Einschränkungen die man auf der Synology hat, machen das Thema nicht einfacher.
Da sagst du was. Obwohl es eigentlich gut läuft wenn man die Klippen (z. B. den Host Mode) zu umschiffen weiß...
Mittlerweile läuft mein produktiv iobroker auch nicht mehr auf der DS. Ich sehe da seitens Synology irgendwie keinen Fortschritt mehr. Alle warten auf die Version 7 vom DSM. Obwohl ich das eher kritisch sehe, denn da wird es wahrscheinlich einfach nur andere Themen geben. Wir werden sehen.Was die Übersichtlichkeit des Threads angeht, da hast du wohl recht. Kann da immer nur die erweiterte Forensuche empfehlen.
Hatte auch schon mal angefangen die ewig wiederkehrenden Themen inkl. Docker Basics in einer eigenen Knowledge Base zu sammeln (https://buanet.de/knowledge-base). Aber Das ist eben auch ein recht zeitaufwändiges Unterfangen wenn man eine gewisse Qualität beibehalten möchte...
Um so schöner ist es zu sehen, daß es nicht nur die "geht nicht"-Meckerfraktion gibt, sondern auch immer wieder Leute die sich Wissen selbst erarbeiten können und wollen. Und gerade was den Umgang mit Docker angeht, sehe ich leider immer wieder große Wissens- und Verständnis-Lücken wenn es um die puren Basics geht...MfG,
André -
@Daniel76 sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
@rostnagel bist Du mit dem Bluetooth stick schon weiter gekommen? Ich habe ihn bisher auch nicht zum laufen bekommen.
nicht wirklich... ich dümpel noch mit der V2 umher... 20 adapter stehen zur aktualisierung bereit
ehrlich gesagt hab ich auch keine lust noch nen Raspberry irgendwo aufzubauen der allein für die anwesenheitserkennung zustandig ist.
kann die DS ja auch. aber das durchreichen ist nicht mehr so einfach wie zuvor.entweder ich gehe wieder komplett auf den pi oder es gibt noch ne lösung.
auf die backup funktionaltät und den großen ram der ds möchte ich eigtl nicht verzichten
-
@rostnagel sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
entweder ich gehe wieder komplett auf den pi oder es gibt noch ne lösung.
Schon mal den Host-Modus ausprobiert? Bei mir läuft damit alles absolut rund und problemlos auf meiner DS718+. Portainer, MACVLAN und Bridge mögen ja durchaus ihre berechtigten Vorteile bieten, aber wenn man nicht mit allzu vielen Docker-Abbildern arbeitet, dann sollte der sehr einfach zu handhabende Host-Modus absolut ausreichen.
@andre: Machst du noch ein neues Abbild mit node.js 12.x? Ist zwar aktuell nicht notwendig, wird aber bei Verwendung des js-controllers ab Version 3 angeraten.
-
@dtp sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
@andre: Machst du noch ein neues Abbild mit node.js 12.x? Ist zwar aktuell nicht notwendig, wird aber bei Verwendung des js-controllers ab Version 3 angeraten.
Ist schon da. Das aktuelle Beta Image läuft mit Node 12.
https://github.com/buanet/docker-iobroker/blob/beta/README.mdHabe mir gedachrt sobald der js-controller v3 als stable kommt, mache ich eine Image Version 5. Bis dahin könnt ihr mit der Beta testen.
MfG,
André -
@andre said in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
Ich habe hier mal ein Beispiel. Nur mit ioBroker-Container und den Netzwerken (MACVLAN + internes Bridge Netzwerk). Werde dazu auch noch ein Tutorial schreiben. Dann aber gleich zusammen mit einem Redis-Container. Dazu muss die aktuelle Beta aber erst zum "latest" werden (wegen der Möglichkeit gleich beim Setup Redis zu konfigurieren).
version: "2" services: iobroker: container_name: iobroker image: buanet/iobroker:latest hostname: iobroker restart: always networks: macvlan: ipv4_address: 192.168.0.73 bridge: ipv4_address: 172.18.0.2 environment: - PACKAGES=nano volumes: - /volume1/docker/iobroker_data:/opt/iobroker networks: macvlan: driver: macvlan driver_opts: parent: eth0 ipam: config: - subnet: 192.168.0.0/24 gateway: 192.168.0.1 ip_range: 192.168.0.72/29 aux_addresses: net-address: 192.168.0.72 # Reservierte Adresse, damit Docker nicht die Netzadresse vergibt. 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éSag mal, nutzt du diese yaml Config eigentlich unter der Stack Funktion die Portainer bietet oder direkt mit docker-compose?
Ich hatte ja ursprünglich Probleme dass Portainer Stacks nicht funktionierte, wenn ich MACVLAN nutze. Will das Thema aber doch noch mal angehen.
Hast du vielleicht ein funktionierendes Beispiel für den Portainer Stack? Im Internet findet man dazu relativ wenig Informationen.... -
@Holzlenkrad
Das Beispiel das du zitiert hast ist ein Beispiel das ich im Portainer Stack nutze und das eigentlich so funktionieren sollte. Bei den Stacks im Portainer handelt es sich ja praktisch um docker-compose.MfG,
André -
@andre
Den größten Unterschied den ich sehe ist, dass du dein macvlan im yaml File definiert hast. Kannst du das Netzwerk denn mit Cotainern nutzen, die nicht in dem Stack sind?Ich hab das MACVLAN halt mit docker create network in der Console angelegt und schreibe in der docker-compose dann einfach
macvlan:
external:
name: macvlan0Vielleicht mag Portainer das nicht...
-
@hetti72
Sorry für die späte Rückmeldung, aber kam vorher nicht dazu.
Danke für den Link.
Das Problem was ich habe ist, dass ich auf diversen "Baustellen" gleichzeitig arbeite, sowohl privat, wie auch auf meiner Arbeit und da verschwinden dann schon mal Sachen ganz tief nach hinten ...
Und wenn man einmal etwas eingerichtet hat, nach Anleitung zB und es läuft, dann kümmert man sich nicht mehr drum und vergisst schnell, was man wie und wo getan hat.
Mir ist eben aufgefallen, dass der Adapter auf eine 192er-IP schaute und ich sonst an mein Netzwerk ja nichts geändert habe.
Die Suche hier war etwas mühselig, ich bin nicht wirklich auf das richtige Ergebnis gestossen, deswegen habe ich hier gepostet.
Mir war bewusst, dass eine direkte Abfrage an den Host nicht geht, aber deswegen ja das Bridge-Netzwerk.
Aber egal, ich setze einfach die "Docker"-IP ein und es klappt.
Danke für Deine Mühen!@andre Ich kenne Deine Knowledges-Base, wäre es nicht sinnvoll, den 1.Post zu editieren und dort auch den Link mit einzubauen?!
Des Weiteren, wäre es vielleicht hilfreich ein Wiki zu errichten, wo jeder eine Hilfe Einpflegen kann? Ich weiß es kann auch schnell zum Chaos führen, aber andersherum könnte man so auch ein Pool an kleinen Helfern haben, hier im Thread ist echt mühselig (auch mit der erweiterten Suche) den wichtigen Punkt zu finden. Aber das Problem haben alle Foren wo lange Threads enthalten sind. -
@Holzlenkrad sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
Kannst du das Netzwerk denn mit Cotainern nutzen, die nicht in dem Stack sind?
Das habe ich noch nicht ausprobiert.
Es sollte aber auch gehen ein bereits bestehendes Netzwerk in der Stack definition (compose file) zu verwenden. Weiß nicht ob das bei dir von der Syntax so korrekt ist. Man muss da ein bisschen aufpassen, das man die korrekte compose file version verwendet. Portainer kann da aktuell nur bis Version 2...MfG,
André -
@tugsi sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
@andre Ich kenne Deine Knowledges-Base, wäre es nicht sinnvoll, den 1.Post zu editieren und dort auch den Link mit einzubauen?!
Das kann man sicher machen, es steht aber leider noch nicht so viel drin. Was sicher auf meine Kappe geht.
Und das was drin steht bezieht sich aktuell eigentlich ausschließlich auf meine Tutorials und ist dort dann im Normalfall auch entsprechend verlinkt.Des Weiteren, wäre es vielleicht hilfreich ein Wiki zu errichten, wo jeder eine Hilfe Einpflegen kann? Ich weiß es kann auch schnell zum Chaos führen, aber andersherum könnte man so auch ein Pool an kleinen Helfern haben, hier im Thread ist echt mühselig (auch mit der erweiterten Suche) den wichtigen Punkt zu finden. Aber das Problem haben alle Foren wo lange Threads enthalten sind.
Das Problem mit dem Suchen kenne ich. Keine Frage.
Was das Wiki-Thema angeht, habe ich mich ganz bewusst für eine Knowledgebase und nicht für ein Wiki entschieden. Die Stärke eines Wikis ist gleichzeitig seine größte Schwäche. Jeder kann daran mitarbeiten, aber nur die wenigsten tun es halt wirklich gewissenhaft. Und dann passiert in der Regel das, was du selbst schon angesprochen hast. Ein Chaos aus halb fertigen Einträgen, Platzhaltern und im schlimmsten Fall irreführenden Informationen. Das wäre nicht gut.Was den Pool an kleinen Helfern angeht, da bin ich allerdings absolut offen. Bis jetzt ist diesbezüglich noch niemand auf mich zu gekommen. Wenn Qualität und Engagement passen hätte ich kein Problem damit auch mal ein paar "Gastautoren" mit Tutorials oder Knowledgebase Artikeln auf meiner Seite willkommen zu heißen. Die technischen Voraussetzungen sind da...
MfG,
André -
@andre Habe die 4.2.1beta mal im Testsystem aktiviert. → Keine Probleme
Danke, Ralf
-
Ich wollte das Image mal als Testsystem für iobroker missbrauchen.
Dafür wollte ich zum Test mal Node auf Version 14 aktualisieren und mit dem js-controller auf Version 3 laufen lassen.Hab den Container runtergefahren und mit einem tail -f /dev/null als entrypoint gestartet damit iobroker nicht läuft. Per docker exec rein in den Container.
Dort habe ich dann node-js aktualisiert und node -v erbrachte auch korrekt v. 14.3.
Also daraufhin wieder raus und container per docker-compose down wieder runter.
Den entrypoint habe ich wieder raus kommentiert damit der Container normal mit iobroker startet.Und siehe da: die Node-Version ist wieder auf 10.20.1
Egal was ich mache - es bleibt dabei.
Ich vermutete, dass ich die Änderungen am Container noch irgendwie übernehmen muss. Hierzu habe ich die Container-ID der Bearbeitung per docker commit ID iobroker versucht zu commiten - klappt aber nicht.Wie bekomme ich das also hin, dass Änderungen am Container auch nach dessen Neustart übernommen werden? Alles was in /opt/iobroker geändert wird ist ja persistent - nur der Rest halt nicht.
-
@Sylvan Da hast du leider ein Verständnisproblem. Beim Compose wird aus dem Image immer ein neuer Container erstellt. Demnach sind natürlich deine Änderungen immer weg (ausgenommen /opt/iobroker).
Zwei Möglichkeiten:- Wenn du mit Compose den Container erstellt hast nur mit start/ stop den container an sich starten/ stoppen
- Per docker build und meinen Files von Github ein eigenes Image erstellen und im Dockerfile die Node-Version anpassen.
Was dein Verfahren mit "tail -f /dev/null" angeht. Das ist überflüssig. Du kannst das auch erreichen wenn du im laufenden Container "pkill io" machst. Dann sind die Prozesse von ioBroker gestoppt und du kannst werkeln...
MfG,
André -
@andre said in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
Da hast du leider ein Verständnisproblem.
Davon bin ich fest ausgegangen - daher die Frage
Per docker build und meinen Files von Github ein eigenes Image erstellen und im Dockerfile die Node-Version anpassen.
Und wäre es nicht möglich per docker commit (oder was anderem?) aus dem aktuellen Zustand ein Image unter neuem Namen speichern? Ich würde dann wahrscheinlich danach beim compose dieses neue Image als Basis angeben.
Ansonsten habe ich bereits ein eigenes docker-image für iobroker wo ich vor allem bei den Rechtesachen dreist bei dir einiges abgeschaut habe. Aber dort hatte ich letztens Probleme den js-controller auf Version 3 zu hieven. Daher habe ich es mal mit deinem Image versucht.
Du kannst das auch erreichen wenn du im laufenden Container "pkill io" machst.
Das hilft viel - Danke! iobroker stop hat bei mir nicht geklappt da er meinte es würde gar kein iobroker laufen.