Seite 1 von 4

Portainer

Verfasst: 12. Feb 2024 00:58
von Snatsch
Hallo, Nachdem ich es geschafft habe auf meinem Pi 3 mit eurer Hilfe Portainer mit Grafana und influxdb zum laufen zu bringen würde ich gern mein openhab auf meinem P4 auch im Docker laufen lassen. Jetzt habe ich schon ca.1000 Webseiten und Videos angeschaut aber leider weiß ich nicht wie ich meine jetzt laufende openhab config in den Docker bekommen soll. Hatte schon versucht ein Backup vom Docker zu machen und es auf meinen Rechner gespielt. Vielleicht hat jemand ne gute Anleitung und wenn möglich nicht auf Englisch ;)

Re: Portainer

Verfasst: 12. Feb 2024 07:51
von warhook76
Meinst Du sowas?
https://tgraeber.de/docker-container-mi ... migrieren/

Da wird erklärt wie Du alles von Server A nach B bekommst. Mit Portainer und "zu Fuß".

Viel Erfolg

Gesendet von meinem A063 mit Tapatalk


Re: Portainer

Verfasst: 12. Feb 2024 10:52
von Snatsch
Hallo, das Problem ist das meine jetzige Installation noch nicht im Docker läuft, und ich sie erst da rein bringen muss.

Re: Portainer

Verfasst: 12. Feb 2024 12:20
von udo1toni
Das Ding ist: die "Standard Installation" von openHAB nutzt ganz grob drei Verzeichnisse, die für den Anwender relevante Daten enthalten, das ist
  • zum ersten der conf-Zweig (mit allen "alten" Konfigurationsdateien - openHAB selbst greift ausschließlich lesend auf diesen Zweig zu. Dateien werden eingelesen, sobald sich eine Datei ändert)
  • zum zweiten ist der userdata-Zweig wichtig (hier speichert openHAB alles, was über die UI erstellt wird, außerdem befinden sich dort die "übersetzten" Dateien aus dem conf-Zweig sowie die internen Persistence Daten)
  • und zum dritten gibt es das addons-Verzeichnis, in welchem man addons direkt in Form einer *.jar Datei ablegen kann. openHAB bindet diese Dateien unmittelbar ein, es ist quasi ein Verzeichnis wie der conf-Zweig, nur an anderer Stelle des Dateisystems.
Wenn Du einen openHAB Docker Container erzeugst, musst Du diese drei Verzeichnisse als Volumes definieren. Der Inhalt dieser Verzeichnisse findet sich auch 1:1 in einem Backup, welches mit openhab-cli erstellt wurde. Handelt es sich um eine full-Version, dann ist auch das Unterverzeichnis mit den Persistence-Daten enthalten, ansonsten fehlt es.

Um die bestehende Konfiguration zu übernehmen, musst Du also lediglich das Backup über ein zip-Tool öffnen und den Inhalt der drei genannten Verzeichnisse in die entsprechenden Volumes kopieren. Achte darauf, dass die Verzeichnisebenen exakt erhalten bleiben. Der Container sollte zu diesem Zeitpunkt nicht gestartet sein, das entspricht dann dem Restore-Vorgang in einer "klassischen" Installation, wo openHAB auch besser gestoppt ist.

Ist die Installation erst mal in Docker, musst Du nur noch die Volumes regelmäßig sichern, um ein vollständiges Backup zu erhalten.

Immer dran denken: openHAB verhält sich unter Docker weitgehend identisch, es gibt aber ein paar unvermeidbare Abweichungen, insbesondere wenn es um den direkten Zugriff auf Hardware geht (am Rechner angeschlossene USB-Sticks, GPIO, Host-Dateisystem, Bash-Scripte, Backup).
Und wenn Du von openHABian kommst, denke auch daran, dass das Docker Image ausschließlich openHAB enthält, kein Frontail, kein Samba (um mal die beiden wichtigsten Dinge zu nennen), wenn Du die entsprechende Funktion haben willst, musst Du zusätzliche Container einrichten und die entsprechenden Verlinkungen zwischen den Containern über Volumes sicherstellen. Es gibt aber hinsichtlich der Möglichkeiten keinerlei Einschränkungen gegenüber der Standard Version, es gibt nur Abweichungen, wie das erreicht werden kann. Auch Drittanbieter Software wie zigbee2mqtt, knxd, mosquitto usw. musst Du jeweils als separaten Container erstellen, nicht wie bei openHABian als Teil des Containers.

