Migration einer OpenHAB Installation in RaspbianOS als Service in eine Docker Installation

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

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

Re: Migration einer OpenHAB Installation in RaspbianOS als Service in eine Docker Installation

Beitrag von udo1toni »

Ja, aber nein.

Per Definition ist ffmpeg niemals vorhanden, wenn der Container startet, es sei denn, der Container wurde lediglich pausiert (dann allerdings wird er nicht neu gestartet)

Das ist ja der Witz an Docker, wenn der Container startet, ist er immer unberührt (um nicht jungfräulich zu sagen).
Das ist auch der Grund für die Volumes, mit denen die volatilen Daten über den Neustart gerettet werden.
Und wenn Du die Volumes anschaust, wirst Du feststellen, dass es dort kein Volume für bin gibt (und das auch keinesfalls geben darf!).
Die einzige Möglichkeit, ffmpeg persistent im Container zur Verfügung zu stellen, ist, das Image zu erweitern.
ffmpeg nachträglich zu installieren (über cont-init.d) ist möglich, aber eben wenig elegant. im installierten Zustand nimmt ffmpeg ca. 85 MByte zusätzlichen Platz ein. Ich hab jetzt nicht nachgeschaut, aber ich fürchte, apt lädt wesentlich mehr herunter, als nur diese 85 MByte (wo mir gerade einfällt, ich habe oben noch ein apt clean && rm -rf //var/lib/apt/lists/* vergessen...)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

rebell21
Beiträge: 125
Registriert: 23. Aug 2024 09:34
Answers: 0

Re: Migration einer OpenHAB Installation in RaspbianOS als Service in eine Docker Installation

Beitrag von rebell21 »

Rückmeldung zur ersten Variante : ffmpeg im laufenden Conatiner nachinstallieren.
ich mache "docker exec -it openhab bash", Erfolg, eine Shell öffnet sich
in der Shell : "localhost:/openhab# apt update"
Ergebnis :
bash: apt: command not found
es gibt das Kommando apt und auch apt-get nicht im Docker Container. Keine Ahnung, wie es hier weitergeht

Rückmeldung zur zweiten Variante : Erstellen eines Containers mit ffmpeg
Ich habe die Datei openhab_ffmpeg erstellt

cat openhab_ffmpeg
FROM openhab/openhab:4.2.1-alpine
RUN apt-get -y update && apt-get install -y ffmpeg && apt clean && rm -rf //var/lib/apt/lists/*

dann sage ich: "docker build -f openhab_ffmpeg"
Ergebnis:
ERROR: "docker buildx build" requires exactly 1 argument.
See 'docker buildx build --help'.

Usage: docker buildx build [OPTIONS] PATH | URL | -

Start a build
Und dann passiert nichts mehr.

Ich komme da nicht weiter

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

Re: Migration einer OpenHAB Installation in RaspbianOS als Service in eine Docker Installation

Beitrag von udo1toni »

Ja, warum nimmst Du denn bitte alpine als Grundlage? apt steht nur unter debian zur Verfügung.
Bitte nimm bevorzugt latest als Image, nicht ein spezielles (selbst wenn Dein bisheriges System openHAB 4.2.1nutzte, so groß sind die Unterschiede nicht)
Offensichtlich muss der Befehl ausgeschrieben werden, obwohl die Doku es anders beschreibt...

Code: Alles auswählen

docker buildx build -f openhab_ffmpeg
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

oekonomy
Beiträge: 12
Registriert: 13. Mai 2021 17:51
Answers: 0

Re: Migration einer OpenHAB Installation in RaspbianOS als Service in eine Docker Installation

Beitrag von oekonomy »

Hallo ihr lieben Migrierer ;o)

ich versuche jetzt schon mit mehreren Anläufen und eurer obigen Anleitung und mit GPT meine OH Konfiguration in einen Container zu migrieren - so zum 20. mal.
Leider bin ich völlig auf dem Schlauch was ich hier machen soll, da so viele Fehlermeldungen und nicht funktionierendes ist, dass ich einfach nicht zum Ergebnis komme .. leider.

Ausgangspunkt war früher mal OH3. Ich habe nun OH4.3.3 - läuft super mit ein Haufen Things, vielen Scripten und hunderten Items.
Ich habe auch immer mit dem openhab-cli bzw. sudo openhabian-config gearbeitet - leider gehts ja nicht im Container...
Die Things, Items und Scripte sind nicht in den Ordnern wie in OH4 angegeben gespeichert - vielleicht liegt hier das Problem, dass ich alles früher im InternetExplorer (grafisch) erstellt habe(Paper UI glaub ich heißt es). (Ich würde mich sehr gerne um eine Neuanlage drumrummogeln, da auch die Textdefinition (grafisch) nicht mehr mit mehreren Elementen geht)

Ich habe versucht in allen erdenklichen Kombinationen (und was sonst noch geht ;o) mit openhab-cli und cp.
Ich habe als letztes versucht, das komplette OH Verzeichnis (conf und userdata) zu kopieren, was openhab-cli auswirft.
rsync bekomme ich nicht zum Laufen. Installiert ist es. Zugriffsrechte wie oben (sudo chown 998:997) bekomme ich nicht für userdata gesetzt.

Da ich nicht in linux zu Hause bin, wäre mir eine kurze Anleitung gut. GGF auch mit den Befehlen.

Auweia, ist das ein zu großer Wunsch :?: :oops: - ich finde dazu leider nix weiter im Netz

Lieben Dank für eine Unterstützung
Enrico

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

Re: Migration einer OpenHAB Installation in RaspbianOS als Service in eine Docker Installation

Beitrag von udo1toni »

Nur um sicherzugehen: Du möchtest von einem nativ auf einem GNU/Linux OS ausgeführten openHAB auf die Docker Variante wechseln?

Du hast openHAB4.3.3? Prima, denn Du bist up-to-date :)
Schritt 1 ist das Sichern der Konfiguration. Das kannst Du entweder mit openhab-cli backup machen oder alternativ "manuell". Der Befehl macht im Grunde genommen folgendes: Alle Dateien aus den Verzeichnissen $OPENHAB_CONF/ und $OPENHAB_USERDATA/<abc>/ (<abc>: bestimmte Unterverzeichnisse) werden in ein zip-Archiv gepackt.
Der Name des zip-Archivs kann entweder explizit angegeben werden oder openhab-cli setzt den Namen automatisch zusammen, aus der Zeichenfolge openhab-backup-YY_MM_DD_HH_mm_SS.zip, wobei die doppelten Buchstaben der Zeitpunkt des Backups in der Form Jahr_Monat_Tag_Stunde_Minute_Sekunde sind.
Das zip-Archiv landet im Verzeichnis $OPENHAB_USERDATA/backups/ (so Du keinen Dateinamen mit absolutem Pfad angibst).
Die Original-Konfiguration Deines Systems ist im Ordner $OPENHAB_USERDATA/jsondb/ gespeichert (das ist einer der gesicherten Ordner), weil Du alles über die UI konfiguriert hast. Der $OPENHAB_CONF-Zweig wird dennoch immer mit kopiert und sollte auch unbedingt mit ins neue System übernommen werden.

Für den Docker Container musst Du mehrere Volumes definieren, welche die volatilen Daten enthalten:

Code: Alles auswählen

/openhab/addons
/openhab/conf
/openhab/userdata
Der Trick ist nun den Inhalt des zip-Archivs passend auf die drei Volumes zu verteilen. Anschließend musst Du noch sicherstellen, dass die Besitzverhältnisse stimmen, dazu kannst Du in der docker-compose.yml passend GROUP_ID und USER_ID setzen und dann diese Werte nutzen (mit sudo chown -R UID:GID /path/to/volumes/of/openhab/* auf allen drei Volumes (das -R bedeutet, dass der Befehl rekursiv ausgeführt wird, also hier für alle Dateien in allen Verzeichnissen unterhalb /path/to/volumes/of/openhab/)

Übrigens heißt die openHAB UI "MainUI", und zwar seit openHAB3.0. Die Version openHAB2.0 bis 2.5.12 nutzte hingegen die von Dir erwähnte Paper UI.

Eigentlich ist das nicht weiter wild, allerdings: Wenn Du Dich so gar nicht mit GNU/Linux auskennst, warum überhaupt der Wechsel zu Docker? Damit erhöhst Du im Zweifel nur die Komplexität. Es befreit Dich nicht davon, Dich (zumindest etwas) mit GNU/Linux auseinanderzusetzen, im Gegenteil zwingt es Dir zusätzlich noch Docker auf.
Docker ist eine feine Sache, insbesondere, wenn man ein grafisches Frontend wie portainer verwendet, verstehen und bedienen können muss man es aber trotzdem.

Vergiss bitte rsync (zumindest, bis openHAB sauber läuft - grundsätzlich ist rsync toll, aber auch das musst Du verstanden haben, um es sinnvoll nutzen zu können)
Die einzelnen Schritte sind also entweder, die notwendigen Teile für das Backup manuell zusammenzusuchen (... dazu musst Du wissen, was im Detail gebraucht wird...) oder Dich auf openhab-cli backup zu verlassen (funktioniert meiner Erfahrung absolut zuverlässig) und anschließend das zip-Archiv manuell auf die drei Verzeichnisse aufzuteilen. Etwa so:
  1. Auf dem openHAB Host in der Shell sudo openhab-cli backup
  2. Je nach Art der Installation hast Du vermutlich Netzwerkzugrif per Samba (cifs, bzw. Windows-Freigabe) und kannst so das Archiv auf den docker Host transferieren. Alternativ ginge auch scp, das ist ein cp mittels ssh.
  3. Auf dem docker Host in der Shell führst Du mkdir backup gefolgt von cd backup aus. Damit hast Du ein Verzeichnis, in das Zu das zip-Archiv entpacken kannst.
  4. ein unzip </path/to/archivname.zip> packt das zip-Archiv im aktuellen Verzeicnis aus. Notfalls kannst Du auch hier mit sudo arbeiten, aber eigentlich sollte das zu diesem Zeitpunkt nicht notwendig sein.
  5. nach dem unzip Befehl sollten sich im aktuellen Verzeichnis eine Datei backup.properties sowie zwei Verzeichnisse (conf und userdata) befinden.
  6. Den Inhalt des conf-Verzeichnisses kopierst Du in das conf-Volume, den Inhalt des userdata-Verzeichnisses kopierst Du ins userdata-Volume. Dabei musst Du allerdings bestehende Dateien überschreiben, denn mutmaßlich sind die Volumes selbst nicht leer.
  7. sudo cp -rf conf/* /path/to/volume/of/openhab/conf/ (-rf erzwingt das Überschreiben der Dateien, falls sie vorhanden sind)
  8. sudo cp -rf userdata/* /path/to/volume/of/openhab/userdata/
  9. Anpassen der Dateirechte: sudo chown -R UID:GID /path/to/volume/of/openhab/* (wobei Du am besten vor dem Kopieren die korrekte UID:GID anhand der bestehenden Dateien ermittelst; die Option -R führt den Befehl rekursiv über alle Dateien und Unterverzeichnisse aus)
Das Einspielen der Daten sollte sinnigerweise bei gestopptem Container geschehen :)
Da Du das Spender-System schon auf 4.3.3 hast, kannst Du auch das Backup mit der Option --full ausführen lassen, dann werden allerdings wesentlich mehr Daten gesichert (aber unter anderem auch rrd4j, was vorhandene Charts erhalten sollte), das zip-Archiv ist also deutlich größer und ein solches Backup darf nur in eine identische Version eingespielt werden - insbesondere wenn man den Unterbau von/zu docker wechselt.
An einigen Stellen in der Konfiguration stehen IP-Adressen von openHAB selbst, die mit hoher Wahrscheinlichkeit nun nicht mehr passen. Es kann also gut sein, dass Du diese nach dem erfolgreichen Start des Containers manuell korrigieren musst (nein, ich kann Dir keine genauen Angaben dazu machen, es hängt von verschiedenen Faktoren ab, wo die IP auftauchen kann, aber openHAB sollte so oder so starten).
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

oekonomy
Beiträge: 12
Registriert: 13. Mai 2021 17:51
Answers: 0

Re: Migration einer OpenHAB Installation in RaspbianOS als Service in eine Docker Installation

Beitrag von oekonomy »

Hallo Udo,

vielen Dank für den sehr einfachen Weg durch den Install-Dschungel! ;)
Ich habe deine Schritte sehr gut nachvollziehen können und es vor allem wieder und wiederholen können ohne es anders zu machen, da man sich die Infos nicht woanders zusammenholen muss.

Warum ich das möchte, damit ich einen PI einspare und Solaranzeige noch dazu im Docker laufen lassen kann. UND ich besser und schneller backups erstellen und wieder einspielen kann. (Jetzt Festplatte raus, image usw. ...) .. so mein Gedankenweg.?

Ich bin leider nicht mehr uptodate :D es ist nun Version 4.3.4 aktuell...

Das hat mich das ganze zweimal heute durchgehen lassen. Natürlich noch mehr, da ich die selbst erstellten Things, Scripte und Rules aus der "alten Konfiguration" nicht geladen bekomme.
Als Gegentest habe ich nun ein Script in der grafischen Benutzeransicht erstellt und danach die Konfiguration aus den Ordnern
/openhab/conf
/openhab/userdata
gelöscht(vorher das "neue" gesichert) und die "alte Konfiguration" wieder rein - so sollte das Script ja nicht mehr da sein.? Leider Fehlanzeige..es ist noch da. :( :?: (Ordner gelöscht, geprüft ob gelöscht und dann wieder hinkopiert)

...wieder ratlos... :roll:
Zuletzt geändert von oekonomy am 1. Apr 2025 15:42, insgesamt 1-mal geändert.

oekonomy
Beiträge: 12
Registriert: 13. Mai 2021 17:51
Answers: 0

Re: Migration einer OpenHAB Installation in RaspbianOS als Service in eine Docker Installation

Beitrag von oekonomy »

Aus dem Verzeichnis userdata/jsondb/ alle Dateien (aber nicht den Unterordner backups/ oder dessen Inhalt.)
Optional aus dem Verzeichnis userdata/persistence/ alle gewünschten persistierten Daten, soweit sie vorhanden sind.

...das habe ich zu deiner Anleitung noch mehr gemacht - das war, was du auf Seite 1 von dem Thread geschrieben hattest...

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

Re: Migration einer OpenHAB Installation in RaspbianOS als Service in eine Docker Installation

Beitrag von udo1toni »

Ja, der backups-Ordner enthält die letzten x Änderungs-Kopien der jeweiligen Dateien (x ist einstellbar, Standard ist 5, also die letzten 5 Änderungen kann man rückgängig machen, indem man die jeweiligen Dateien (bei angehaltenem openHAB) gegen die entsprechende Datei aus dem backups-Ordner ersetzt. Deshalb braucht es den Inhalt dieses Ordners nicht :)
Wie hast Du die (nun fehlenden) Things, Scripte und Rules angelegt? Wenn Du explizit Scripte und Rules aufführst: Was meinst Du mit Scripten im speziellen?
Sind alle Bindings installiert? Fehlende Things werden eventuell wegen eines fehlenden Bindings nicht korrekt angezeigt (wobei es eigentlich trotzdem auftauchen sollte, nur mit initialization pending oder error)

Things, welche über die UI angelegt werden, landen in der Datei org.openhab.core.thing.Thing.json, Rules landen in automation_rules.json, wenn man sie auf disabled setzt, werden sie in die Datei automation_rules_disabled.json verschoben.
Wie oben sicher erwähnt, muss openHAB gestoppt sein, wenn man an diesen Dateien arbeitet, openHAB überwacht diese Dateien nicht (im Gegensatz zum conf-Ordner)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

oekonomy
Beiträge: 12
Registriert: 13. Mai 2021 17:51
Answers: 0

Re: Migration einer OpenHAB Installation in RaspbianOS als Service in eine Docker Installation

Beitrag von oekonomy »

...so, nachdem ich meiner Frau, die keine Ahnung von Software hat, mein Problem erzählt habe - kam ich auf diese Lösung für mich:
(Udo, du schriebst wo die Dateien sein müssen..dabei fiel mir auf, dass das Backup nicht alle Dateien mitnimmt)

Ich habe alle Schritte wie oben durchgeführt, jedoch immer mit dem selben Ergebnis - keine Things oder Scripte - auch Openhab lief nicht mehr...

Also neuer Versuch:
1.: Openhab-Docker-Image einfach gestartet .. es werden die drei Volumes mit allen erforderlichen Dateien automatisch erstellt.
2.: Diese Volumes-Dateien gesichert und in die Volumes, die ich verwende kopiert(man könnte auch diese Volumes nutzen, haben jedoch einen ganz langen namen...)
3.: Meine Backup-Files in die Volumes verteilt.

Und was soll ich sagen es geht!!! Yuppi!

Ich habe übersehen, dass ich einmal die Konfiguration durchlaufen lassen soll ohne Backup files und dann reinkopieren..wie Du auf Seite eins dieses Threads schriebst. :oops:

Auf Alle Fälle VIELEN DANK, Udo, jetzt gehts :)

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

Re: Migration einer OpenHAB Installation in RaspbianOS als Service in eine Docker Installation

Beitrag von udo1toni »

Super, freut mich, dass Du es hinbekommen hast :)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten