NEWS
[Angebot/Anleitung] ioBroker im Container
-
Hi Ihr,
nachdem ich ein bischen Zeit hatte mich damit zu beschäftigen und auch ein paar Probleme gesehen habe mit dem, was allgemein zur Verfügung stand, habe ich aus dem, was ich gefunden habe einen eigenen Container released.Besonderheiten:
- automatisches update beim Start des containers (nur iobroker, nicht nodejs/npm)
- Support für onedrive sync
- Support für TFA Sensors / Mobile Alerts via ProxyGateway MMMMobileAlerts von sarnau
Der container ist public und sollte ohne Probleme funktionieren. Bei Problemen, bitte direkt melden, da setz ich mich gleich dran
Sollte der Beitrag hier falsch sein, oder Ihr andere Fragen/Wünsche haben, bitte meldet Euch gern auch per PM bei mir.
Den Container findet Ihr hier: https://hub.docker.com/r/greatsun2009/iobroker-public
Bis dahin,
Viel Spass! -
Wenn jemand von Euch gern mal probieren möchte, aber noch keine Ahnung von Containern hat, keinen Container manager (z.B. podman, Kubernetes oder docker) hat o.ä.: Fragen kostet nichts und ich helfe gern
-
@great-sun Super!
Ich benutzte aktuell den buanet container. An Deinem gefällt mir besonders OneDrive Support (dort habe ich 1TB).
Die Frage ist, wie kann ich am einfachsten von einem Container zum anderen wechseln und alle meine Settings behalten?
Ich benutze Docker und Portainer auf Raspi 4 mit 4GB Ram. -
@simplyclever Also normalerweise solltest Du ja bereits ein existierendes persistentes /opt/iobroker (container pfad) haben.
Im Grunde sollte es eigentlich gehen, dass Du den einen Container runter- und den anderen hochfährst. Zur Sicherheit würde ich den persistent store vorher kopieren.
Beispiel:Du hast im Moment:
podman run -p 8081:8081 --name iobroker -h iobroker -v /my/local/path:/opt/iobroker buanet/iobroker
Dann würde ich:
cp -R /my/local/path /my/local/path_new
und danach
podman run -p 8081:8081 --name iobroker -h iobroker -v /my/local/path_new:/opt/iobroker greatsun2009/iobroker-public
-
Wenn dann alles wie gewohnt, ohne Probleme funktioniert kannste den alten Pfad löschen. Wenn nicht, kann man schauen, was nicht geht und das versuchen zu reparieren.
Erfolg: wie gehabt, alten Pfad löschen
Problem: wieder zurück zum alten container/persistant storepodman run -p 8081:8081 --name iobroker -h iobroker -v /my/local/path:/opt/iobroker buanet/iobroker
Wenn man nicht weiter versuchen mag (ich gehe nicht davon aus, dass wir hier landen), dann den neuen Pfad löschen.
-
@great-sun Mal sehen wann ich dazu komme. Habenoch einen Backup Pi, da würde ich das erst mal testen (nach clone der SSD), dann ist das Risoko Null. Es mangelt an Zeit.
-
@great-sun Moin, schön zu sehen dass sich noch jemand mit Docker beschäftigt.
Kannst du bitte noch einen Link zum source code (ggf. halt auch nur Dockerfile) sowie einer aussagekräftigeren Readme/ Doku zum container posten? Habe ich so auf Anhieb nicht gefunden und was beim Docker Hub steht ist irgendwie n bisschen mau.Übrigens gäbe es auch die Möglichkeit sich an der Weiterentwicklung des offiziellen iobroker Images zu beteiligen.
@great-sun sagte in [Angebot/Anleitung] ioBroker im Container:
und auch ein paar Probleme gesehen habe mit dem, was allgemein zur Verfügung stand
Was meinst du damit? Was hast du gefunden und welche Probleme sind das, die du da gesehen hast?
MfG,
André -
@andre Den container hab ich quasi fluent entwickelt. müsste noch ein bischen Hirnschmalz reinpacken um dafür nochmal ein Build-File zu bauen.
An der Weiterentwicklung kann ich mich gern beteiligen, wenn gewünscht.
Probleme hatte ich primär damit, dass der Container quasi einerseits nicht mit der aktuellen Version von ioBroker geliefert wurde, andererseits, die Installation von einer neuen ioBroker-Version im Container bei einem Betrieb außerhalb Docker (z.B. podman) daran scheitert, dass im neuen Standard die Regeln etwas anders aussehen, als sie setattr hergibt.
Daher startete ioBroker nicht mehr, wenn ich ihn im Container aktualisiert habe. Das habe ich jetzt gefixed indem ich im Startfile versuche die Version von node.js auszugeben und wenn das auf einen Fehler läuft, dann entferne ich die erweiterten Ausführungsattribute.
Naja und, wie gesagt, so Erweiterungen, wie Onedrive sync und der TFA / MobileAlerts Proxy, die man, wenn gewünscht im persistierten Pfad einrichten kann.Ist am Ende ein Großteil Ansichtssache meiner Meinung nach, aber wie schon gesagt, ich kann mich gern beteiligen, wenn gewünscht.
-
@simplyclever auch das geht
Aber das Risiko ist genauso 0, wenn Du es parallel in einem zweiten Verzeichnis laufen lässt, da werden ja Deine Dateien im Ursprung nicht angefasst -
@great-sun Ok, hab wohl gestern nicht richtig gelesen. Jetzt verstehe ich was dein Problem ist. Du arbeitest mit Podman. Da der offizielle Container aber ein "Docker" Container ist läuft er dort nicht (einwandfrei).
Ja, das kann ich erstmal bestätigen. Bisher hat mich noch keine Anforderung erreicht, in der angefragt wird, dass der Container auch unter Podman genutzt wird. Liegt vielleicht daran, dass RedHat doch eher ein Enterprise Produkt ist und ioBroker eben nicht. Dementsprechend ist vermutlich der Teil der Community, die ioBroker unter Podman ausführen (wollen) eher gering.. Insofern kann ich dein Attempt für deine Podman Container auf jeden Fall nachvollziehen...@great-sun sagte in [Angebot/Anleitung] ioBroker im Container:
die Installation von einer neuen ioBroker-Version im Container bei einem Betrieb außerhalb Docker (z.B. podman) daran scheitert, dass im neuen Standard die Regeln etwas anders aussehen, als sie setattr hergibt.
Das musst du mir bei Gelegenheit mal näher erläutern. Hast du dazu Quellen/ Doku? Vielleicht wäre das ja was, was man in einem Issue diskutieren kann? Grundsätzlich muss ich allerdings dazu sagen, dass ich noch keinerlei Erfahrung mit Podman gemacht habe. Falls wir uns mal direkt austauschen wollen schreib mich gerne im Discord an.
@great-sun sagte in [Angebot/Anleitung] ioBroker im Container:
An der Weiterentwicklung kann ich mich gern beteiligen, wenn gewünscht.
Das ist grundsätzlich immer gewünscht. Auch wenn es nur der Anstoß für eine neues Feature oder eine neue Platform ist. Oder auch nur Betatest und Diskussion. So funktionieren m.E. OpenSource Projekte.
@great-sun sagte in [Angebot/Anleitung] ioBroker im Container:
Daher startete ioBroker nicht mehr, wenn ich ihn im Container aktualisiert habe. Das habe ich jetzt gefixt indem ich im Startfile versuche die Version von node.js auszugeben und wenn das auf einen Fehler läuft, dann entferne ich die erweiterten Ausführungsattribute.
Was meinst du mit Ausführungsarrtibute?
@great-sun sagte in [Angebot/Anleitung] ioBroker im Container:
Naja und, wie gesagt, so Erweiterungen, wie Onedrive sync und der TFA / MobileAlerts Proxy, die man, wenn gewünscht im persistierten Pfad einrichten kann.
Für mich doch eher spezielle Anforderungen. Leider stellst du keinerlei Sourcecode zur Verfügung sodass ich schauen könnte was es denn für einen Unterstützung dieser Features braucht. Vermutlich ließe sich dieses aber auch im offiziellen Image z.B. über individuelle Startup Scripts realisieren...
Wo wir auch gleich beim eigentlichen Problem deines Container Images sind:
Dein Container Image ist praktisch closed Source! Du stellst keinen Code und keine Doku bereit. Ich will dir keine böse Absicht unterstellen, aber das kannst du so nicht machen!
In deinem Image könnte praktisch alles drin sein. Ich vermute mal du hast dir einen Container gebaut und aus dem dann einfach ein Image erstellt, oder? Und jetzt stellst du es zum Download bereit. Keiner außer dir weiß was in dem Image noch drin ist... Also welche Linux Pakete da mit kommen. Und wer weiß, vielleicht ist neben dem ioBroker noch ein Bitcoin Miner drin. Wir wissen es schlicht nicht und müssen uns auf dein Wort verlassen. Sorry, aber das kannst du m.E. so nicht machen.
Ich hoffe du verstehst diese Kritik nicht falsch. Aber wenn du dein Werk hier veröffentlichst, dann musst du das einfach besser vorbereiten.MfG,
André -
@great-sun mal ne (vllt „dumme“ weil nicht der Docker Experte) frage zu dem was du noch mit rein gepackt hast: ist nicht die Grundidee von Docker genau das nicht zu tun und lieber nen weiteren zweiten Container zu nutzen?! Die Idee ist doch das jeder Container schlicht ist und „eine Aufgabe“ erfüllt. Das ganze ist mit iobroker im Container schon recht „an der Grenze“ und fast einer VM …
Ich nutze auch redis für iobroker aber auch das ist ein eigener Container. Und noch 2-3 weitere Dinge in weiteren Containern.
Was syncs du denn zu oneDrive wenn ich mal fragen darf?
-
@apollon77 Also ich will mal JAein sagen
Zunächst, ja, Du hast Recht, das ist die Idee hinter Containern. onedrive nutze ich jetzt aber um meine Daten aus ioBroker zu syncen und so lange ioBroker nicht läuft, braucht er das nicht machen und, ehrlichgesagt, will ich auch nicht immer zwei Container starten oder gar einen Pod daraus machen, damit ich das getrennt habe, da ist der Aufwand für den mickrigen Service zu groß.
Beim TFA Sensor-Proxy, könnte man wiederum etwas streiten, aber auch der macht ohne ioBroker keinen Sinn und für den gibt's theoretisch auch ein Dockerfile, aber ich bin grundsätzlich faul
Daher möge man es mir verzeihen, dass ich mich nicht an alles halte, was die Microservice-Regeln so vorsehen.Vielleicht, wenn ich alles fertig habe und alles so tut, wie soll, investiere ich nochmal ein bisschen etwas um das auch alles glänzend zu machen.
-
@andre sagte in [Angebot/Anleitung] ioBroker im Container:
@great-sun Ok, hab wohl gestern nicht richtig gelesen. Jetzt verstehe ich was dein Problem ist. Du arbeitest mit Podman. Da der offizielle Container aber ein "Docker" Container ist läuft er dort nicht (einwandfrei).
Ja, das kann ich erstmal bestätigen. Bisher hat mich noch keine Anforderung erreicht, in der angefragt wird, dass der Container auch unter Podman genutzt wird. Liegt vielleicht daran, dass RedHat doch eher ein Enterprise Produkt ist und ioBroker eben nicht. Dementsprechend ist vermutlich der Teil der Community, die ioBroker unter Podman ausführen (wollen) eher gering.. Insofern kann ich dein Attempt für deine Podman Container auf jeden Fall nachvollziehen...Ich will es mal so sagen: Bevor ich versuche einen Docker auf einem Slackware Linux zum Laufen zu bringen, hab ich mind. 100 Podman's kompiliert und ans Laufen gebracht.
Podman ist sehr viel leichtgewichtiger und schneller am Laufen, als das Schwergewicht Docker. Davon abgesehen unterstützt Podman die Logik von Kubernetes und... Selbst da wurde der Support von Docker eingestellt.
Die Welt entwickelt sich eben weiter und Docker bleibt dabei auf der Strecke@great-sun sagte in [Angebot/Anleitung] ioBroker im Container:
die Installation von einer neuen ioBroker-Version im Container bei einem Betrieb außerhalb Docker (z.B. podman) daran scheitert, dass im neuen Standard die Regeln etwas anders aussehen, als sie setattr hergibt.
Das musst du mir bei Gelegenheit mal näher erläutern. Hast du dazu Quellen/ Doku? Vielleicht wäre das ja was, was man in einem Issue diskutieren kann? Grundsätzlich muss ich allerdings dazu sagen, dass ich noch keinerlei Erfahrung mit Podman gemacht habe. Falls wir uns mal direkt austauschen wollen schreib mich gerne im Discord an.
@great-sun sagte in [Angebot/Anleitung] ioBroker im Container:
An der Weiterentwicklung kann ich mich gern beteiligen, wenn gewünscht.
Das ist grundsätzlich immer gewünscht. Auch wenn es nur der Anstoß für eine neues Feature oder eine neue Platform ist. Oder auch nur Betatest und Diskussion. So funktionieren m.E. OpenSource Projekte.
@great-sun sagte in [Angebot/Anleitung] ioBroker im Container:
Daher startete ioBroker nicht mehr, wenn ich ihn im Container aktualisiert habe. Das habe ich jetzt gefixt indem ich im Startfile versuche die Version von node.js auszugeben und wenn das auf einen Fehler läuft, dann entferne ich die erweiterten Ausführungsattribute.
Was meinst du mit Ausführungsarrtibute?
setattr ;-)
@great-sun sagte in [Angebot/Anleitung] ioBroker im Container:
Naja und, wie gesagt, so Erweiterungen, wie Onedrive sync und der TFA / MobileAlerts Proxy, die man, wenn gewünscht im persistierten Pfad einrichten kann.
Für mich doch eher spezielle Anforderungen. Leider stellst du keinerlei Sourcecode zur Verfügung sodass ich schauen könnte was es denn für einen Unterstützung dieser Features braucht. Vermutlich ließe sich dieses aber auch im offiziellen Image z.B. über individuelle Startup Scripts realisieren...
Wo wir auch gleich beim eigentlichen Problem deines Container Images sind:
Dein Container Image ist praktisch closed Source! Du stellst keinen Code und keine Doku bereit. Ich will dir keine böse Absicht unterstellen, aber das kannst du so nicht machen!
In deinem Image könnte praktisch alles drin sein. Ich vermute mal du hast dir einen Container gebaut und aus dem dann einfach ein Image erstellt, oder? Und jetzt stellst du es zum Download bereit. Keiner außer dir weiß was in dem Image noch drin ist... Also welche Linux Pakete da mit kommen. Und wer weiß, vielleicht ist neben dem ioBroker noch ein Bitcoin Miner drin. Wir wissen es schlicht nicht und müssen uns auf dein Wort verlassen. Sorry, aber das kannst du m.E. so nicht machen.
Ich hoffe du verstehst diese Kritik nicht falsch. Aber wenn du dein Werk hier veröffentlichst, dann musst du das einfach besser vorbereiten.MfG,
AndréNein, nein, keines Wegs. Alles gut. Es war und ist eine erste Version, quasi ein Testcontainer.
Und ja, genau so hab ich das gemacht.
Die schlanke Version davon mit entsprechendem Dockerfile kommt noch, sobald ich alles sauber gezogen habe und von Grund auf neu zusammengebaut habe.Die Basis für den Container lieferte übrigens der Originale. Allerdings hab ich eben da dann noch das automatische Update eingepackt. In einer finalen Version sollte das auch nur dann stattfinden, wenn der Container über eine entsprechende EnvironmentVariable o.ä. das auch vorgibt und nicht bei jedem Start.
Da wäre meine Idee dann auch, dass man das, wenn man in Podman/Kubernetes läuft auch noch mit der Oberfläche automatisieren kann, sodass man einfach nur sagt "Ok, spiel die neue Version ein!" -> Restart und erledigt.
Aber wie gesagt, da bin ich noch nicht, ich bin noch dabei das ein oder andere an Scripten zu schreiben, die ich für mich so haben möchte um mein zu Hause soweit, wie möglich zu automatisieren und unabhängig von äußeren Einflüssen zu haben.Ich meld mich mal im Discord.
-
@great-sun sagte in [Angebot/Anleitung] ioBroker im Container:
Ich will es mal so sagen: Bevor ich versuche einen Docker auf einem Slackware Linux zum Laufen zu bringen, hab ich mind. 100 Podman's kompiliert und ans Laufen gebracht.
Podman ist sehr viel leichtgewichtiger und schneller am Laufen, als das Schwergewicht Docker. Davon abgesehen unterstützt Podman die Logik von Kubernetes und... Selbst da wurde der Support von Docker eingestellt.
Die Welt entwickelt sich eben weiter und Docker bleibt dabei auf der StreckeIch werde mit dir nicht über Sinn und Unsinn von Docker, Kubernetes und Podman diskutieren. Bitte beachte aber, dass nicht alle User zwangsläufig Container oder Linux Profis sind.
Wie schon gesagt ist es völlig legitim wenn du Podman auserkoren hast. Da dies aber bisher keine Anforderung an das offizielle Docker Image war (du bist da wirklich der Erste von dem ich das höre) wude das Image dahingehend auch noch nicht auf Kompatibilität getrimmt... Anders verhält es sich mit Kubernetes. Dazu habe ich bereits einen Issue und arbeite an der Kompatibilität.@great-sun sagte in [Angebot/Anleitung] ioBroker im Container:
setattr
Mag ja für dich ein Witz sein, aber ich weiß trotzdem nicht was du meinst.
Wie auch immer. Sei mir nicht böse, aber ich kann unter den Umständen wirklich niemandem der mich nach Podman fragt empfehlen dein Image zu testen. Du kannst hier nicht einfach was derart geschlossenes anbieten. Auch wenn es nur ein "Testcontainer" ist. Wenn was schief geht oder es Probleme gibt dann fällt das automatisch an ioBroker zurück.
Wenn du es für dich selbst so zusammen bastelst ist das sicher ok. Wenn du es der Community bereit stellen willst braucht es aber ein anderes Level...MfG,
André