NEWS
[HowTo] ioBroker unter Docker auf Synology DiskStation
-
@Boardy okay, werd ich mal versuchen, danke.
-
@Michi_Pi Wenn André das beschrieben hat wird es wohl auch so gehen... ggf noch mal neu versuchen?
-
@andre sagte in [HowTo] ioBroker unter Docker auf Synology DiskStation:
Since v4.0.0 the image is available for the following architectures: amd64, armv7hf, aarch64.
Dafür habe ich kein Image parat...
[...]
Viel Erfolg!Ich habe also einen Rechner mit einem "Intel Core i7-6700" sowie einen mit einem "Intel Core i7-3630QM", auf denen ich ioBroker gerne in einem Docker-Container installiert hätte. Wenn ich es richtig verstanden habe, hast Du für Intel Prozessoren keine fertigen Image eines Docker-Containers von ioBroker. Richtig?
Sollte ich das Ganze auf meinem Laptop mit einem "AMD Ryzen5 3500U" installieren wollen, hättest Du mit dem amd64'er ein passenden Image zur Verfügung. Richtig?
Grundsätzlich geht es mir auch erst einmal um eine Grundinstallation von Docker und dann noch wie von Dir empfohlen auch noch Portainer, um alles zu verwalten.
Testweise hatte ich mich mal an der Anleitung Brian Hogan - Docker unter Ubuntu 20.04 orientiert und Docker installiert. Hello World usw. lief und auch an Portainer habe ich mich versucht nur hatte ich zuviel Durcheinander im System, weshalb ich es jetzt noch mal komplett neu als Mint 20er-System aufgesetzt habe. Hier will ich erst einmal testen und meine Erfahrungen sammeln, um später auf ein Linux ohne GUI zu setzen.
Wenn vielleicht Jemand mal über den Link oben schauen könnte und mir sagen kann, ob ich Docker nach dieser Installation auch ausreichend für eine späteren ioBroker-Container ist, wäre mir wirklich sehr geholfen.
Dann kommen wir zur Portainer-Installation nach Buanet. Unter Vorbereitung Punkt 1 steht
"Weiterhin benötigen wir ein Volume oder einen Ordner den wir zur Speicherung der Konfiguration des Portainer Containers beim Starten in diesen einbinden. Auf der Synology lässt sich ein solcher Ordner leicht über die FileStation anlegen."
Wenn ich keine Snology und Filestation habe, lege ich z.B. unter home, media oder mnt ein Unterverzeichnis z.B. "/media/volume1/docker/portainer_data" an und gebe es dann unter Punkt 2 beim Start des Docker-Containers auch mit "/media/volume1/docker/portainer_data" anstelle Deines Beispiels von "/volume1/docker/portainer_data" an. Richtig?
Und ganz am Schluss dieses Beitrages muss ich dann also einen Docker-Container komplett neu erstellen und dort ioBroker manuell installieren, als wenn ich es in einem Linux ohne Container machen würde??? Hättest Du hierfür vielleicht irgendeinen Link, den Du mir empfehlen kannst. Muss ja nicht ioBroker sein, nur dass ich die Vorgehensweise verstehe.
Ich sagte ja... In Sachen Docker bin ich wirklich völlig unbedarft
-
@Boardy sagte in [HowTo] ioBroker unter Docker auf Synology DiskStation:
muss ich im Container noch SSH installieren?
SSH ist im Docker Container nicht drin. Wird auch eigentlich nicht gemacht weeil man i. d. R. über docker exec von der Shell des Hosts in den Container geht... oder auch z.B. per Portainer.
Theoretisch machbar ist SSH im Container aber...MfG,
André -
@Berchemer sagte in [HowTo] ioBroker unter Docker auf Synology DiskStation:
Wenn ich es richtig verstanden habe, hast Du für Intel Prozessoren keine fertigen Image eines Docker-Containers von ioBroker. Richtig?
Falsch. Sofern es sich um eine 64bit Architektur handelt passt das amd64 Image. Das hat nichts mit dem Hersteller (Intel oder AMD) zu tun sondern mit der Architektur. Wofür ich kein Image mehr gemacht habe ist i86 (also Intel 32bit). Das ist für mich tot Zur Not ließe sich da aber sicher auch ein Image bauen...
@Berchemer sagte in [HowTo] ioBroker unter Docker auf Synology DiskStation:
Wenn vielleicht Jemand mal über den Link oben schauen könnte und mir sagen kann, ob ich Docker nach dieser Installation auch ausreichend für eine späteren ioBroker-Container ist, wäre mir wirklich sehr geholfen.
Ich habe mir jetzt ehrlich gesagt nicht die ganze Anleitung durchgelesen, aber wenn du am Ende einen laufenden Docker Daemon auf deinem Ubuntu hast sind erstmal grundsätzlich alle Anforderungen für den ioBroker Docker Container erfüllt... Welches Linux du unter dem Docker Daemon verwendest ist fast egal... Wenn du es nich weiter sagst, mein Produktivsystem läuft auf nem Ubuntu 20.04 unter Hyper-V in Windows 10 Pro auf nem Intel NUC PC...
@Berchemer sagte in [HowTo] ioBroker unter Docker auf Synology DiskStation:
Wenn ich keine Snology und Filestation habe, lege ich z.B. unter home, media oder mnt ein Unterverzeichnis z.B. "/media/volume1/docker/portainer_data" an und gebe es dann unter Punkt 2 beim Start des Docker-Containers auch mit "/media/volume1/docker/portainer_data" anstelle Deines Beispiels von "/volume1/docker/portainer_data" an. Richtig?
Ja. Korrekt.
@Berchemer sagte in [HowTo] ioBroker unter Docker auf Synology DiskStation:
Und ganz am Schluss dieses Beitrages muss ich dann also einen Docker-Container komplett neu erstellen und dort ioBroker manuell installieren, als wenn ich es in einem Linux ohne Container machen würde??? Hättest Du hierfür vielleicht irgendeinen Link, den Du mir empfehlen kannst. Muss ja nicht ioBroker sein, nur dass ich die Vorgehensweise verstehe.
??? Nein. Du musst das Image laden und starten (einen Container daraus erstellen). Im Image ist alles drin was der ioBroker braucht inklusiver fertig installiertem ioBroker.
Das erstellen des Containers geht auch über die Kommandozeile oder docker-compose... Für nen Einsteiger empfehle ich aber Portainer... alles schön grafisch...Viel Erfolg!
MfG,
André -
@Michi_Pi sagte in [HowTo] ioBroker unter Docker auf Synology DiskStation:
Hier der LOG vom Container
Nimm mal die ENVs für die Objects DB beim Master raus.
Beim Slave müssen die aber rein, da du dich von dort aus ja auf die Objects DB beim Master verbindest...
hatte ich nicht kürzlich hier eine Beispiel Config für Maste/ Slave gepostet?[EDIT] Guckst du https://forum.iobroker.net/topic/4733/howto-iobroker-unter-docker-auf-synology-diskstation/2206
MfG,
André -
@andre Hi, ich habe mir eine Test IO BRoker auf gesetzt um beim Erstellen meines Adapters mittes Visual Studio Code auf dem Docker zu debuggen... (ein lockaler Docker auf dem PC hilft nicht weil ich eine USB Stick einbinden will der nur im Keller Funktioniert...
Aktuell kann ich aber erst mal ohne Debugger weiter weil der Adapter nun endlich was ins log schreibt... SSH hab ich nicht hinbekommen - falls es nicht zu viel Aufwand ist wäre ein How To schön...
-
@andre das Beispiel von dir hab ich gesehen, ich verwende nicht redis, daher hab ich file eingegeben.
bridge verwende ich auch nicht, hab es auch mit dem macvlan erstellt, muss daher die ports nicht irgendwo öffnen, oder?
muss ich die angegebenen packages auch installieren? libcap-dev und coreutils arp-scan?wenn ich die Einstellungen für Multihost weglasse, ist iobroker gestartet, nachdem ich die gesetzt habe, startet er wieder nicht durch.
hab gerade das aus dem Log
2020-11-17 00:24:50.724 - [32minfo[39m: host.iobroker_master ip addresses: 192.168.178.12 2020-11-17 00:25:20.800 - [31merror[39m: host.iobroker_master No connection to databases possible, restart 2020-11-17 00:25:20.804 - [32minfo[39m: host.iobroker_master iobroker _restart 2020-11-17 00:25:21.270 - [32minfo[39m: host.iobroker_master iobroker Starting node restart.js
-
@Boardy sagte in [HowTo] ioBroker unter Docker auf Synology DiskStation:
SSH hab ich nicht hinbekommen - falls es nicht zu viel Aufwand ist wäre ein How To schön...
Dazu sollte es schon Anleitungen im Netz geben. Zumindest wie man z.B. openSSH unter Linux installiert.. Da SSH für Docker Container ja eigentlich nicht relevant ist, werde ich da wohl auch keine Zeit investieren. Sorry.
MfG,
André -
@Michi_Pi sagte in [HowTo] ioBroker unter Docker auf Synology DiskStation:
hab es auch mit dem macvlan erstellt, muss daher die ports nicht irgendwo öffnen, oder?
muss ich die angegebenen packages auch installieren? libcap-dev und coreutils arp-scan?Richtig. Nein. Nein.
Master:
IOB_MULTIHOST=masterSlave:
IOB_MULTIHOST=slave
IOB_OBJECTSDB_HOST=[IP_DES_MASTER]
IOB_OBJECTSDB_PORT=9001
IOB_OBJECTSDB_TYPE=file
IOB_STATESDB_HOST=[IP_DES_MASTER]
IOB_STATESDB_PORT=9000
IOB_STATESDB_TYPE=fileWenn du für due DBs file verwendest, dann beim Master nichts mit geben. Nur sagen dass er ein Master ist.
Beim Slave muss alles rein, damit er sich für States und Objects auf die DB des Master verbindet.MfG,
André -
@andre ok dann wenigstens nen Tip ob apt-get und Openssh gehen müsster? bzw wie sonst? mit apt-get und mit PACKAGES in den ENV kam ich nicht weiter...
Welches ware der richtige weg im Container?
-
@andre sagte in [HowTo] ioBroker unter Docker auf Synology DiskStation:
IOB_MULTIHOST
ahh.... jetzt hab ich mein problem gefunden, (vielleicht auch ein denkfehler)
Hab beim Master für Obkjet und states auch nochmal die IP des Masters angegeben, das mag er wohl nicht. Hab jetzt 0.0.0.0 dann gings. -
@Boardy sagte in [HowTo] ioBroker unter Docker auf Synology DiskStation:
ob apt-get und Openssh gehen müsster?
Ja. Im Container läuft ein Debian Buster. Die Befehle sollten funktionieren.
Mit der Umgebungsvariable PACKAGES kannst du Linux Pakete automatisch vom Start Script installieren lassen. Wenn es da Konfiguration braucht, kannst du das über benutzerdefinierte Start Scripts machen. Alles was du manuell in die Kommandozeile haust ist nach einem Recreate verschwunden, daher müssten die Sachen über PACKAGES installiert und benutzerdefinierte Start Scrips konfiguriert werden damit du länger Freude daran hast...
MfG,
André -
@Michi_Pi sagte in [HowTo] ioBroker unter Docker auf Synology DiskStation:
Hab jetzt 0.0.0.0 dann gings.
Das macht er automatisch wenn du IOB_MULTIHOST=master setzt...
MfG,
André -
Hallöchen.
Ist irgendwie bekannt ob es Probleme mit ioBroker als Docker und MACVLAN und MariaDB auf der selben Diskstation gibt?
Ich habe den SQL Adapter installiert aber bekomme einfach keine Verbindung zur Datenbank. Laut Fehler ist der Host nicht erreichbar.
Mit z.B. HeidiSQL vom Windows PC aus macht die Verbindung mit dem selben Nutzer und den selben Angaben zu IP und Port keine Probleme. -
@Zuki Hallo, nicht alles ist immer gleich ein Problem....
Dein Thema ist etwas was es in diesem Thread schon ein paar mal gab, das erste was ich dazu gefunden habe ist das hier:
https://forum.iobroker.net/topic/4733/howto-iobroker-unter-docker-auf-synology-diskstation/761Es geht einfach nicht, dass du aus dem MACVLAN heraus deinen Host erreichst. Das kann m.W. schlich nicht geroutet werden. Lösung: Zusätzliches Bridge Netzwerk. In jedem Bridge Netzwerk das du auf der DS erstellst ist die DS selbst das Gateway... da klappt die Kommunikation dann wieder...
MfG,
André -
Danke @andre
"Problem" war vielleicht das falsche Wort. Besser wäre gewesen "gibt es etwas zu beachten"
Auf jeden Fall danke für die Antwort. Hab die Posts hier zu dem Thema mal rausgesucht (hätte ich auch selbst drauf kommen können...) und bin nun schlauer
Alle Container innerhalb eines MACVLAN können sich ja untereinander erreichen. Nur zum Host selbst nicht. Gibt es falls man diese Verbindung nicht braucht, weil z.B. die Datenbank selbst auch in einem Docker läuft, trotzdem einen Grund den Weg über zwei Netzwerke, ein MACVLAN für außen und ein Bridge für "innen", zu gehen?
-
@Zuki Wenn man mit VLANS anfängt doch deswegen, weil man Subnetze voneinander isolieren will und falls der Zugriff benötigt wird, dann wenigstens eine Firewall dazwischen hängt...
Frage an dich - warum soll das VLAN auf den Host zugreifen können? das macht doch den Host unnötig angreifbar... ebenso wenn der Container mit root rechten läufen muss... mein Ziel ist es dies alles sauber zu trenne...
Mit einem decidierten RASPI oä mag das egal sein, mit nem NAS auf dem auch die Datensicherung liegt sehe ich das kritisch... -
@andre
Kannst du mir weiter helfen?
Will den Broker auf eine DS920+ in einen Docker umziehen.
Bin nach deine Anleitung auf deine Homepage vorgegangen.Habe nun Problem mit BackItUp. Beim Wiederherstellen will BackItUp ein neues Fenster auf Port 8091 aufmachen, das aber in keinem Browser angezeigt wird. (Seite nicht erreichbar).
Scheinbar wartet BackItUp auf dieser Seite auf eine Eingabe von mir da es im Hauptfenster nicht weiter geht.Was kann ich da noch machen?
Gruß
Bernd -
@Zuki sagte in [HowTo] ioBroker unter Docker auf Synology DiskStation:
Gibt es falls man diese Verbindung nicht braucht, weil z.B. die Datenbank selbst auch in einem Docker läuft, trotzdem einen Grund den Weg über zwei Netzwerke, ein MACVLAN für außen und ein Bridge für "innen", zu gehen?
Ich wüsste nicht welchen. Grundsätzlich sollte man ja nichts öffnen was man nicht braucht... Ich würde es also weg lassen wenn es nicht benötigt wird.:)
ABER:
Kleine Best Practice Idee: Setze nur den ioBroker als MACVLAN auf, gebe ihm als zweites Bridge Netzwerk und baue die Container wie redis, mariadb, grafana usw... ausschließlich im bridge Netzwerk und öffne dort nach außen nur Ports die du brauchst (grafana WebUI, mariadb port, usw.)... Ist m. E. ein geschickterer Weg als jedem Container ein eigene IP zu geben, die er gar nicht braucht. Es ist halt Container Virtualisierung und keine virtuellen Maschinen.MfG,
André