Portainer

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Benutzeravatar
Snatsch
Beiträge: 455
Registriert: 9. Jan 2021 22:55
Answers: 0

Re: Portainer

Beitrag von Snatsch »

Ja habe den Ordner über den Befehl

Code: Alles auswählen

sudo rm -r /var/lib/openhab/persistence/rrd4j/
geleert und es schein zu gehen nach einem Neustart
openhab4.3.1 auf Pi 5 8GB im Docker Portainer&Frontail /Grafana&InfluxDB und mosquitto auf Pi 3 in Docker Portainer/Pi 3 mit Docker zur Datensicherung / Pi 4 4GB Portainer & Deconz

Benutzeravatar
Snatsch
Beiträge: 455
Registriert: 9. Jan 2021 22:55
Answers: 0

Re: Portainer

Beitrag von Snatsch »

Nur das mit openhab in einem Docker laufen zu lassen möchte bei mir gar nicht funktionieren. Habe jetzt schon so viel ausprobiert aber bekomme es irgendwie nicht hin meine Dateien openhab conf./openhab userdata. und /obenhab adons in die neue Installation zu bekommen.
openhab4.3.1 auf Pi 5 8GB im Docker Portainer&Frontail /Grafana&InfluxDB und mosquitto auf Pi 3 in Docker Portainer/Pi 3 mit Docker zur Datensicherung / Pi 4 4GB Portainer & Deconz

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

Re: Portainer

Beitrag von udo1toni »

Es ist wirklich einfach :) aber eine Menge Text (unvermeidbar, wenn man an alles denken möchte...)

Schritt für Schritt, from the very beginning (nicht zwingend für Dich...):
  1. Den Pi Imager herunterladen.
  2. Raspberry Pi OS lite (Pi4 mit 4 oder 8 GByte -> 64-Bit Version, ansonsten eher 32-Bit) auf die Micro-SD-Karte flashen. Alternativ geht natürlich auch eine per USB angeschlossene SSD. Dabei die Einstellungen bearbeiten:
    1. Hostname z.B. docker
    2. Benutzername und Passwort nach Belieben
    3. Wifi nur wenn unbedingt notwendig
    4. Sprache und Zeitzone passend
    5. Bei Diensten SSH aktivieren (ideal wäre, wenn Du einen Pubic Key bereitliegen hättest, Passwort geht aber auch)
  3. Den Pi mit Datenträger und LAN verbinden.
  4. Sowie wahlweise für die Erstinbetriebnahme mit Monitor und Tastatur. Maus wird keinesfalls gebraucht, lite hat nur eine Shell für die Anmeldung und mehr ist nur unnötiger Ballast (vergeudete Rechenzeit).
  5. Den Pi mit dem Netzteil verbinden und einschalten.
  6. Wenn der Pi gestartet ist, mit dem in Punkt 2.2 festgelegten User und Passwort anmelden.
  7. mit df -h davon überzeugen, dass das Dateisystem den gesamten Datenträger umfasst. Ist das nicht der Fall, kannst Du über sudo raspi-config und dann Advanced Options -> Expand Filesystem die zweite Partition auf den gesamten Datenträger ausweiten, danach wird der Pi neu starten
  8. sudo apt update && sudo apt -y full-upgrade ausführen, um auf den letzten Stand zu kommen
  9. mit ip a | grep eth0 die IP-Adresse des Pi ermitteln.
  10. Am Desktop PC PuTTY starten und per ssh auf den Pi verbinden. Funktioniert das, den Pi runterfahren, Monitor und Tastatur trennen und Pi neu starten und wieder per PuTTY verbinden.
Damit läuft der Pi schon mal und ist über ssh erreichbar, womit alle weiteren Befehle über Copy&Paste verwendet werden können. Du kannst auch direkt mit ssh starten, musst dazu aber die IP-Adresse des Pi z.B. über Deinen Router ermitteln.
Nun folgt die Docker Engine per apt repository:

Für die 64-Bit Version dieser Anleitung folgen: https://docs.docker.com/engine/install/ ... repository für 32-Bit ist es diese Anleitung: https://docs.docker.com/engine/install/ ... repository
Ich gehe hier mal von 64 Bit aus:

Code: Alles auswählen