Re: Portainer

Verfasst: 12. Feb 2024 12:46
von Snatsch
Die 3 Ordner sind im Container angelegt nur komm ich in Winscb nicht auf die Container. Es steht dann immer Zugriff Verweigert. Auf meinem jetzigen System laufen Zigbee u.s.w. Muss ich das erst in den Backup Ordern löschen ?

Re: Portainer

Verfasst: 12. Feb 2024 13:39
von udo1toni
Ja :) die Sache mit den Berechtigungen ist halt... nicht ganz so simpel.
Mein Tipp umd zunächst mal überhaupt alles ans Laufen zu bekommen:Verschiebe die Daten per WinSCP auf den Docker Host (und dort einfach in das verzeichnis, auf dem Du Schreibzugriff hast - Dein Userverzeichnis).
Dann verbinde Dich per ssh auf den Docker Host und kopiere die Daten anschließend als root ins richtige Verzeichnis. Denke daran, die Hoast-Seite des Volumes zu verwenden, nicht die Container-Seite. Wechsele zum Anschluss noch in die Verzeichnis und ändere die Besitzrechte auf den User ab, dem die nicht gerade kopierten Dateien gehören - am besten schaust Du kurz vor dem Kopieren in den Ordner rein und notierst Dir User und Group der bestehenden Dateien. Wundere Dich nicht, wenn der User nicht openhab heißt, sondern vielleicht nur eine Zahl da steht - der User existiert im Container, aber nicht zwingend auf dem Host. Der User und die Group wird über eine Zahl definiert, diese Zahl wird auf Klarnamen gemappt. Entsprechend kann im Host System die Zahl auch zu einem ganz anderen User gehören..
Notwendige Befehle:

Code: Alles auswählen

ls -l                    // um bestehende user und groups zu sehen zu bekommen
chown 125 -R *           // alle Verzeichnisse und Dateien rekursiv der User ID 125 zuordnen
chgrp 875 -R *           // alle Verzeichnisse und Dateien rekursiv der Gruppen ID 875 zuordnen
chown openhab:users -R * // alle Verzeichnisse und Dateien rekursiv dem User openhab und der Gruppe users zuordnen
                         // (geht nur wenn beide auf einen Namen gemappt sind)
Die Befehle müssen mit erweiterten Rechten ausgeführt werden (also sudo voranstellen oder vorher root werden)

Re: Portainer

Verfasst: 12. Feb 2024 20:51
von Snatsch
Gott oh Gott klinkt kompliziert :shock: Hatte gestern mal ein Backup über den Befehl gemacht

Code: Alles auswählen

sudo mkdir -p /backup/volumes/
docker run --rm \
        -v /backup/volumes:/backup \
        -v  openhab_addons\openhab_conf\openhab_userdata:/data:ro \
        debian:stretch-slim bash -c "cd /data && /bin/tar -czvf /backup/openhab.tar.gz ."
und er hat mir die Datei hier rein gelegt
Screenshot (25).png
soll ich da auch die 3 Ordner rein legen ?
Screenshot (26).png

Re: Portainer

Verfasst: 13. Feb 2024 00:28
von udo1toni
Nein, ich glaube, wir reden aneinander vorbei...

Meine Annahme war, dass Du von einem normalen openHAB, welches direkt auf einem Raspberry Pi4 installiert ist, in einen Docker Container umziehen willst.

Dazu führst Du auf dem Pi den Befehl

Code: Alles auswählen

sudo openhab-cli backup
aus. Der Befehl fragt, ob Du sicher bist und erzeugt nach der Bestätigung eine zip-Datei. Dieses Archiv liegt anschließend im Ordner $OPENHAB_USERDATA/backups/ und trägt im Namen Datum und Uhrzeit. Diese Datei kopierst Du z.B. auf Deinen Desktop PC.

