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

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

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

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

Beitrag von rebell21 »

Hallo,

ich habe OpenHAB eine ganze Weile als Service in Raspbian OS auf dem Raspi 4B betrieben. Dabei eine größere Konfiguration angelegt und diese auch fleißig mit Openhab-cli backup gesichert. Dabei ist eine 160 MByte Datei xxxx.config entstanden.

Nun habe ich einem Ratschlag von hier entsprechend eine neue OpenHAB installation in einem Docker Container auf einem IntelNuc gemacht. Ich kann aber die Konfiguration, die ich mit openhab-cli auf dem Raspi gesichert habe, nicht in die neue Docker Installation einspielen.
Es gibt in Docker kein Openhab-cli restore.

Ich habe auch schon die Datei xxxx.config ausgepackt. Dabei sind die Verzeichnisse conf und userdata entstanden. Ich habe dann diese Verzeichnisse in die conf und userdata Verzeichnisse des Docker Containers kopiert (/opt/openhab/data/openhab/conf und /opt/openhab/data/openhab/userdata). Aber das hat auch nicht geholfen.

Ich möchte aber die gesamte Konfiguration der > 100 Things und Pages nicht noch einmal manuell machen.

Wie kann ich eine Konfiguration, die mit openhab-cli backup erstellt wurde, in eine openhab-Installation unter docker einspielen ?

Beiden Openhab Versionen haben die gleiche Versionsnummer (openhab 4.2.1)

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 »

Hallo,

ich kann mitteilen, dass es nun doch gelungen ist. Ich hatte ein Problem mit dem Verzeichnissen und nach der Korrektur habe ich mit rsync die aktuellen Daten in die neue openhab Installation in docker einspielen können

gelöst

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 »

Tatsächlich wäre das der korrekte Weg. Allerdings gibt es ein paar Stolperfallen dabei.
Der erste Punkt wäre: bist Du mit dem Pfad sicher? Du musst die Dateien im Host-System dort ablegen, wo die Volumes des Containers liegen.
Wenn die Volumes von /opt/openhab/data/openhab/ aus gemountet werden, sollte das passen. Allerdings müsstest Du dabei bestehende Dateien überschrieben haben..
Der zweite Punkt: stimmen nach dem Kopieren die Dateirechte? Dabei ist wichtig, die Dateirechte müssen aus dem Container heraus stimmen. Gewöhnlich werden im Docker Container die UID 998 und GID 997 verwendet, das Backup vom Raspberry dürfte hier fast sicher abweichen. Angleichen kannst Du das mittels des Befehls

Code: Alles auswählen

sudo chown 998:997 -R /opt/openhab/data/openhab/[userdata|conf]/*.*
(wobei ich dazu raten möchte, die beiden Pfade userdata und conf getrennt zu bearbeiten ;) chown ändert den Besitzer der Datei, -R tut dies rekursiv unterhalb des angegebenen Pfades, dank *.* werden alle Dateien einbezogen. Wichtig ist aber, dass die UID und GID der entsprechen, die der Container tatsächlich nutzt.

Leider geht es aber noch weiter, es kann nämlich gut sein, dass Du "zu viel" wiederhergestellt hast. Der "bessere" Ansatz wäre, den Container komplett neu zu erstellen (mit neuen, zunächst leeren Volumes!). Dann startest Du den Container und führst ein minimales Setup durch (d.h. bis Du in der Main UI angemeldet bist).
Anschließend stoppst Du den Container. Nun kopierst Du nur ein paar wenige Dateien aus dem Backup an die korrekten Stellen (aber immer dran denken, dass UID und GID anschließend passen müssen):
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.
Falls Du Dinge mittels Textdateien konfiguriert hast (im Verzeichnis /etc/openhab/...) kopierst Du die entsprechenden Dateien (aber bitte nur die, welche Du selbst erstellt oder geändert hast) aus dem conf- Ordner in das conf-Volume.

Nachdem alle Dateien am richtigen Platz sind und alle Dateibesitzrechte korrekt gesetzt sind, kannst Du den Container erneut starten. Nun sollten alle Einstellungen wie im alten System vorhanden sein. Die Addons musst Du einmalig neu installieren, aber Things, Items, Rules, UI... sollte alles so wie zuletzt gesichert aussehen.
Nacharbeiten können bei Schnittstellen fällig werden (USB in Container hereinreichen, IP-Adressen anpassen usw.)
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 »

Super, danke ich werde es noch einmal neu mit Deiner Anleitung initialisieren

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 »

Ich habe das so gemacht, aber alle Bindings sind auf diese Art und Weise verlorengegangen. Ich musste alle Bindings neu installieren. Zwei Sensoren kriege ich überhaupt nicht mehr zum Laufen.
1. HTTP URL Thing. Ein einfacher kleine Webserver im ESP32, der einen Zähler postet.
2. Eine generische IP Kamera.

Beide funktionieren gut auf dem RASPI und nicht mehr auf dem NUC. Kann die IP Kamera irgendwie mit ffmpeg ins Schleudern kommen ?

Benutzeravatar
lenschith
Beiträge: 313
Registriert: 11. Dez 2020 22:36
Answers: 0

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

Beitrag von lenschith »

Ich habe die Kameras in Docker nie wirklich zum laufen gebracht. Das war sehr unzuverlässig bzw. brachte den Container immer zum Absturz. Habe eine vm am laufen wo openhab direkt in Ubuntu läuft und da nur das Kamera Binding und greife dort den stream ab.
openHAB4.3.3 in einem Docker Container auf RPI5-8GB, AVM: Fritz!Box 7590 - SMART301/302 - Comet, SMART200/210, SMART440, Alexa, Shelly, Tasmota, ESP Easy, WLED

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 »

rebell21 hat geschrieben: 21. Nov 2024 16:07 Ich habe das so gemacht, aber alle Bindings sind auf diese Art und Weise verlorengegangen. Ich musste alle Bindings neu installieren.
Die Bindings selbst sind nicht Bestandteil der Sicherung, warum auch, sie sind ja Bestandteil der Software und werden im Zweifel erneut heruntergeladen. Stattdessen gibt es eine Datei in den Tiefen von userdata ;) in der drin steht, welche Bindings zu installieren sind.
Leider ist dieser Teil der Konfiguration nicht Bestandteil ders jsondb Verzeichnisses. Man hätte die entsprechende Datei noch kopieren können, andererseits ist dieser Teil meist überschaubar...
rebell21 hat geschrieben: 21. Nov 2024 16:07 Zwei Sensoren kriege ich überhaupt nicht mehr zum Laufen.
1. HTTP URL Thing. Ein einfacher kleine Webserver im ESP32, der einen Zähler postet.
2. Eine generische IP Kamera.
Zu Punkt 1: sendet der Webserver von sich aus in Richtung openHAB, oder wird er von openHAB abgefragt? Läuft der openHAB Container netzwerkseitig im host-Mode? läuft eventuell ein anderer Prozess auf dem benötigten Port? Denke immer daran, openHAB benötigt bestimmte Ports, die dürfen nicht von anderer Software belegt werden. Notfalls musst Du die entsprechenden Container anders konfigurieren. openHAB selbst sollte unbedingt im host-Mode laufen, weil sonst MDNS/AVAHI/Zeroconf nicht funktioniert.
Zu Punkt 2: ffmpeg ist nicht Bestandteil des offiziellen Containers. Du müsstest entweder einen inoffiziellen Container mit fertig installiertem ffmpeg nehmen oder den offiziellen Container entsprechend modifizieren, d.h. ein eigenes Image bauen lassen - das ist weniger schlimm als es sich anhört, letztlich gibst Du in einer Konfigurationsdatei an, dass openhab:latest die Grundlage bildet und anschließend ffmpeg installiert werden muss.
Ich bin mir nicht zu 100 % sicher, aber eigentlich müsste es hier irgendwo eine Anleitung dazu geben.
Leider gibt es im ipcamera Binding keine Option, ffmpeg über Websocket anzusteuern, dann könnte man ffmpeg in einem eigenen Container laufen lassen (das wäre die "richtige" Art, das Problem zu lösen), aber auch die Variante mit eingebautem ffmpeg sollte problemlos laufen.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
lenschith
Beiträge: 313
Registriert: 11. Dez 2020 22:36
Answers: 0

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

Beitrag von lenschith »

da ich das Binding schon installiert habe, kann ich dir hier die Anleitungen posten.

Du musst noch ein weiteres Volume einbinden, damit das ffmpeg automatisch installiert wird wenn es mal nicht da ist. z.B. Update
https://github.com/openhab/openhab-dock ... is-started

Script:
Adding a /etc/cont-init.d/20-install-ffmpeg script like this might work:

Code: Alles auswählen

#!/bin/bash

if ! which ffmpeg >/dev/null; then
    echo "Installing ffmpeg"
    apt-get update
    apt-get install -y ffmpeg
else
    echo "ffmpeg is already installed"
fi
du kannst aber auch manuell installieren z.B.
https://community.openhab.org/t/install ... e/155664/2

Code: Alles auswählen

docker exec -it openhab bash
im Container dann

Code: Alles auswählen

apt update 
apt install ffmpeg
Gib doch Info ob es bei dir funktioniert. Ich hatte leider keinen Erfolg :?
Bei mir ist irgendwann immer der Container abgeschmiert
openHAB4.3.3 in einem Docker Container auf RPI5-8GB, AVM: Fritz!Box 7590 - SMART301/302 - Comet, SMART200/210, SMART440, Alexa, Shelly, Tasmota, ESP Easy, WLED

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 »

Puh, ja, das kann man natürlich auch machen, ist halt nicht so wirklich gut... Nach jedem Start des Containers wird ffmpeg nachinstalliert...

Besser ist es, ffmpeg wirklich zu integrieren.

Ungetestet: Man legt eine Datei an (nennen wir sie am besten openhab_ffmpeg):

Code: Alles auswählen

FROM openhab/openhab:latest
RUN apt-get -y update && apt-get install -y ffmpeg
Anschließend generiert man das eigene docker-Image mittels docker build -f openhab_ffmpeg
Danach kann man dieses Image als Grundlage für den eigenen Container verwenden.
Das Buils-Script ist denkbar klein, weil ja nur ein zusätzliches Paket mit ins Image eingebaut wird.
ffmpeg macht natürlich das Image empfindlich größer, irgendwas ist ja immer...

EDIT: Besser:

Code: Alles auswählen

FROM openhab/openhab:latest
RUN apt-get -y update && apt-get install -y ffmpeg && apt clean && rm -rf //var/lib/apt/lists/*
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
lenschith
Beiträge: 313
Registriert: 11. Dez 2020 22:36
Answers: 0

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

Beitrag von lenschith »

Ne er prüft, wenn's da ist macht er nix. Wenn nicht mehr da wird es installiert.
openHAB4.3.3 in einem Docker Container auf RPI5-8GB, AVM: Fritz!Box 7590 - SMART301/302 - Comet, SMART200/210, SMART440, Alexa, Shelly, Tasmota, ESP Easy, WLED

Antworten