# Add Docker's official GPG key:
# sudo apt update
sudo apt -y install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
Achtung: beim Letzten Schritt (Add the repository...) handelt es sich um zwei (!) Zeilen, nicht um fünf Zeilen. Alle Zeilen ab echo \ bis sudo tee ... /dev/null sind eine Zeile, die nur umgebrochen wurde. das \ am Ende bewirkt, dass die Bash die Zeilen wieder zu einer Zeile zusammenfügt.
Diese eine Zeile muss also als Ganzes kopiert und ausgeführt werden, bevor die "zweite" Zeile dran kommt.
Das erste apt update kann entfallen, das haben wir ja schon vor fünf Minuten gemacht :)
Nun ist das System vorbereitet, Docker zu installieren.
mit

Code: Alles auswählen

sudo apt -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
landet Docker auf dem System.
Damit der aktuelle User Docker verwenden darf, schiebst Du noch ein paar Befehle nach:

Code: Alles auswählen

sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker
und schlussendlich packst Du portainer auf den neuen Docker Host. Es bietet sich an, das per Script zu machen, denn Portainer ist der einzige Container, den Portainer nicht aktualisieren kann, das musst Du also immer wieder manuell machen. Also folgendes Script anlegen:

Code: Alles auswählen

#! /bin/bash
docker stop portainer
docker rm portainer
docker pull portainer/portainer-ce:latest
docker run -d -p 8000:8000 -p 9443:9443 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest
Das Script speicherst Du z.B. als upgrade-portainer.sh mit Deinem normalen User ab und setzt anschließend mit

Code: Alles auswählen

chmod 755 upgrade-portainer.sh
das executable Bit.
Zum Abschluss kannst Du nun das Script ausführen:

Code: Alles auswählen

./upgrade-portainer.sh
Der Verweis auf ./ ist notwendig, weil der eigene Ordner nicht Bestandteil des PATH-Exports ist. Wahlweise kannst Du das Script auch in den Ordner /usr/local/bin/ verschieben, das wäre ein möglicher Ablageort für ausführbare Scripte.

Nachdem das Script erfolgreich ausgeführt wurde, solltest Du Portainer über https://ip.des.docker.host:9443/ erreichen.
Bei der Erstanmeldung fordert Portainer das Erstellen eines Administrationsusers und eines Passworts. Man kann in Portainer auch mehrere User anlegen, meist ist im Heimbereich aber eh nur einer "Chef" :) wichtig ist aber, die Zugangsdaten sicher aufzubewahren, sonst muss man später mühsam das Passwort resetten...
In Portainer richtet man zunächst ein Environment ein, da das System standalone läuft, ist dies die richtige Methode. Die Verbindung sollte dann lokal über das Socket hergestellt werden, welches auch im Script oben gesetzt wurde. Anschließend verbindet man sich mit dem Environment.
Und damit Links in der Oberfläche funktionieren, muss noch ein weiterer Eintrag gesetzt werden, und zwar unter Environment -> Name des Environment sollte im Feld Public IP die IP oder alternativ der fqdn des Docker Host eingetragen werden.

Nun geht es daran, die verschiedenen Container einzurichten. Meine Empfehlung: ein Custom Template definieren. Auf der linken Seite auf App Templates -> Custom Templates -> Add custom Template dann z.B.
Title: openhab4 (es sind nur Kleinbuchstaben und Ziffern erlaubt, keine Leerzeichen, keine Sonderzeichen, keine Umlaute)
Description: openHAB 4 latest stable
Note: Dies ist die aktuelle stable Version
Icon URL: https://www.openhab.org/openhab-logo-square.png
Platform: Linux
Type: Standalone
Und schließlich im Web Editor:

Code: Alles auswählen

version: '2.2'

services:
  openhab:
    image: "openhab/openhab:latest"
    restart: always
    network_mode: bridge
    ports: 
      - 8080:8080
      - 8443:8443
    volumes:
      - "/etc/localtime:/etc/localtime:ro"
      - "/etc/timezone:/etc/timezone:ro"
      - "/portainer/Files/AppData/Config/openHAB4/openhab_addons:/openhab/addons"
      - "/portainer/Files/AppData/Config/openHAB4/openhab_conf:/openhab/conf"
      - "/portainer/Files/AppData/Config/openHAB4/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"
