OH3 im Docker mit Debian als Basis

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Boris099
Beiträge: 383
Registriert: 19. Feb 2020 20:51
Answers: 3
Wohnort: Saarbrücken

Re: OH3 im Docker mit Debian als Basis

Beitrag von Boris099 »

So nun möchte ich OH3.3 auf 3.4 upgraden. Sofort stellt sich mir die Frage wie denn nun?
Mein OH3.3. läuft als kleine Testversion ohne jegliche items ,lediglich Mosquitto, in einem Docker Container.
Diesen OH3.3 Container hatte ich via Portainer installiert, wie mache ich nun den Upgrade in der Console oder via Portainer?
Raspberry 4, Rev.1.2b, 4GB, Openhab 2.5.12 (OH3 kommt im Winter dran:-))

Benutzeravatar
udo1toni
Beiträge: 15248
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: OH3 im Docker mit Debian als Basis

Beitrag von udo1toni »

Wenn Du mit Portainer installiert hast, liegt in Portainer ja ein Template vor. Die schritte sind also
1. Stack verwerfen (ohne die Volumes zu löschen)
2. Template anpassen, so dass es nun auf das 3.4 Image zeigt.
3. Stack aus Template erzeugen.
4. Staunen und freuen.

Natürlich kann immer etwas schief gehen ;) und tut dies auch gerne, gerade wenn man das zum ersten Mal macht. Aber wenn Du keinen Unsinn konfiguriert hast, wird das 3.4 er stable Image genauso hochkommen wie das 3.3er Image.

Übrigens: Falls Du als Image openhab:latest angegeben hast, musst Du noch nicht mal den Stack wegschmeißen.
Es reicht dann, den Container anzuhalten und neu zu deployen. dabei kann man einen Schalter umlegen, dass das Image neu geladen werden soll.

Die neue Snapshot Version ist openHAB4.0, welche Java17 voraussetzt. openhAB3.4 läuft auch unter Java17, standardmäßig wird aber Java11 verwendet. Mit Docker kann Dir das aber egal sein, weil diese Abhängigkeit ja schon im Image eingebaut ist.

Nach dem erneuten Deployen empfiehlt es sich, die Liste der Images zu inspizieren und ungenutzte Images zu löschen. Docker wird niemals von sich aus Images verwerfen, weshalb sich schon nach kurzer Zeit enorme Datenmangen ansammeln können.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Boris099
Beiträge: 383
Registriert: 19. Feb 2020 20:51
Answers: 3
Wohnort: Saarbrücken

Re: OH3 im Docker mit Debian als Basis

Beitrag von Boris099 »

Das klingt zu einfach :-)
Ich habe für den OH Container keinen Stack und kein Template bzw. es wird mir nichts angezeigt.
OH hatte ich mit bzw in Portainer installiert.

und da habe ich plötzlich noch ein anderes nervendes Problem mit Debian.
Wenn der Bildschirm auf Sleep geht, bekomme ich das Bild nicht mehr zurück, egal was ich tue
Bildschirm bleibt dunkel, ich habe nix geändert....
Opera Snapshot_2022-12-21_190639_192.168.2.100.png
Opera Snapshot_2022-12-21_191111_192.168.2.100.png
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Raspberry 4, Rev.1.2b, 4GB, Openhab 2.5.12 (OH3 kommt im Winter dran:-))

Benutzeravatar
udo1toni
Beiträge: 15248
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: OH3 im Docker mit Debian als Basis

Beitrag von udo1toni »

Hast Du den openHAB Container etwa zu Fuß angelegt? Warum macht man sowas? Es steht doch das komplette docker-compose-file zur Verfügung, man muss dieses nur als Template in Portainer hinterlegen und kann es bequem deployen...

So musst Du halt schauen, ob das Image als openhab:latest eingetragen ist oder als openHAB:3.3. Im ersten Fall sollte ein erneutes Deploy ausreichen, im zweiten Fall musst Du manuell das neue Image eintragen und erneut Deployen.
Boris099 hat geschrieben: 21. Dez 2022 19:09 Wenn der Bildschirm auf Sleep geht, bekomme ich das Bild nicht mehr zurück, egal was ich tue
Bildschirm bleibt dunkel, ich habe nix geändert....
Wenn das Verhalten neu ist, hast Du was geändert. Debian ändert im Gegensatz zu Windows keine Einstellungen eigenmächtig.

Ich habe Dir mehrfach erklärt, dass Dein Ansatz an dieser Stelle grundfalsch ist. Ein Server sollte nicht als Desktop missbraucht werden.

Vermutlich wird der Rechner die Grafik zum Energiesparen ausschalten. Es ist nicht immer einfach, das bei jedem System passend einzurichten (bedenke bitte in dem Zusammenhang, dass gerade Grafikhardware mit Linux Treibern sehr oft miserabel supportet wird (vom Hersteller).
Viele Linux Treiber basieren auf Reverse Engineering der Windows Treiber, da musst Du dann halt notfalls selbst den Kernel übersetzen (wenn Du passende Anpassungen des Treiberpakets auftreiben kannst).
Ansonsten wäre mein Tipp, dass die Grafik schlafen geschickt wird, das musst Du dann halt verhindern (und mit dem Mehrverbrauch leben).
Alternativ kannst Du das X-Window System beenden und neu starten, dann muss die Grafikkarte auf jeden Fall aufwachen.
So oder so bleibt es dabei, dass der Ansatz falsch ist.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Boris099
Beiträge: 383
Registriert: 19. Feb 2020 20:51
Answers: 3
Wohnort: Saarbrücken

Re: OH3 im Docker mit Debian als Basis

Beitrag von Boris099 »

Ich hatte keine Ahnung wie Docker bzw. Portainer funktioniert, also habe ich da wohl eine manuelle Installation gemacht.
Das hatte ich in der Konsole gestartet, hier mit openhab:3.3.0

Code: Alles auswählen

sudo docker run \
        --name openhab \
        --net=host \
        -v /etc/localtime:/etc/localtime:ro \
        -v /etc/timezone:/etc/timezone:ro \
        -v /opt/openhab/conf:/openhab/conf \
        -v /opt/openhab/userdata:/openhab/userdata \
        -v /opt/openhab/addons:/openhab/addons \
        -e USER_ID=998 \
        -e GROUP_ID=997 \
        -e CRYPTO_POLICY=unlimited \
        -e "EXTRA_JAVA_OPTS=-Duser.timezone=Europe/Berlin" \
        -d \
        --restart=always \
        openhab/openhab:3.3.0
Also in Portainer Openhab "Stoppen" dann einfach hier openhab:latest verwenden und diese Befehlskette nochmal in der Konsole starten?
Könnte ich auch alternativ in Portainer "Stoppen" dann "Removen" und in Portainer OH neu installieren? Die 3 Folder bleiben doch sicher erhalten bzw. deren Inhalt bzw. die OH Konfiguration?

Bzgl. Debian, ich habe dort eingestellt "Bildschirm abschalten 5min" und automatisch in Bereitschaft gehen "OFF", somit ging der Bildschirm aus und sofort wieder an, wenn Maus oder Tastatur bewegt wird - alles gut so.
Nun plötzlich geht der Bildschrim aus, System läuft weiter, OH, Portainer alles online, lediglich der Bildschirm wacht nicht auf!
Wenn ich nun an der Tastatur mit Fn + Sleep den Rechner in den Sleep schicke und wieder mit Fn + Sleep aufwecke, geht auch der Bildschirm wieder an. Ich hatte zwischenzeitlich außer einer angebotenen Debian Aktualisierung nichts verändert.
Raspberry 4, Rev.1.2b, 4GB, Openhab 2.5.12 (OH3 kommt im Winter dran:-))

Benutzeravatar
udo1toni
Beiträge: 15248
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: OH3 im Docker mit Debian als Basis

Beitrag von udo1toni »

Ich bin mir nicht sicher, ob Du den per Konsole angelegten Container über Portainer vollständig administrieren kannst. Letztlich hilft da nur ausprobieren.

Wenn Du ein Portainer Template anlegst, kannst Du yaml hinterlegen, das wäre das Dateiformat von docker-compose. Sieht dann so aus:

Code: Alles auswählen

version: '2.2'

services:
  openhab:
    image: "openhab/openhab:3.4.0"
    restart: always
    network_mode: host
    volumes:
      - "/etc/localtime:/etc/localtime:ro"
      - "/etc/timezone:/etc/timezone:ro"
      - "./openhab_addons:/openhab/addons"
      - "./openhab_conf:/openhab/conf"
      - "./openhab_userdata:/openhab/userdata"
    environment:
      CRYPTO_POLICY: "unlimited"
      EXTRA_JAVA_OPTS: "-Duser.timezone=Europe/Berlin"
      OPENHAB_HTTP_PORT: "8080"
      OPENHAB_HTTPS_PORT: "8443"
USER und GROUP gehören dann noch unter environment, wenn Du die gleichen Parameter verwenden willst. Ansonsten ist das yaml hier das Original Beispiel aus dem Docker Hub
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Boris099
Beiträge: 383
Registriert: 19. Feb 2020 20:51
Answers: 3
Wohnort: Saarbrücken

Re: OH3 im Docker mit Debian als Basis

Beitrag von Boris099 »

Oh Mann, was ist denn "Yaml" hinterlegen :-)

Ich habe nun einfach mal "Recreate" und "pull latest image" ausgeführt, dabei ist er "nicht" auf 3.4 sondern auf 3.3 geblieben.
Also doch anders!

Wenn ich Openhab nun deinstallieren will, wähle ich "Kill" im Portainer aus und das Ding ist weg?
und die Folder mit der Config bleiben erhalten?
Dann lege ich im Portainer dieses Script oben als custom template an und füge unter environment
die schon existierenden user und group hinzu?
Und wo hänge ich dann dieses --device=/dev/ttyUSB0 dran?
Erkennt es dabei auch zwei USB Sticks z.B. ein ZWAVE und ein Zigbee?

Code: Alles auswählen

version: '2.2'
Wieso steht bei image openhab:3.4.0 und nicht openhab:latest?

services:
  openhab:
    image: "openhab/openhab:3.4.0"
    restart: always
    network_mode: host
    volumes:
      - "/etc/localtime:/etc/localtime:ro"
      - "/etc/timezone:/etc/timezone:ro"
      - "./openhab_addons:/openhab/addons"
      - "./openhab_conf:/openhab/conf"
      - "./openhab_userdata:/openhab/userdata"
    environment:
      CRYPTO_POLICY: "unlimited"
      EXTRA_JAVA_OPTS: "-Duser.timezone=Europe/Berlin"
      OPENHAB_HTTP_PORT: "8080"
      OPENHAB_HTTPS_PORT: "8443"
      USER_ID=998
      GROUP_ID=997
    paramenter:  
      --device=/dev/ttyUSB0
Raspberry 4, Rev.1.2b, 4GB, Openhab 2.5.12 (OH3 kommt im Winter dran:-))

Benutzeravatar
udo1toni
Beiträge: 15248
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: OH3 im Docker mit Debian als Basis

Beitrag von udo1toni »

Das Problem ist, dass Du als Image 3.3 angegeben hast. Latest Image bezieht sich immer auf das angegebene Image. Hättest Du beim Anlegen des Containers latest als Image ausgewählt, dann hätte er vor zwei Wochen das 3.3 Image genommen und heute halt 3.4 (latest ist immer das letzte stable build, ist im Hub auch so erklärt)

Template erstellen:

Du meldest Dich in Portainer an.
Anschließend wählst Du die lokale Instanz aus (ich gehe mal davon aus, dass Du ohnehin nur die eine hast)
Nun wählst Du aus dem Menü links aus dem Punkt App Templates den Unterpunkt Custom Templates aus.
Auf der rechten Seite gibt es eine Schaltfläche "Add Custom Template", welche Du auswählst.
Nun gibst Du die notwendigen Informationen an:
1. Title: z.B. openhab (nur Kleinbuchstaben, Zahlen und Minus, also openhab-3 wäre ok, openHAB wäre nicht ok).
2. Description: z.B. openHAB 3.4
3. Note: irgendwas sinnvolles, damit Du Dich später noch erinnerst
4. Icon URL: https://www.openhab.org/openhab-logo-square.png
5. Platform: Linux
6. Type: Standalone
7. Build Method: Web Editor
8. Im Editorfenster fügst Du folgendes ein:

Code: Alles auswählen

version: '2.2'

services:
  openhab:
    image: "openhab/openhab:latest"
    restart: always
    network_mode: host
    volumes:
      - "/etc/localtime:/etc/localtime:ro"
      - "/etc/timezone:/etc/timezone:ro"
      - "/opt/openhab/addons:/openhab/addons"
      - "/opt/openhab/conf:/openhab/conf"
      - "/opt/openhab/userdata:/openhab/userdata"
    environment:
      CRYPTO_POLICY: "unlimited"
      EXTRA_JAVA_OPTS: "-Duser.timezone=Europe/Berlin -Dgnu.io.rxtx.SerialPorts=/dev/ttyUSB0"
      OPENHAB_HTTP_PORT: "8080"
      OPENHAB_HTTPS_PORT: "8443"
      USER_ID: "998"
      GROUP_ID: "997"
    devices:
      - "/dev/ttyUSB0:/dev/ttyUSB0"
Du gibst also latest als Image an, damit beim nächsten Update automatisch die Version 4 genommen wird (in einem halben Jahr...)
Du gibst für die Volumes die gleichen Pfade an wie bisher, damit der neue Container die Daten weiter verwendet.
Du gibst für die Environment Variablen hinter der Variablen einen Doppelpunkt an und setzt Anführungszeichen um die Werte
Du verwendest das Schlüsselwort devices für die Liste der zu übergebenden Devices.
Du gibst in der Environment Variablen EXTRA_JAVA_OPTS zusätzlich den Serial Port mit an, damit Java diesen überhaupt nutzen kann.

Ganz unten auf Create Template klicken, womit das Template nun gespeichert sein sollte.

In der Liste der Custom Templates taucht nun das Template für openHAB auf.
Nun ist der Zeitpunkt gekommen, den alten Container zu stoppen und zu löschen.
Anschließend wechselst Du in die Custom Templates, klickst dort VORNE auf das soeben erstellte Template und deployst es. Du kannst natürlich vorher noch Anpassungen vornehmen (Customize Template).
Wenn Du alles richtig gemacht hast und es auch tatsächlich ein Serial Device mit Namen ttyUSB0 gibt, sollte nach kurzer Zeit die Anzeige auf Stacks wechseln, wo Du nun Deinen neuen openHAB Stack sehen müsstest. Passt das so weit, kannst Du in die Liste der Container zurück wechseln, wo Du den laufenden Container sehen müsstest. Dort kannst Du auch das Log für das docker Image einsehen.

Nicht davon irritieren lassen, wenn der Container eine Weile auf starting stehen bleibt, einfach mal versuchen, auf Port 8080 mit http oder auf Port 8443 mit https zuzugreifen.

