openHAB: Installation mit Docker Container auf Synology VM – Teil 3

Im dritten Teil der Reihe beschäftigen wir uns mit der Installation unseres openHAB Docker Containers und der Ersteinrichtung eben diesem. Als Virtualisierungsumgebung verwenden wir eine Synology Diskstation, auf welcher eine Linux VM mit Ubuntu läuft. Wer die Installation der VM, sowie von Linux verpasst hat, sollte sich vorab noch die beiden ersten Teile näher anschauen:

Wenn du direkt beim dritten Teil einsteigst und dich nicht durch die ersten beiden Artikel wühlen möchtest, folgende Vorkehrungen sind bislang getroffen worden:

  • Auf der Synology DS wurde der Virtual Machine Manager (VMM) als Applikation installiert.
  • Eine Linux VM mit 1vCPU sowie 2GB RAM wurde angelegt.
  • Als Linux Distribution haben wir auf „Ubuntu 20.04“ gesetzt.
  • Docker wurde als Package installiert.
  • Für besseren Schutz wurde der non-root User mit einem SSH Key ausgestattet. Login direkt via Root oder mittels Passwort wurden untersagt (optional).

 

NFS Share als Docker Volume

Jedes Mal, wenn man einen Container durch einen neuen ersetzt, werden alle sich darin befindlichen Daten verworfen. Und das kommt gar nicht so selten vor. So wird beispielsweise bei jedem openHAB Update der alte Container gelöscht und durch die aktualisierte Version ersetzt. Nun muss man allerdings gewährleisten, dass die Konfigurationsdaten erhalten bleiben und eben nicht gelöscht werden. Dazu kommen bei Docker die „Volumes“ zum Einsatz. Ein Volume ist dabei die Schnittstelle zwischen dem virtualisierten Container und der Host-Maschine und bietet dem Container persistenten Speicher. Jetzt wird es ein wenig komplexer, daher bitte besonders aufpassen:

Die von uns installierte virtuelle Maschine besitzt bereits ein Dateisystem. Theoretisch ist es also möglich, dem Docker Container einfach den Speicherplatz auf der VM selbst als Volume zur Verfügung zu stellen. Da wir als physischen Server eine Synology DS verwenden, welche ebenfalls ihr eigenes Dateisystem mitbringt, erstellen wir stattdessen auf der DiskStation ein NFS Share und binden dieses auf der Linux VM ein. Innerhalb dieses NFS Shares stellen wir dann die für die Docker Container benötigten Volumes bereit. Das hat den großen Vorteil, dass wir alle Daten gesammelt auf der Synology DS lagern und somit auch ganz einfach mittels HyperBackup sichern können. Wenn ihr es bevorzugt, die Volumes direkt auf der Linux VM bereitzustellen, könnt ihr die nachfolgenden Schritte überspringen.

 

NFS Share auf Synology DS erstellen

Falls ihr das Network File System (NFS) auf eurer Synology DS noch nicht aktiviert habt, müsst ihr es vorab in der Systemsteuerung erlauben.

Anschließend können wir bereits den Ordner erstellen. Dazu wechseln wir am Synology DSM in die Systemsteuerung, öffnen die „Freigebenden Ordner“ und klicken auf „Erstellen“.

Im neuen Fenster erstellen wir einen neuen Ordner mit dem Namen „docker_volumes“, deaktivieren den Papierkorb und lassen die restlichen Einstellungen auf den Standardeinstellungen.

Sobald der Ordner erfolgreich angelegt wurde, müssen wir nun abschließend noch die NFS Berechtigungen vergeben. Dafür bearbeiten wir den zuvor erstellten Ordner, wechseln in den Reiter „NFS-Berechtigungen“ und legen einen neuen Eintrag mit der IP Adresse unserer Linux-VM an.

 

 

Share in Linux VM mounten

Somit hätten wir das NFS Share auf der Synology DS erfolgreich erstellt. Damit wir es nun auch noch auf der Linux-VM verwenden können, müssen wir es mounten. Vorab müssen wir allerdings auf der VM noch ein zusätzliches Package installieren:

root@sw-linux01:/home/schweiger# sudo apt install -y nfs-common

Anschließend erstellen wir auf der VM einen Ordner, welcher als Mountpoint dient:

root@sw-linux01:/home/schweiger# mkdir /mnt/docker_volumes

Nun editieren wir mittels „nano /etc/fstab“ und fügen dort das NFS Share von der DiskStation hinzu:

Abschließend mounten wir das Share:

root@sw-linux01:/mnt# mount /mnt/docker_volumes/

Um auf Nummer sicher zu gehen, kann man beispielsweise jetzt auch noch einen Ordner in „docker_volumes“ erstellen und prüfen, ob dieser auch auf der Synology vorhanden ist. Wenn das der Fall ist, wurde das Share erfolgreich auf der VM eingebunden und wir können zum nächsten Schritt übergehen.

 

openHAB Container erstellen

Immer wenn es möglich ist, sollte man auch bei Docker Containern darauf achten, dass man sie mit einem Benutzer ausführt, der keine Root Rechte besitzt. Daher legen wir auch hier einen neuen openHAB User an und fügen ihn als Member zur Gruppe openHAB hinzu.

root@sw-linux01:/# sudo useradd -r -s /sbin/nologin openhab
root@sw-linux01:/# usermod -a -G openhab openhab

Mit dem Befehl „id openhab“ bekommen wir die jeweilige User und Group ID angezeigt, diese wird später noch benötigt.

root@sw-linux01:/mnt/docker_volumes# id openhab
uid=997(openhab) gid=997(openhab) groups=997(openhab)

Als nächstes werden die Verzeichnisse angelegt, in denen alle relevanten Files vom openHAB Container gespeichert werden. Dazu verwenden wir das zuvor gemountete NFS Share:

root@sw-linux01:/# cd /mnt/docker_volumes/
root@sw-linux01:/mnt/docker_volumes# mkdir openhab
root@sw-linux01:/mnt/docker_volumes# mkdir openhab/conf
root@sw-linux01:/mnt/docker_volumes# mkdir openhab/userdata
root@sw-linux01:/mnt/docker_volumes# mkdir openhab/addons
root@sw-linux01:/mnt/docker_volumes# chown -R openhab:openhab openhab/

Somit haben wir bereits alle nötigen Vorkehrungen getroffen, um das openHAB Image mit dem nächsten Befehl herunterzuladen und als Container auszuführen.

docker run \
        --name openhab \
        --net=host \
        -v /etc/localtime:/etc/localtime:ro \
        -v /etc/timezone:/etc/timezone:ro \
        -v /mnt/docker_volumes/openhab/conf:/openhab/conf \
        -v /mnt/docker_volumes/openhab/userdata:/openhab/userdata \
        -v /mnt/docker_volumes/openhab/addons:/openhab/addons \
        -d \
        -e USER_ID=997 \
        -e GROUP_ID=997 \
        -e CRYPTO_POLICY=unlimited \
        --restart=always \
        openhab/openhab:latest-debian

Achtet darauf, die Volume Mountpoints mit euren jeweiligen Pfaden zu ersetzen. Außerdem müssen die User, als auch die Group IDs entsprechend angepasst werden. Solltet ihr nicht den „latest“ Build verwenden wollen, könnt ihr euch den jeweiligen Tag direkt von Docker Hub holen. Alle Befehle welche hier ausgeführt wurden, können auch in der openHAB Dokumentation nachgelesen werden.

Nachdem das Image heruntergeladen und der Container gestartet wurde, könnt ihr euch bereits im Webinterface umsehen. Öffnet dazu einfach in einem Browser eurer Wahl die URL http://<Linux-VM-IP>:8080

 

Um auf der Shell nachvollziehen zu können, welche Container zum jetzigen Zeitpunkt ausgeführt werden, verwendet folgenden Befehl.

 

Somit sind wir bereits am Ende des dritten Teils angelangt und wir können uns in den nächsten Artikeln auf die Konfiguration von openHAB selbst konzentrieren.

You may also like...

Abonnieren
Benachrichtige mich bei
guest
2 Comments
Älteste
Neuste Meist bewertet
Inline Feedbacks
View all comments
Chris
Chris
2 Monate zuvor

Hi,
danke für deinen Beitrag. Hat mir bei meinem System, dass ähnlich aufgebaut ist sehr geholfen. Ich nutze allerdings docker-compose und portainer in der vmm.
Ich habe festgestellt, dass durch das intensive logging von openhab und anderen Komponenten ein ständiger schreibzugriff auf die HDDs erfolgt. Ist dir das auch aufgefallen?
Gruß

2
0
Hinterlass' doch deine Meinung zu diesem Artikelx