Anschließend erstellst Du das Docker System und startest auf dem Docker System Portainer.
Danach erstellst Du über Portainer einen openHAB Container.
Dieser Container benötigt drei Volumes, conf, userdata und addons.
Gewöhnlich werden die drei Verzeichnisse bei einem mit Portainer verwalteten System auf dem Docker Host im Verzeichnis /portainer/Files/AppData/Config/<containername> liegen. Du prüfst nun vom Docker Host aus, wie der User und die Gruppe dort heißen, z.B. mittels

Code: Alles auswählen

ls -l /portainer/Files/AppData/Config/<containername>/conf/
Der Container muss zu dem Zeitpunkt schon mal gestartet worden sein, damit die Volumes mit den Ausgangsdaten gefüllt sind.
Spätestens jetzt fährst Du den openHAB Container herunter (bzw. Du stoppst ihn)
Nun entpackst Du das zuvor gesicherte Archiv mit dem Backup des alten Systems. Direkt in dem Archiv befinden sich zwei Ordner, conf und userdata.
Den Inhalt des Ordners conf kopierst Du nach /portainer/Files/AppData/Config/<containername>/conf/, den Inhalt des Ordners userdata kopierst Du nach /portainer/Files/AppData/Config/<containername>/userdata. Anschließend korrigierst Du die Besitzverhältnisse mittels

Code: Alles auswählen

sudo chown -R openhab:openhab /portainer/Files/AppData/Config/<containername>/*
Wobei openhab:openhab mit dem zuvor ermittelten usernamen/Gruppennamen zu ersetzen ist. Sollten statt Klartext Namen nur Zahlen auftauchen, so gibst Du halt die Zahlen an, also z.B.

Code: Alles auswählen

sudo chown -R 12345:7890 /portainer/Files/AppData/Config/<containername>/*
(vergiss den Unsinn von oben... da hab ich was verwechselt...)
Die Besitzrechte korrekt zu setzen ist nicht weiter wild, aber essenziell für das Gelingen des Vorhabens.
Nachdem Du die Dateien kopiert und die Besitzrechte korrigiert hast, startest Du den Container und solltest nun all Deine Einstellungen im openHAB Docker Container vorfinden.

Ein, zwei Dinge noch am Rande: Zeitzone (für den Container) und Sprache müssen über den yaml Code gesetzt werden, der den Container beschreibt (ich hoffe mal, Du hast den Container in Portainer als Stack Template eingerichtet). Eventuell müssen diese Daten sogar doppelt gesetzt werden, für das GNU/Linux Image, auf dem der openHAB Container basiert, und für Java (Java_Extra_Args oder so ähnlich).
Der openHAB Container sollte unbedingt im Host-Netzwerkmode laufen, weil Avahi/ZeroConf sonst nicht funktioniert (das ist Teil der Autodiscovery). openHAB benötigt die Ports 8080, 8443 und 5007, für http, https und lsp. Diese Ports dürfen von anderen Containern nicht verwendet werden, zumindest nicht im host-Netz.

Wenn Du hingegen vom openHAB Docker Container ein Backup amchen willst, kopierst Du einfach den Inhalt des Pfades /portainer/Files/AppData/Config/<containername>/* und speicherst ihn, wo auch immer. Wenn der Container dann mal nicht funktionieren sollte, schreibst Du einfach die zuvor gesicherten Daten wieder zurück.
Im Idealfall definierst Du für das Backup einen Cron-Job und sicherst die Daten extern, also z.B. auf einer Freigabe eines anderen Rechners (das könnte auch der Raspberry Pi 3 sein)

Re: Portainer

Verfasst: 14. Feb 2024 20:44
von Snatsch
Hallo, und vielen Dank für deine Hilfe. Wollte es heute mal auf einer Test SSD machen aber hat irgendwie auch nicht geklappt :roll: Jetzt habe ich mein SSD mit der alten Konfiguration wieder rein gesteckt und erhalte diese Fehlermeldungen
Screenshot (27).png
in influxdb werden die daten aber richtig gespeichert. Habe versucht die Dateien aus dem rrd4J Ordner zu entfernen, habe aber wie immer keine Berechtigung dazu. Irgendwie ist der Wurm drinn :?

Re: Portainer

Verfasst: 14. Feb 2024 20:58
von udo1toni
Wir reden von einer normalen openHAB installation?
Führe bitte einmal

Code: Alles auswählen

sudo openhab-cli reset-ownership
aus.
openHAB sollte dabei im besten Fall gestoppt sein.