Hallo zusammen,
mein aktuelles Openhab System ist etwas in die Jahre gekommen Version 3.2 und möchte mein System gerne ein Update verpassen.
Das System ist auf einen Nuc von einem Bekannten installiert worden, leider hat dieses im Moment keine Möglichkeit mir beim Update zu helfen. Daher würde ich gerne das System mit einem zweiten Nuc neu aufsetzen und alles testen und anschließend Item rules und things umziehen.
Dafür benötige ich von euch die Hilfe was generell alles zu tun ist um mein System sicher zu machen und in Zukunft leicht ein Update aufzuspielen.
Ist der Einsatz von Docker sinnvoll oder nicht?
Falls ja welches OS sollte ich dann wählen?
Folgendes sollte das System können:
- Fernzugriff von Außen mit der APP
- Sicherung des aktuellen Systems erstellen (USB-Stick)
Vielen Dank für die Hilfe worauf ich achten sollte oder woran ich denken sollte
Neuinstallation Openhab 5
- udo1toni
- Beiträge: 15673
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Neuinstallation Openhab 5
tl;dr: Debian Trixie mit Docker ist eine gute Option.
Langversion: Ein ganz klares "es kommt drauf an"
Die verschiedenen Optionen:
Betriebssystem: Du bist frei in der Entscheidung, aber es gibt immer Dinge zu bedenken.
Windows: kennst Du sicher, ist easy aufzusetzen, aber muss ständig gewartet werden (mit Zugriff von außen in besonderem Maße). Außerdem ist Microsoft bestrebt, den Anwender zu entrechten, Telemetrie lässt sich nicht vollständig unterbinden (es sei denn, man kappt das Internet, was aber nicht so erwünscht sein dürfte). dazu kommt noch, dass, egal wie sparsam Windows sein mag, es unheimliche Verschwendung ist, auf einem Server eine grafische Oberfläche vorzuhalten.
GNU/Linux: ist anspruchsvoller, aber heutzutage auch keine Raketenwissenschaft mehr. Je größer die Wünsche, umso mehr muss man sich einarbeiten, irgendwas ist ja immer.
FreeBSD: ist ähnlich wie GNU/Linux, aber wesentlich kleinere Nutzergemeinde, d.h. im Zweifel auch weniger Hilfe bei Problemen.
MacOS: auf dem Nuc (legal) eher keine Option.
Betriebsart (Nativ/Container/VM):
Nativ ist sehr einfach umzusetzen, 64-Bit OS aufspielen, Java 21 installieren, openHAB installieren, fertig. Dafür hast Du allerdings anschließend größere Aufgaben, z.B. Datensicherung.
Container: Du benötigst eine Zwischenschicht. Docker ist sehr beliebt, nicht zuletzt, weil man hier massig "fertige" Softwarestacks bekommt. Also Host-OS aufspielen, Docker aufsetzen, openHAB als Docker Container aufspielen, Zusatzkomponenten ebenfalls als Docker Container einrichten. Das kann sehr komfortabel sein, allerdings benötigst Du zwingend Kenntnisse über Docker, je mehr, umso besser, es ist auf jeden Fall nicht ausreichend, den Namen mal gehört zu haben
Auch hier stellt sich die Frage nach der Datensicherung, aber durch die strikte Trennung von Nutzdaten und Softwarestack musst Du zumindest nicht lange überlegen, was Du sicherst, stattdessen musst Du "einfach" alle Volumes sichern. Das kann auch ein Docker Container erledigen... aber wieder ein zusätzliches Tool, was zu erlernen ist.
VM: Ressourcenhungrig (im Vergleich zum Container), dafür aber fast 100 % Trennung von Host und VM, beim Container wird das Host System im Userspace genutzt. Je nach weiteren Aufgaben kann es dennoch sinnvoll sein, eine vollständige Virtualisierung aufzubauen. Auch hier gilt, die Virtualisierungsumgebung muss zusätzlich erlernt werden.
Meine Empfehlung (Zeit-Kosten/Nutzen...) wäre ein Debian GNU/Linux mit Docker. Als Verwaltung für Docker kann ich Portainer empfehlen, ebenfalls als Docker Container. Wenn Du im Nuc mehrere SSDs gleicher Größe hast, könnte es sinnvoll sein, die Platten als Software RAID1 zu betreiben und darauf LVM einzurichten. LVM steht für Logical Volume Management, damit kannst Du beliebig viele Partitionen erstellen. Besonders daran: Du kannst Snapshots erzeugen, um dann vom Snapshot ein Backup anfertigen zu können. Anschließend kann der Snapshot dann wieder gelöscht werden. Das heißt, Du musst für Backups das System nicht anhalten. Auch Größenänderungen von Partitionen sind einfacher zu realisieren, weil eine LVM Partition nicht zwingend "an einem Stück" sein muss, das heißt, bei Änderungen an der Partitionsgröße müssen andere Partitionen nicht verschoben werden.
Docker auf Debian ist leicht einzurichten, weil es dafür vorbereitete Scripte gibt.
Debian als Grundlage ist meine Wahl, weil ich Debian ganz gut kenne
es kommt nicht mit den neuesten Paketen, sondern verwendet Software, die "gut abgehangen" ist. Stabilität geht klar über maximale Geschwindigkeit und modernstes Design. Grundsätzlich kann man aber auch mit jeder anderen Distribution glücklich werden, unabhängig davon, ob man nun Docker nutzt oder nicht, einzige Bedingung ist Java21 in der 64-Bit-Version, das OS muss also ebenfalls 64 Bit sein und jung genug, dass Java21 zur Verfügung steht (das ist bei Debian "Trixie" der Fall).
Eine andere Option steht in meiner Signatur, das wäre Proxmox VE (Virtual Environment). Läuft auch auf einem Nuc prima. Für openHAB braucht es dabei keine "echte" VM, es reicht völlig einen LXC (C=Container) zu verwenden. Der Unterschied zu Docker: bei LXC wird bis auf den Kernel alles im Container mit installiert, als Kernel wird der vom Hostsystem verwendet. Für den Administrator sieht ein LXC so aus wie ein "normales" System, von ganz wenigen Punkten abgesehen, Du kannst Dich normal an der Shell anmelden und diese verhält sich so wie gewohnt. Bei Docker Containern kommt es sehr darauf an, wie der Container aufgebaut ist. Ein weiterer Punkt bei Proxmox VE ist ZFS als Dateisystem. ZFS bringt Snapshots mit, aber anders als bei LVM muss ein Snapshot nicht so schnell wie möglich wieder gelöscht werden, ZFS verwendet Vektoren um die veränderten Daten einzubinden. Das funktioniert so gut, dass man mit einfachen Routinen Autosnapshots erstellen kann und dann jederzeit entweder das gesamte Dataset (die "Partition") zu einen Zeitpunkt x zurückrollen kann, oder alternativ beliebig Dateien aus diesem Zeitpunkt herauskopieren kann, ungemein praktisch, um Konfigurationspatzer einfach ungeschehen zu machen, ohne andere Dinge zu verlieren.
Hat man noch ein zweites System, welches mit ZFS umgehen kann, gibt es gar die Möglichkeit, die Snapshots automatisch auf dieses Zweitsystem zu kopieren, so dass selbst bei einem Hardwarecrash die Daten nicht verloren sind. Natürlich sollten die Systeme nicht allzu dicht beieinander stehen, damit ein Ausfall möglichst nicht beide Systeme auf einen Schlag vernichten kann
Nur für openHAB alleine ist das eher Overkill, aber vielleicht fallen Dir ja noch ein paar andere Dinge ein, die Du gerne haben möchtest.
Tatsächlich kann man aber sehr viel auch mit Docker erschlagen, selbst die Replikation der Daten wäre (auf andere Weise) möglich.
Bei der Sicherung auf ein externes Medium kannst Du auch von Docker profitieren, weil, wie erwähnt, die Daten sehr strikt von der Software getrennt gehalten werden, Du musst also lediglich die jeweiligen Volumes sichern, niemals den Container als solches. Wenn das System crasht, erstellst Du den Container einfach neu und spielst die Volumes wieder ein, danach geht es an der Stelle weiter, an der das System vor dem Crash war.
Sorry für viel Text und kein klares "Mach es so und so!".
Die wichtigsten Fragen für eine Einschätzung (aus meiner Sicht) hast Du im Ausgangsposting nicht direkt beantwortet, das wäre zum einen Dein Kenntnisstand, also wie gut kennst Du Dich mit PC und OS aus, zum zweiten wie lernwillig bist Du (das kann schon ein ziemlicher Berg werden...) und nicht zuletzt das ungefähre Setup (NUC ist zu unspezifisch, wieviel RAM, wie groß ist der verbaute Langzeitspeicher, HD,SSD, NVMe), auch was die in openHAB eingesetzten Komponenten betrifft, also was braucht es drum herum noch (Datenbank, MQTT Broker, Zwave oder ZigBee Anbindung usw.)
Langversion: Ein ganz klares "es kommt drauf an"
Die verschiedenen Optionen:
Betriebssystem: Du bist frei in der Entscheidung, aber es gibt immer Dinge zu bedenken.
Windows: kennst Du sicher, ist easy aufzusetzen, aber muss ständig gewartet werden (mit Zugriff von außen in besonderem Maße). Außerdem ist Microsoft bestrebt, den Anwender zu entrechten, Telemetrie lässt sich nicht vollständig unterbinden (es sei denn, man kappt das Internet, was aber nicht so erwünscht sein dürfte). dazu kommt noch, dass, egal wie sparsam Windows sein mag, es unheimliche Verschwendung ist, auf einem Server eine grafische Oberfläche vorzuhalten.
GNU/Linux: ist anspruchsvoller, aber heutzutage auch keine Raketenwissenschaft mehr. Je größer die Wünsche, umso mehr muss man sich einarbeiten, irgendwas ist ja immer.
FreeBSD: ist ähnlich wie GNU/Linux, aber wesentlich kleinere Nutzergemeinde, d.h. im Zweifel auch weniger Hilfe bei Problemen.
MacOS: auf dem Nuc (legal) eher keine Option.
Betriebsart (Nativ/Container/VM):
Nativ ist sehr einfach umzusetzen, 64-Bit OS aufspielen, Java 21 installieren, openHAB installieren, fertig. Dafür hast Du allerdings anschließend größere Aufgaben, z.B. Datensicherung.
Container: Du benötigst eine Zwischenschicht. Docker ist sehr beliebt, nicht zuletzt, weil man hier massig "fertige" Softwarestacks bekommt. Also Host-OS aufspielen, Docker aufsetzen, openHAB als Docker Container aufspielen, Zusatzkomponenten ebenfalls als Docker Container einrichten. Das kann sehr komfortabel sein, allerdings benötigst Du zwingend Kenntnisse über Docker, je mehr, umso besser, es ist auf jeden Fall nicht ausreichend, den Namen mal gehört zu haben
VM: Ressourcenhungrig (im Vergleich zum Container), dafür aber fast 100 % Trennung von Host und VM, beim Container wird das Host System im Userspace genutzt. Je nach weiteren Aufgaben kann es dennoch sinnvoll sein, eine vollständige Virtualisierung aufzubauen. Auch hier gilt, die Virtualisierungsumgebung muss zusätzlich erlernt werden.
Meine Empfehlung (Zeit-Kosten/Nutzen...) wäre ein Debian GNU/Linux mit Docker. Als Verwaltung für Docker kann ich Portainer empfehlen, ebenfalls als Docker Container. Wenn Du im Nuc mehrere SSDs gleicher Größe hast, könnte es sinnvoll sein, die Platten als Software RAID1 zu betreiben und darauf LVM einzurichten. LVM steht für Logical Volume Management, damit kannst Du beliebig viele Partitionen erstellen. Besonders daran: Du kannst Snapshots erzeugen, um dann vom Snapshot ein Backup anfertigen zu können. Anschließend kann der Snapshot dann wieder gelöscht werden. Das heißt, Du musst für Backups das System nicht anhalten. Auch Größenänderungen von Partitionen sind einfacher zu realisieren, weil eine LVM Partition nicht zwingend "an einem Stück" sein muss, das heißt, bei Änderungen an der Partitionsgröße müssen andere Partitionen nicht verschoben werden.
Docker auf Debian ist leicht einzurichten, weil es dafür vorbereitete Scripte gibt.
Debian als Grundlage ist meine Wahl, weil ich Debian ganz gut kenne
Eine andere Option steht in meiner Signatur, das wäre Proxmox VE (Virtual Environment). Läuft auch auf einem Nuc prima. Für openHAB braucht es dabei keine "echte" VM, es reicht völlig einen LXC (C=Container) zu verwenden. Der Unterschied zu Docker: bei LXC wird bis auf den Kernel alles im Container mit installiert, als Kernel wird der vom Hostsystem verwendet. Für den Administrator sieht ein LXC so aus wie ein "normales" System, von ganz wenigen Punkten abgesehen, Du kannst Dich normal an der Shell anmelden und diese verhält sich so wie gewohnt. Bei Docker Containern kommt es sehr darauf an, wie der Container aufgebaut ist. Ein weiterer Punkt bei Proxmox VE ist ZFS als Dateisystem. ZFS bringt Snapshots mit, aber anders als bei LVM muss ein Snapshot nicht so schnell wie möglich wieder gelöscht werden, ZFS verwendet Vektoren um die veränderten Daten einzubinden. Das funktioniert so gut, dass man mit einfachen Routinen Autosnapshots erstellen kann und dann jederzeit entweder das gesamte Dataset (die "Partition") zu einen Zeitpunkt x zurückrollen kann, oder alternativ beliebig Dateien aus diesem Zeitpunkt herauskopieren kann, ungemein praktisch, um Konfigurationspatzer einfach ungeschehen zu machen, ohne andere Dinge zu verlieren.
Hat man noch ein zweites System, welches mit ZFS umgehen kann, gibt es gar die Möglichkeit, die Snapshots automatisch auf dieses Zweitsystem zu kopieren, so dass selbst bei einem Hardwarecrash die Daten nicht verloren sind. Natürlich sollten die Systeme nicht allzu dicht beieinander stehen, damit ein Ausfall möglichst nicht beide Systeme auf einen Schlag vernichten kann
Nur für openHAB alleine ist das eher Overkill, aber vielleicht fallen Dir ja noch ein paar andere Dinge ein, die Du gerne haben möchtest.
Tatsächlich kann man aber sehr viel auch mit Docker erschlagen, selbst die Replikation der Daten wäre (auf andere Weise) möglich.
Bei der Sicherung auf ein externes Medium kannst Du auch von Docker profitieren, weil, wie erwähnt, die Daten sehr strikt von der Software getrennt gehalten werden, Du musst also lediglich die jeweiligen Volumes sichern, niemals den Container als solches. Wenn das System crasht, erstellst Du den Container einfach neu und spielst die Volumes wieder ein, danach geht es an der Stelle weiter, an der das System vor dem Crash war.
Sorry für viel Text und kein klares "Mach es so und so!".
Die wichtigsten Fragen für eine Einschätzung (aus meiner Sicht) hast Du im Ausgangsposting nicht direkt beantwortet, das wäre zum einen Dein Kenntnisstand, also wie gut kennst Du Dich mit PC und OS aus, zum zweiten wie lernwillig bist Du (das kann schon ein ziemlicher Berg werden...) und nicht zuletzt das ungefähre Setup (NUC ist zu unspezifisch, wieviel RAM, wie groß ist der verbaute Langzeitspeicher, HD,SSD, NVMe), auch was die in openHAB eingesetzten Komponenten betrifft, also was braucht es drum herum noch (Datenbank, MQTT Broker, Zwave oder ZigBee Anbindung usw.)
openHAB5.1.3 stable in einem Debian-Container (trixie, OpenJDK 21 headless runtime - LXC, 4 Kerne, 3 GByte RAM)
Hostsystem Proxmox VE 9.1.6 - AMD Ryzen 5 3600 6 Kerne, 12 Threads - 64 GByte RAM - ZFS Pools: Raid Z1, 3 x 20 TB HDD -> 40 TByte und Raid Z0-Mirrored 4 x 1 TByte NVMe -> 2 TByte
Hostsystem Proxmox VE 9.1.6 - AMD Ryzen 5 3600 6 Kerne, 12 Threads - 64 GByte RAM - ZFS Pools: Raid Z1, 3 x 20 TB HDD -> 40 TByte und Raid Z0-Mirrored 4 x 1 TByte NVMe -> 2 TByte
-
Boby123
- Beiträge: 10
- Registriert: 8. Mai 2019 17:12
Re: Neuinstallation Openhab 5
Okay vielen Dank für die Ausführung, dann werde ich mich mit dem Thema Debian beschäftigten.
Muss ich mein System zusätzlich gegen Außen absichern, der Zugriff sollte über VPN erfolgen?
Gruß
Christoph
Muss ich mein System zusätzlich gegen Außen absichern, der Zugriff sollte über VPN erfolgen?
Gruß
Christoph
- udo1toni
- Beiträge: 15673
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Neuinstallation Openhab 5
Es gibt grundsätzlich den Zugriff über myopenhab.org. Das läuft so, dass man sich über myopenhab.org anmeldet, das eigene System kommuniziert ebenfalls mit myopenhab.org und dann hat man die eigene uuid, um den Zugriff zu steuern (Achtung! gefährliches Halbwissen meinerseits, da ich das so nicht nutze).
Ansonsten ist es auch kein Problem, sich über ein VPN ins eigene LAN zu verbinden (z.B. Wireguard). Da die Kommunikation hier (bei korrekter Konfiguration) mit starker Verschlüsselung end2end läuft, braucht es keine weitere Sicherheitsmaßnahmen.
Eine (unsichere) Variante wäre, den Server direkt verfügbar zu machen, da sollte man unbedingt einen Reverse Proxy vorschalten, der eine zusätzliche Authentifizierung erfordert und die Kommunikation absichert. Da jetty nicht gehärtet ist, ist diese Variante (trotz vorgeschaltetem Reverse Proxy) sicher nicht empfehlenswert.
Ich habe hier noch eine "alte" Bastellösung (neben Wireguard), und zwar ein Zugang über ssh. Allerdings ist der SSH Server extra so konfiguriert, dass er ausschließlich mit Private/Public key Verfahren für die Authentifizierung arbeitet, Passworte sind verboten. In diesem Fall öffnet man einen Tunnel über einen lokalen Port, der dann im LAN auf einen bestimmten Port an eine bestimmte IP andockt - das ist vergleichsweise umständlich
aber auch nur als "Backdoor" bei Problemen gedacht (hat mir aber schon manches Mal geholfen, bevor ich Wireguard hatte, und hilft mir immer noch, wenn ich von meinem Arbeitsplatz aus auf mein Heimnetz zugreifen will, denn dort kann ich keinen Wireguard Client starten...)
Ansonsten ist es auch kein Problem, sich über ein VPN ins eigene LAN zu verbinden (z.B. Wireguard). Da die Kommunikation hier (bei korrekter Konfiguration) mit starker Verschlüsselung end2end läuft, braucht es keine weitere Sicherheitsmaßnahmen.
Eine (unsichere) Variante wäre, den Server direkt verfügbar zu machen, da sollte man unbedingt einen Reverse Proxy vorschalten, der eine zusätzliche Authentifizierung erfordert und die Kommunikation absichert. Da jetty nicht gehärtet ist, ist diese Variante (trotz vorgeschaltetem Reverse Proxy) sicher nicht empfehlenswert.
Ich habe hier noch eine "alte" Bastellösung (neben Wireguard), und zwar ein Zugang über ssh. Allerdings ist der SSH Server extra so konfiguriert, dass er ausschließlich mit Private/Public key Verfahren für die Authentifizierung arbeitet, Passworte sind verboten. In diesem Fall öffnet man einen Tunnel über einen lokalen Port, der dann im LAN auf einen bestimmten Port an eine bestimmte IP andockt - das ist vergleichsweise umständlich
openHAB5.1.3 stable in einem Debian-Container (trixie, OpenJDK 21 headless runtime - LXC, 4 Kerne, 3 GByte RAM)
Hostsystem Proxmox VE 9.1.6 - AMD Ryzen 5 3600 6 Kerne, 12 Threads - 64 GByte RAM - ZFS Pools: Raid Z1, 3 x 20 TB HDD -> 40 TByte und Raid Z0-Mirrored 4 x 1 TByte NVMe -> 2 TByte
Hostsystem Proxmox VE 9.1.6 - AMD Ryzen 5 3600 6 Kerne, 12 Threads - 64 GByte RAM - ZFS Pools: Raid Z1, 3 x 20 TB HDD -> 40 TByte und Raid Z0-Mirrored 4 x 1 TByte NVMe -> 2 TByte