Zum Schluss wird das Ganze noch durch einen Klick auf die entsprechende Schaltfläche unten links gesichert.
Zurück in der Liste der Templates erstellen wird einen Container, indem wir auf das Template klicken (nicht auf eine der Schaltflächen Edit oder Delete).
Anschließend wählen wir Action -> Deploy the Stack
Und nach einer Weile sollten wir einen laufenden Container haben, was wir in der Liste der Container (links Containers anklicken) auch sehen können. Auf der rechten Seite sollte es passende Links geben, um die UI für openHAB aufzurufen. dabei ist zu beachten, dass der Link für 8443 leider nur http als Protokoll einfügt, das muss man händisch auf https ändern.
Funktioniert der Zugriff so weit, geht es an den Datententransfer der Konfiguration.
Dazu beenden wir den Container. über Portainer (Klick auf den Namen in der Container-Liste, STOP Knopf drücken.)

Nun geht's weiter in PuTTY, allerdings brauchen wir auch das Backup, am einfachsten kopieren wir das mittels scp von einem anderen Rechner, auf dem auch GNU/Linux läuft (und wo wir die Datei vorher ebenfalls per scp abgelegt haben), alternativ geht das aber auch per WinSCP vom Windows Desktop aus, auch ein USB-Stick wäre eine Option, aber dann muss man extra wieder zum Pi hinlaufen...
Gegeben, dass die Datei auf dem Rechner "pi3" liegt, und zwar im home-Verzeichnis des Users admin, und gegeben, dass die Datei openhab-backup-24_02_14-20_00_00.zip heißt, lautet der scp Befehl (auszuführen vom Docker Host aus) dann

Code: Alles auswählen

scp admin@pi3:~/openhab-backup-24_02_14-20_00_00.zip ~/
Danach liegt das Backup auf dem Docker Host im home-Verzeichnis des angemeldeten Users.
Nun müssen wir das zip auspacken, aber leider fehlt uns das Programm unzip, also installieren:

Code: Alles auswählen

sudo apt install unzip
und anschließend

Code: Alles auswählen

unzip openhab-backup-24_02_14-20_00_00.zip
Nun verpflanzen wir die Daten:

Code: Alles auswählen