Zum weiteren Verständnis: Ein Stack kann durchaus auch mehrere Container beinhalten. Du könntest also z.B. noch einen Container für Grafana und einen Container für InfluxDB zu diesem Template hinzufügen. Wenn du dann das Template deployst, werden alle drei Container auf einen Schlag erstellt. Mit einer(!) passenden docker-compose.yaml kannst Du also ein komplettes openHAB System aufsetzen lassen, welches sich zu 99% wie ein mit openHABian aufgesetztes System verhält.
Das eine Prozent ist der Tatsache geschuldet, dass openHABian einige Dinge tut, die man in Docker halt anders löst. Die wesentlichen Dinge kann man natürlich zu 100% abbilden, wenn man sich darum bemüht.

Ich könnte mir durchaus vorstellen, dass es irgendwann ein "Konkurrenzprodukt" zu openHABian geben wird, welches Docker als Unterbau verwendet. Interessant ist das vor allem, weil Docker auf vielen Plattformen läuft, nicht nur auf debian-artigen Distributionen.
Aber einen passenden Stack zusammenzustellen ist eben auch nicht trivial und braucht auch Zeit.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Boris099
Beiträge: 383
Registriert: 19. Feb 2020 20:51
Answers: 3
Wohnort: Saarbrücken

Re: OH3 im Docker mit Debian als Basis

Beitrag von Boris099 »

Also Vielen Dank schon mal für dieses Template.
Habe das eingebaut und deployed aber ich bekomme einen Fehler, ich glaube das hat was mit dem /dev/ttyUSB0.... zu tun.

Deployment error
failed to deploy a stack: openhab Pulling 025c56f98b67 Pulling fs layer b9e61941cd26 Pulling fs layer 11ef5cb14c42 Pulling fs layer 7ecf41deb6af Pulling fs layer 4fa1d0349810 Pulling fs layer c58db1d12c8d Pulling fs layer 7ecf41deb6af Waiting 4fa1d0349810 Waiting c58db1d12c8d Waiting 025c56f98b67 Downloading [> ] 327kB/31.41MB 11ef5cb14c42 Downloading [> ] 540.7kB/142.9MB b9e61941cd26 Downloading [> ] 540.7kB/78.11MB 11ef5cb14c42 Downloading [> ] 1.067MB/142.9MB 025c56f98b67 Downloading [=> ] 973.2kB/31.41MB b9e61941cd26 Downloading [> ] 1.081MB/78.11MB 11ef5cb14c42 Downloading [> ] 1.608MB/142.9MB 025c56f98b67 Downloading [==> ] 1.62MB/31.41MB b9e61941cd26 Downloading [=> ] 1.622MB/78.11MB 11ef5cb14c42 Downloading [> ] 2.136MB/142.9MB 025c56f98b67 Downloading [===> ] 2.263MB/31.41MB 11ef5cb14c42 Downloading [> ] 2.677MB/142.9MB b9e61941cd26 Downloading [=> ] 2.163MB/78.11MB 025c56f98b67 Downloading [====> ] 2.919MB/31.41MB 11ef5cb14c42 Downloading [=> ] 3.218MB/142.9MB und ganz am Ende steht dann
reating Container openhab-openhab-1 Created Container openhab-openhab-1 Starting Error response from daemon: error gathering device information while adding custom device "/dev/ttyUSB0": no such file or directory
Raspberry 4, Rev.1.2b, 4GB, Openhab 2.5.12 (OH3 kommt im Winter dran:-))

Boris099
Beiträge: 383
Registriert: 19. Feb 2020 20:51
Answers: 3
Wohnort: Saarbrücken

Re: OH3 im Docker mit Debian als Basis

Beitrag von Boris099 »

OK Fehlalarm - aufgrund der Message "error gathering device information" habe ich den Zigbee Stick mal eingesteckt und noch mal deployed- LÄUFT!!!
Das bedeutet aber auch ohne das eingesteckte USB Gerät kann man das so nicht deployen.

Kann ich mit dieser Setting auch nun nach dem Deployen einen weiteren USB-Stick hinzufügen z.B. ZWave, bzw. wird der automatisch erkannt?
Raspberry 4, Rev.1.2b, 4GB, Openhab 2.5.12 (OH3 kommt im Winter dran:-))

Antworten