NEWS
[HowTo] ioBroker unter Docker auf Synology DiskStation
-
@gutgut30
Benutzerdefinierte Startup Scripte:
https://github.com/buanet/docker-iobroker#userdefined-startup-scriptsMfG,
Andre -
@andre
Danke! Du hast echt an alles gedacht -
@gutgut30 Zumindest an alles was ich selbst verwende.
-
Erstmal viele Dank für die tolle Docker Installation.
Ich habe seit Nodejs 12.xxx ein Problem mit meinem mihome-Adapter.
So wie ich das vestehe hat es damit zutun, dass canvas mit root-Rechten installiert wurde und der Adapter deshalb keinen Zugriff auf Nodesjs hat.
Hatte vor Nodejs 10.xxx drauf, da hat alles wunderbar funktionert.Ich habe im Forum schon nachgefragt, leider kennt sich dort aber niemand mit der Docker-Synology Installation aus. Vielleicht hast du einen Tipp für mich oder kannst mir helfen.
Mein System ist entsprechend deiner Anleitung mit portainer aufgesetzt. Hatte die letzten Jahre nie Probleme damit. Leider kenne ich mich zu wenig aus und habe echt Angst mein gut laufendes System zu beschädigen.
Hier der Link zu meinem Problem. Für die Raspberry-Installation konnte dort eine Lösung gefunden werden.
Hier die Info von jemanden mit dem gleichen Problem, damit du dich nicht extra einlesen musst:
Hey, das dachte ich auch als letztes, aber dank @Thomas-Braun der mich auf den Fehler bei der Rechtevergabe einzelner Dateien unter /node_modules/canvas verwiesen hat konnte ich das Problem lösen. Habe die Rechte nach Post von Thomas-Brau von oben dann angepasst mit setfacl und siehe da, die Karte ist wieder da
Und hier die Info von Thomas Braun:
Achtung, die Rechte sind mit ACL gesetzt, mach da nichts mit chmod dran. Da muss mit setfacl rangegangen werden. Die package.json steht bei mir z. B. so:
-
@Sweatchuck sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
So wie ich das vestehe hat es damit zutun, dass canvas mit root-Rechten installiert wurde und der Adapter deshalb keinen Zugriff auf Nodesjs hat.
Das sind für mich irgendwie drei Paar Schuhe...
Kann dem Ganzen auch nicht so recht folgen. Funktioniert denn das "Rechte gerade biegen" auch im Container? Und viel wichtiger: Warum stimmen die Rechte nicht? Wann und wie wird denn canvas installiert?
Im Moment weiß ich noch nicht wo ich da helfen kann...MfG,
André -
Da hast du bestimmt wesentlich mehr Ahnung als ich Bin nur Anwender der nach Anleitung was machen kann.
Dachte du kannst du Befehle für den Raspberry ggf. für die Synology „übersetzen“.
Aber vielleicht kannst du mir sagen wie ich über die Console über portainer Nodejs wieder auf Version 10.xxx downgraden kann.
Leider ist mir der Befehl dafür nicht bekannt.
-
@andre canvas wird von dem miio vaccuum Adapter zur Darstellung der Karte verwendet. Da aus irgendwelchen mir unbekannten Gründen das Modul nicht automatisch nachgezogen wird baut man das meist manuel.
Wenn das dann als root erfolgt stimmen die Zugriffsrechte halt nicht.Was ich aber noch nie verstanden habe, warum kann man im Docker/Synology-Setup nicht mit dem bei Debian eigentlich üblichen sudo-Konzept arbeiten?
-
@andre Gibt es schon planungen wann daus der aktuellen 5.0.1 beta eine stable wird?
Ich habe die Beta bei mir getestet und sie scheint auch soweit ich das in meiner Testumgebung beurteilen kann gut zu laufen und nun würde ich gerne mein Prod System auch auf das 5er Image anheben. Dazu wollte ich aber auf eine stable warten die die aktuellen fixes enthält.Gruß,
Frank -
@Sweatchuck sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
Dachte du kannst du Befehle für den Raspberry ggf. für die Synology „übersetzen“.
Grundsätzlich lässt sich sowas sicher machen, aber ich bin eher ein Freund davon das Problem an der Wurzel zu lösen.Dazu muss ich das Problem aber erst einmal verstehen.
@Sweatchuck sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
Aber vielleicht kannst du mir sagen wie ich über die Console über portainer Nodejs wieder auf Version 10.xxx downgraden kann.
Ein Downgrade würde ich dir nicht empfehlen. Das macht wenig Sinn und ist auch nicht nur "ein Befehl". Wenn es denn doch sein muss, dann kannst du hier im Forum Anleitungen für die Kommandozeile finden. Besser wäre aber wohl einen Container aus dem Image v4.2.0 zu starten.Da ist Node 10 drin. Bevorzugter Weg dazu wäre über backup und restore (siehe Best practices).
MfG,
André -
@Thomas-Braun sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
canvas wird von dem miio vaccuum Adapter zur Darstellung der Karte verwendet. Da aus irgendwelchen mir unbekannten Gründen das Modul nicht automatisch nachgezogen wird baut man das meist manuel.
Wenn das dann als root erfolgt stimmen die Zugriffsrechte halt nicht.Könnten wir ergründen warum das Modul bei der Installation des Adapters nicht ordnungsgemäß installiert wird? Gibt es dazu ein Issue beim Adapter? Betrifft das nur die Installation unter Docker?
Wenn ich das so lese, sieht das für mich aus, als ob wir das im Adapter fixen müssten. Aus Sicht eines Anwenders ist das "manuelle" bauen immer ungünstig...@Thomas-Braun sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
Was ich aber noch nie verstanden habe, warum kann man im Docker/Synology-Setup nicht mit dem bei Debian eigentlich üblichen sudo-Konzept arbeiten?
Oha, das ist ein Stich ins Wespennest. Darüber könnte ich jetzt laaaaange referieren und es würde doch nichts ändern... Die Kurzfassung: Ein Docker Container ist eben keine virtuelle Maschine. Der Container besitzt keinen eigenen Kernel, sondern teilt sich einen Kernel mit dem Host. Bedeutet, alle Prozesse im Container laufen (abgekapselt) unter einem User des Hosts. Dazu kommt, dass ein Container eigentlich immer nur einen Prozess beherbergen sollte... (geht bei ioBroker nur nicht!) Ein Berechtigungskonzept ist also in einem Docker Container weder notwendig, noch vorgesehen!
Allerdings kann man in einem Container, der z.B. auf Debian basiert, durchaus sudo einrichten und nutzen (ist sogar in meinem Container vorinstalliert)... Wenn man dann allerdings wieder eine Synology DiskStation nimmt, die zwar einen Linux Kernel hat, aber weder ein Debian noch auf dem aktuellen Stand ist (was den Linux Kernel angeht), dann gibt es hier auch wieder Probleme...
Kurzum: sudo im Container = bäh bäh, aber für manche Operationen im ioBroker notwendig, was wiederum auf bestimmten Hosts (DiskStations) zu Problemen führen kann.MfG,
André -
@hetti72 sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
Gibt es schon planungen wann daus der aktuellen 5.0.1 beta eine stable wird?
Nein. Ich teste aktuell noch ein paar Neuerungen in der 5.0.2beta. Da ich in der 5.0.1beta im Grunde nur Fixes gemacht habe, spricht aus meiner Sicht aktuell nichts dagegen die produktiv zu nutzen.
MfG,
André -
@andre
Danke für die Info. Dann mach ich mich diese Woche mal an das update.
Für mich als IT´ler ist ja eigentlich ein NoGo eine Beta in Produktiven Umgebungen einzusetzen, daher kam meine Frage.Noch eine zusätzliche Frage: Ich plane mit dem 5er Image Redis als StatesDB einzusetzen. Ist es Sinnvoll direkt den neuen Container mit Redis zu starten und das Backup einzuspielen oder die Umstellung auf erst nachträglich zu machen?
Gruß,
Frank -
@hetti72 sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
Für mich als IT´ler ist ja eigentlich ein NoGo eine Beta in Produktiven Umgebungen einzusetzen, daher kam meine Frage.
Gerade dann solltest du keine Scheu haben auch mal eine Beta Version ein zu setzen. Immerhin weißt du dir dann ja im Fall der Fälle zu helfen oder weißt zumindest was das Wort Backup bedeutet...
@hetti72 sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
Noch eine zusätzliche Frage: Ich plane mit dem 5er Image Redis als StatesDB einzusetzen. Ist es Sinnvoll direkt den neuen Container mit Redis zu starten und das Backup einzuspielen oder die Umstellung auf erst nachträglich zu machen?
Da habe ich keine Erfahrungswerte. Ich würde vermutlich erst updaten und wenn alles wieder läuft auf redis umsteigen.
MfG,
André -
@hetti72
Daher ich vor allem mit Redis und Docker wirklich super viele Probleme hatte, ganz klarer Tipp: Erst Updates, dann ganz regulär von file zu Redis Switchen. Beides gleichzeitig ist bei mir immer schief gegangen. -
@andre said in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
@gutgut30 Zumindest an alles was ich selbst verwende.
Hat übrigens 1a geklappt mit dem StartUp Script. Es hat mich zwar wirklich Zeit und Nerven gekostet, einige OS Installationen und viel geteste - aber inzwischen läuft der iobroker dank deines Containers super stabil.
Ich betreibe die Nummer auf einem HTPC mit LibreElec als OS und Docker als Plugin von LibreElec.
Läuft einwandfrei - auch mit Bluetooth (Radar2 & BLE Adapter) sowie einem eigenen Redis Container.Besten Dank dafür!
Ich wollte ggf noch mal einen MySQL Container dazu setzen, Kämpfe aber aktuell noch etwas mit den Netzwerksettings & Startreihenfolgen der Container. Das ist aber ein Problem mit meinem Docker Wissen als mit deinem Container
-
@gutgut30 sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
@hetti72
Erst Updates, dann ganz regulär von file zu Redis Switchen. Beides gleichzeitig ist bei mir immer schief gegangen.Ok, dann mache ich das auch so. Danke
-
Konntest du das Problem verstehen? Ich leider nicht.
Verstehe zwar, dass die Rechte nicht passen...hilft aber nicht weiter wenn ich das nicht ändern kann. Der Support im Adapter beschränkt sich leider nur auf die Raspberry-Lösung.
Würde mich freuen wenn du da ggf. eine Lösung hättest.
Danke + Gruß
Sweatchuck -
@Sweatchuck Leider dwurden meine Fragen von @Thomas-Braun noch nicht beantwortet. Für mich klingt das:
@Thomas-Braun sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
Da aus irgendwelchen mir unbekannten Gründen das Modul nicht automatisch nachgezogen wird baut man das meist manuel.
nach einem Adapter Thema. Soweit ich das verstanden habe muss ergründet werden warum das Paket bei der Installation des Adapters nicht ordnungsgemäß installiert wird.
Aus Sicht eines Anwenders ist ein "baut man das meist manuell" keine optimale Lösung.
Hier bin auch ich auf die Hilfe des Adapter Entwicklers angewiesen.
Sicher könnte man eine Art Workaround Scripten, aber solange das Thema so gelagert ist wie ich das aktuell sehe ist das Murks. Man sollte das Problem immer an der Wurzel lösen... -
@andre sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
@Sweatchuck Leider dwurden meine Fragen von @Thomas-Braun noch nicht beantwortet. Für mich klingt das:
@Thomas-Braun sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
Da aus irgendwelchen mir unbekannten Gründen das Modul nicht automatisch nachgezogen wird baut man das meist manuel.
nach einem Adapter Thema. Soweit ich das verstanden habe muss ergründet werden warum das Paket bei der Installation des Adapters nicht ordnungsgemäß installiert wird.
Aus Sicht eines Anwenders ist ein "baut man das meist manuell" keine optimale Lösung.
Hier bin auch ich auf die Hilfe des Adapter Entwicklers angewiesen.
Sicher könnte man eine Art Workaround Scripten, aber solange das Thema so gelagert ist wie ich das aktuell sehe ist das Murks. Man sollte das Problem immer an der Wurzel lösen...Ich bin nicht der Maintainer des Adapters. Ich kann da nur aus meiner 'Anwendersicht' was zu sagen. Das Ding baut nicht automatisch, also baue ich das selber. Von der Inneren Magie von npm usw. habe ich keine Ahnung.
canvas wird aber ja auch von anderen Adaptern benötigt, das scheint also irgendwie grundsätzlich da zu klemmen. -
@Thomas-Braun Danke für die Rückmeldung.
@Sweatchuck Ich weiß nicht so recht was ich da tun kann. Habe mir den Adapter gerade mal angeschaut, aber ohne Staubsauger kann ich da halt nicht viel sehen/ ausprobieren. Das was hier steht hast du gemacht? Also entweder das
build-essential libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev
bei der Erstellung des Containers in die Environment Variable "PACKAGES" oder alternativ in der Kommandozeile des Containers (als root in /opt/iobroker) ein:
apt-get update apt-get install build-essential libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev
Und anschließend canvas installieren:
npm install canvas --unsafe-perm=true
???
MfG,
André