sudo cp conf/* /portainer/Files/AppData/Config/openHAB4/openhab_conf/ -r
sudo cp userdata/jsondb/* /portainer/Files/AppData/Config/openHAB4/openhab_userdata/jsondb/ -r
sudo chown -R 998:997 /portainer/Files/AppData/Config/openHAB4/*
Bei Bedarf können auch noch weitere Teile aus dem userdata Zweig kopiert werden, jsondb enthält aber alles, was über die UI konfiguriert wurde.

Was auf diese Weise NICHT mit kommt, sind aber meines Wissens die installierten Addons, die muss man halt händisch nachinstallieren.

Ich habe das Ganze gerade eben bei mir durchgespielt - allerdings auf meinem Docker Host, welcher in einem LXC läuft, das sollte aber grundsätzlich keinen Unterschied machen.
Wenn der Container zur Zufriedenheit läuft (vor allem sind die gewünschten Daten drin) gibt es noch ein paar Dinge, die man nachträglich erledigen muss, insbesondere sind in openhab_conf/services/runtime.cfg Links auf Frontail und die openHABian Hilfe vorhanden, die dort nichts (mehr) zu suchen haben. Diese Einträge sollte man also herauslöschen.
Für den Moment kann man das vom Docker Host aus erledigen, es gibt aber wesentlich elegantere Möglichkeiten, wenn man weitere Container einrichtet, welche dann z.B. die entsprechenden Verzeichnisse per Samba zur Verfügung stellen. Eine weitere Option ist evtl. der Code-Server. Code-Server ist ein VS Code Editor, der aber im Browser läuft. Dabei ist die Umsetzung so gut, dass man als Anwender schon mal vergisst, dass man sich in einem Browser Fenster befindet. Ich bin mir nicht zu 100 % sicher, es kann sein, dass man für das openHAB Plugin ein wenig in die Trickkiste greifen muss, weil es nicht in der Liste installierbarer Addons auftaucht, ich meine aber, dass es da eine Möglichkeit gibt, das Plugin manuell zu installieren.
Ein weiterer interessanter Container ist sicherlich Frontail, andere Container kämen dann evtl. noch abhängig von der verwendeten Hardware dazu, z.B. mqtt, zigbee2mqtt, we-connect2mqtt...

Ich bin allerdings kein Experte, was openHAB auf Docker betrifft, da gibt es hier andere Anwender. :)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
Snatsch
Beiträge: 455
Registriert: 9. Jan 2021 22:55
Answers: 0

Re: Portainer

Beitrag von Snatsch »

Oh vielen Dank 😊 und das mitten in der Nacht 😳 werde mich am Montag drüber machen ( da hab ich frei 😊) hilft bestimmt den einen oder anderen auch.
openhab4.3.1 auf Pi 5 8GB im Docker Portainer&Frontail /Grafana&InfluxDB und mosquitto auf Pi 3 in Docker Portainer/Pi 3 mit Docker zur Datensicherung / Pi 4 4GB Portainer & Deconz

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

Re: Portainer

Beitrag von udo1toni »

Deswegen auch so ausführlich :) Du hast ja schon Portainer erfolgreich auf dem alten Pi in Betrieb, aber so ist es dann mal in einem Posting dokumentiert...
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
Snatsch
Beiträge: 455
Registriert: 9. Jan 2021 22:55
Answers: 0

Re: Portainer

Beitrag von Snatsch »

Hallo bin jetzt soweit gekommen das der Container läuft. Jetzt liegt mein Backup auf meinem Windows Pc und wenn ich es per WinSCP in das Home Verzeichnis spielen möchte kommt wie immer Zugriff verweigert :?

Hat sich erledigt muss sie in den Admin Ordner verschieben
openhab4.3.1 auf Pi 5 8GB im Docker Portainer&Frontail /Grafana&InfluxDB und mosquitto auf Pi 3 in Docker Portainer/Pi 3 mit Docker zur Datensicherung / Pi 4 4GB Portainer & Deconz

Benutzeravatar
Snatsch
Beiträge: 455
Registriert: 9. Jan 2021 22:55
Answers: 0

Re: Portainer

Beitrag von Snatsch »

so jetzt läuft es endlich ;) jetzt muss ich nur noch irgendwie Frontail und meinen deconz Stick hinbekommen
openhab4.3.1 auf Pi 5 8GB im Docker Portainer&Frontail /Grafana&InfluxDB und mosquitto auf Pi 3 in Docker Portainer/Pi 3 mit Docker zur Datensicherung / Pi 4 4GB Portainer & Deconz

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

Re: Portainer

Beitrag von udo1toni »

Prima!
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
Snatsch
Beiträge: 455
Registriert: 9. Jan 2021 22:55
Answers: 0

Re: Portainer

Beitrag von Snatsch »

Screenshot (29).png
Hallo, also meinen deconz Stick hab ich zum laufen gebracht. Leider bekomme ich frontail nicht zu laufen. Wäre über jede Hilfe dankbar
Screenshot (28).png
Seite nicht Erreichbar :(
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
openhab4.3.1 auf Pi 5 8GB im Docker Portainer&Frontail /Grafana&InfluxDB und mosquitto auf Pi 3 in Docker Portainer/Pi 3 mit Docker zur Datensicherung / Pi 4 4GB Portainer & Deconz

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

Re: Portainer

Beitrag von udo1toni »

Also, wenn Du die Einstellungen wie von mir beschrieben verwendest, musst Du Frontail passend einrichten:

Code: Alles auswählen

version: '2.2'

services:
  frontail-openhab:
    image: "welteki/frontail-openhab:latest"
    restart: unless-stopped
    network_mode: bridge

    ports:
      - "9001:9001"
    volumes:
      - "/portainer/Files/AppData/Config/openHAB4/openhab_userdata/logs:/openhab/userdata/logs:ro"
Das wichtigste ist hier natürlich das Verzeichnis. Du musst das korrekte Volume verwenden, es handelt sich um das Verzeichnis logs im Unterverzeichnis von openhab_userdata (das ist das selbe Verzeichnis, welches auch im openHAB Container als Volume verlinkt ist). Mit obigem Script habe ich den Container direkt aufrufen können (hatte ich tatsächlich bisher noch nie ausprobiert...)
Allerdings brauchte ich mehrere Anläufe, weil just in dem Moment der Docker Hub kurz nicht erreichbar war. Nach zwei Minuten ging es aber (und nein, ausnahmsweise war es mal nicht meine Internetverbindung, die war zu dem Zeitpunkt gerade sehr stabil).
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten