Vorwort
Ich schreibe dies als Projekte, weil ich schon verschiedene Fragen (zumindest in der englischen Community) gelesen habe, wie man openHAB auf einen anderen Server migriert oder wie man openHAB 2 auf openHAB 3 migriert.
Ich beschreibe hier die unterschiedlichen Vorgehensweise von
- openHAB 2 auf einen anderen Server migrieren
- openHAB 3 auf einen anderen Server migrieren
- openHAB 2 auf openHAB 3 migrieren
Allgemeine Vorgehensweise
Das Prinzip ist immer dasselbe:
- Backup des alten openHAB-Systems erstellen
- Java installieren oder upgraden
- Neues openHAB-System installieren
- Konfigurationen rüber kopieren
Empfehlung: Das ganze in Testumgebung und Liveumgebung unterscheiden. Also die alte openHAB-Instanz normal weiterlaufen lassen, sodass man sein Smart Home System noch nutzen kann. Dann bspw. eine virtuelle Maschine installieren und den alten Zustand erst einmal rüber kopieren. Dies wäre also der Schritt openHAB auf einen anderen Server migrieren. Wenn ihr nun openHAB 2 auf openHAB 3 migriert, seht ihr auch mögliche Fehler, die ihr ausmerzen könnt, ohne später euer Livesystem zu zerstören.
openHAB 2 auf anderen Server migrieren
Den neuen Server starten und soweit einrichten. Anschließend Zulu Java 8 installieren:
Code: Alles auswählen
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 0xB1998361219BD9C9
sudo apt-add-repository 'deb http://repos.azulsystems.com/ubuntu stable main'
sudo apt-get update
sudo apt-get install zulu-8
Code: Alles auswählen
sudo nano /etc/environment
JAVA_HOME="/usr/lib/jvm/zulu-8-amd64"
source /etc/environment
Code: Alles auswählen
wget -qO - 'https://openhab.jfrog.io/artifactory/api/gpg/key/public' | sudo apt-key add –
echo 'deb https://openhab.jfrog.io/artifactory/openhab-linuxpkg stable main' | sudo tee /etc/apt/sources.list.d/openhab.list
sudo apt-get update
sudo apt-get install openhab2
sudo apt-get install openhab2-addons
Code: Alles auswählen
http://localhost:8080/start/index
Solltet ihr für MQTT den Mosquitto-Broker ebenfalls migrieren wollen, dann installiert ihr diesen ebenfalls neu:
Code: Alles auswählen
sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa
sudo apt-get update
sudo apt-get install mosquitto
sudo apt-get install mosquitto-clients
Code: Alles auswählen
sudo apt install openssh-server
Code: Alles auswählen
ssh <user>@ip
Weitere Angaben sparen wir uns an dieser Stelle. Wie ihr dies mit Known_Hosts, Private und Public Key genau löst, ist euch unterlassen. Unter Umständen könnte es auch sein, dass man den alten Key Fingerprint löschen und einen neuen hinzufügen muss.
Mosquitto könnt ihr über scp wie folgt migrieren:
Code: Alles auswählen
sudo scp -r <user>@<ip>:/etc/mosquitto/ /etc/
Um openHAB zu "clonen" könnt ihr im einfachsten Fall das erstellte Backup rüberkopieren.
Ihr öffnet auf dem alten Server ein Terminal und erstellt das Backup mit:
Code: Alles auswählen
sudo openhab-cli backup
In einem Terminal auf dem neuen openHAB-Server kopiert ihr zunächst das Backup und führt dieses aus:
Code: Alles auswählen
sudo scp -r <user>@<ip>:/var/lib/openhab2/backups /var/lib/openhab2
sudo openhab-cli restore /var/lib/openhab2/backups/filename.zip
Code: Alles auswählen
sudo scp -r <user>@<ip>:/etc/openhab2/ /etc/
sudo scp -r <user>@<ip>:/usr/share/openhab2/addons/ /usr/share/openhab2
sudo scp -r <user>@<ip>:/etc/default/openhab2 /etc/default/openhab2
sudo scp -r <user>@<ip>:/var/lib/openhab2 /var/lib
- In /etc/openhab2/ befinden sich alle eure alten Konfigurationen wie Things, Sitemaps, Items usw.
- In /usr/share/openhab2/addons/ befinden sich unter Umständen manuell instalierte Add-ons oder wenn ihr ausgestellt habt, dass nach jedem Neustart von openHAB die Add-ons neu installiert werden sollen, gewisse .kar- oder .jar-Dateien
- In /etc/default/openhab2 sind bspw. Konfigurationen wie EXTRA_JAVA_OPTS abgelegt für meinetwegen zWave, Cross-Komplirierung, HTTP/S-Port etc.
- In /var/lib/openhab2/ befinden sich unter anderem Referenzen zu installierten Add-ons, evtl. wichtige Inhalte die sich im Cache befinden oder bspw. Things und Rules, die nicht über Dateien sondern in PaperUI erstellt wurden.
Code: Alles auswählen
sudo systemctl stop openhab2.service
sudo rm -r /var/lib/openhab2/tmp/*
sudo rm -r /var/lib/openhab2/cache/*
sudo systemctl start openhab2.service
sudo systemctl restart openhab2.service
sudo systemctl restart openhab2.service
Vom Prinzip her wie bei openHAB 2, nur dass anstelle von openhab2 dann openhab im Pfad verwendet wird. Außerdem muss Zulu Java 11 anstelle von Zulu Java 8 installiert werden und logischerweise openHAB 3 anstelle von openHAB 2.
Den neuen Server starten und soweit einrichten. Anschließend Zulu Java 11 installieren:
Code: Alles auswählen
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 0xB1998361219BD9C9
sudo apt-add-repository 'deb http://repos.azulsystems.com/ubuntu stable main'
sudo apt-get update
sudo apt-get install zulu-11
Code: Alles auswählen
sudo nano /etc/environment
JAVA_HOME="/usr/lib/jvm/zulu-8-amd64"
source /etc/environment
Code: Alles auswählen
wget -qO - 'https://openhab.jfrog.io/artifactory/api/gpg/key/public' | sudo apt-key add –
echo 'deb https://openhab.jfrog.io/artifactory/openhab-linuxpkg stable main' | sudo tee /etc/apt/sources.list.d/openhab.list
sudo apt-get update
sudo apt-get install openhab
sudo apt-get install openhab-addons
Code: Alles auswählen
http://localhost:8080/
Solltet ihr für MQTT den Mosquitto-Broker ebenfalls migrieren wollen, dann installiert ihr diesen ebenfalls neu:
Code: Alles auswählen
sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa
sudo apt-get update
sudo apt-get install mosquitto
sudo apt-get install mosquitto-clients
Code: Alles auswählen
sudo apt install openssh-server
Code: Alles auswählen
ssh <user>@ip
Weitere Angaben sparen wir uns an dieser Stelle. Wie ihr dies mit Known_Hosts, Private und Public Key genau löst, ist euch unterlassen. Unter Umständen könnte es auch sein, dass man den alten Key Fingerprint löschen und einen neuen hinzufügen muss.
Mosquitto könnt ihr über scp wie folgt migrieren:
Code: Alles auswählen
sudo scp -r <user>@<ip>:/etc/mosquitto/ /etc/
Um openHAB zu "clonen" könnt ihr im einfachsten Fall das erstellte Backup rüberkopieren.
Ihr öffnet auf dem alten Server ein Terminal und erstellt das Backup mit:
Code: Alles auswählen
sudo openhab-cli backup
In einem Terminal auf dem neuen openHAB-Server kopiert ihr zunächst das Backup und führt dieses aus:
Code: Alles auswählen
sudo scp -r <user>@<ip>:/var/lib/openhab/backups /var/lib/openhab
sudo openhab-cli restore /var/lib/openhab/backups/filename.zip
Code: Alles auswählen
sudo scp -r <user>@<ip>:/etc/openhab/ /etc/
sudo scp -r <user>@<ip>:/usr/share/openhab/addons/ /usr/share/openhab2
sudo scp -r <user>@<ip>:/etc/default/openhab /etc/default/openhab2
sudo scp -r <user>@<ip>:/var/lib/openhab /var/lib
- In /etc/openhab/ befinden sich alle eure alten Konfigurationen wie Things, Sitemaps, Items usw.
- In /usr/share/openhab/addons/ befinden sich unter Umständen manuell instalierte Add-ons oder wenn ihr ausgestellt habt, dass nach jedem Neustart von openHAB die Add-ons neu installiert werden sollen, gewisse .kar- oder .jar-Dateien
- In /etc/default/openhab sind bspw. Konfigurationen wie EXTRA_JAVA_OPTS abgelegt für meinetwegen zWave, Cross-Komplirierung, HTTP/S-Port etc.
- In /var/lib/openhab/ befinden sich unter anderem Referenzen zu installierten Add-ons, evtl. wichtige Inhalte die sich im Cache befinden oder bspw. Things und Rules, die nicht über Dateien sondern in PaperUI erstellt wurden.
Code: Alles auswählen
sudo systemctl stop openhab2.service
sudo rm -r /var/lib/openhab2/tmp/*
sudo rm -r /var/lib/openhab2/cache/*
sudo systemctl start openhab2.service
sudo systemctl restart openhab2.service
sudo systemctl restart openhab2.service
Code: Alles auswählen
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 0xB1998361219BD9C9
sudo apt-add-repository 'deb http://repos.azulsystems.com/ubuntu stable main'
sudo apt-get update
sudo apt-get install zulu-11
Unter Umständen macht es auch hier Sinn ein Backup zu erstellen. Muss aber nicht zwingend gemacht werden. Für die Migration selbst benötigt man kein Backup, sondern es werden aus den bisherigen Verzeichnissen die Daten direkt migriert. Das Tool scp kommt also ebenfalls nicht zum Einsatz. Ansonsten muss Java 8 auf Java 11 geupgraded werden.
Der wohl wichtigste Migrations-Hinweis an dieser Stelle ist:
Das System fragt Sie, ob Sie openhab2 als Teil davon entfernen möchten, und Sie sollten mit "y" antworten. Nachdem die Installation fortgesetzt wurde, werden Sie gewarnt, dass mehrere Ihrer Konfigurationsdateien neuere Versionen haben. Meistens sollte Ihre Antwort darauf "ja" sein, um die Versionen des Maintainers zu installieren, notieren Sie sich, welche Dateien das sind, da das Installationsprogramm sie am gleichen Ort als ".old"-Dateien speichert, wenn Sie etwas Bestimmtes rüberkopieren wollen.
Sie können übrig gebliebene openHAB2-Konfigurationsdateien loswerden, indem Sie den Befehl sudo apt purge openhab2 verwenden, aber dadurch wird auch der openhab-Benutzer los, um dieses Problem zu beheben, sollten Sie dies mit befolgen.
Kurz zusammengefasst: Deinstalliert ihr openHAB 2 bevor ihr openHAB 3 installiert, müsst ihr die Daten selbst wieder einfügen zum Migrieren. Installiert ihr openHAB 3, während openHAB 2 noch installiert ist, werden die Daten automatisch migriert. Nach der Installation von openHAB 3 könnt ihr dann openHAB 2 entfernen. Letzteres ist der viel angenehmere und einfachere Weg der Migration.
Wir beginnen, in dem wir Java Zulu upgraden:
Code: Alles auswählen
sudo systemctl stop openhab2.service
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 0xB1998361219BD9C9
Code: Alles auswählen
sudo apt-add-repository 'deb http://repos.azulsystems.com/ubuntu stable main'
sudo apt update
sudo apt purge zulu-8
sudo apt autoremove
sudo apt install zulu-11
Code: Alles auswählen
java -version
openjdk version "11.0.8" 2020-07-14 LTS
OpenJDK Runtime Environment Zulu11.41+23-CA (build 11.0.8+10-LTS)
OpenJDK 64-Bit Server VM Zulu11.41+23-CA (build 11.0.8+10-LTS, mixed mode)
Code: Alles auswählen
sudo nano /etc/environment
JAVA_HOME="/usr/lib/jvm/zulu-11-amd64"
source /etc/environment
Code: Alles auswählen
sudo apt-get --only-upgrade install zulu-11
Im nächsten Schritt installieren wir openHAB 3:
Code: Alles auswählen
wget -qO - 'https://openhab.jfrog.io/artifactory/api/gpg/key/public' | sudo apt-key add -
OK
Code: Alles auswählen
sudo apt-get install apt-transport-https
Sollte in openHAB 2 die Source-Liste für Apt nicht geupdatet sein, könnt ihr per Kommandozeile dies prüfen:
Code: Alles auswählen
cat /etc/apt/sources.list.d/openhab.list
Code: Alles auswählen
sudo rm -r /etc/apt/sources.list.d/openhab.list
Code: Alles auswählen
echo 'deb https://openhab.jfrog.io/artifactory/openhab-linuxpkg stable main' | sudo tee /etc/apt/sources.list.d/openhab.list
Ihr fahrt dann mit der eigentlichen openHAB 3 Installation fort:
Code: Alles auswählen
sudo apt update
sudo apt install openhab
Danach werdet ihr gefragt, welche Konfigurationen genutzt werden sollen. Euere alten oder neue etc. Dies sieht bspw wie folgt aus:
Code: Alles auswählen
Configuration file '/etc/openhab/services/addons.cfg'
==> File on system created by you or by a script.
==> File also in package provided by package maintainer.
What would you like to do about it ? Your options are:
Y or I : install the package maintainer's version
N or O : keep your currently-installed version
D : show the differences between the versions
Z : start a shell to examine the situation
The default action is to keep your current version.
*** addons.cfg (Y/I/N/O/D/Z) [default=N] ?
Solltet ihr danach Schwierigkeiten haben openHAB 3 zu starten, weil er noch openHAB 2 irgendwie erkennt, könnt ihr es manuell vollständig entfernen:
Code: Alles auswählen
sudo apt purge openhab2
sudo apt autoremove
Code: Alles auswählen
sudo apt install --reinstall openhab
sudo openhab-cli reset-ownership
Code: Alles auswählen
sudo apt install openhab-addons
Mit noch installiertem openhab2
Code: Alles auswählen
sudo systemctl start openhab
openhabvm@ubuntu:~$ sudo systemctl status openhab
● openhab.service - openHAB - empowering the smart home
Loaded: loaded (/usr/lib/systemd/system/openhab.service; disabled; vendor >
Active: active (running) since Tue 2021-07-06 00:29:49 PDT; 5s ago
Docs: https://www.openhab.org/docs/
https://community.openhab.org
Main PID: 30248 (java)
Tasks: 27 (limit: 4620)
Memory: 89.7M
CGroup: /system.slice/openhab.service
└─30248 /usr/bin/java -XX:-UsePerfData -Dopenhab.home=/usr/share/o>
Jul 06 00:29:49 ubuntu systemd[1]: Started openHAB - empowering the smart home.
Unter
Code: Alles auswählen
http://localhost:8080/settings/
- Settings --> Bindings --> ... Add-ons installed
- Settings --> Items --> ... Items vorhanden
- Settings --> Rules --> ... Rules vorhanden
- ...
Als nächstes öffnen wir die Karaf-Konsole:
Code: Alles auswählen
ssh -p 8101 openhab@localhost
pw: habopen (in der Regel)
Code: Alles auswählen
openhab> log:tail
01:11:28.557 [ERROR] [.core.karaf.internal.FeatureInstaller] - Failed installing 'openhab-package-expert': No matching features for openhab-package-expert/0
01:11:28.559 [WARN ] [.core.karaf.internal.FeatureInstaller] - The binding add-on 'mqtt1' does not exist - ignoring it.
01:11:28.561 [WARN ] [.core.karaf.internal.FeatureInstaller] - The binding add-on 'caldav-personal1' does not exist - ignoring it.
01:11:28.561 [WARN ] [.core.karaf.internal.FeatureInstaller] - The binding add-on 'wol1' does not exist - ignoring it.
01:11:28.562 [WARN ] [.core.karaf.internal.FeatureInstaller] - The binding add-on 'http1' does not exist - ignoring it.
01:11:28.563 [WARN ] [.core.karaf.internal.FeatureInstaller] - The binding add-on 'exec1' does not exist - ignoring it.
01:11:28.563 [WARN ] [.core.karaf.internal.FeatureInstaller] - The binding add-on 'weather1' does not exist - ignoring it.
01:11:28.564 [WARN ] [.core.karaf.internal.FeatureInstaller] - The binding add-on 'caldav-command1' does not exist - ignoring it.
01:11:28.566 [WARN ] [.core.karaf.internal.FeatureInstaller] - The misc add-on 'ruleengine' does not exist - ignoring it.
01:11:28.573 [WARN ] [.core.karaf.internal.FeatureInstaller] - The ui add-on 'dashboard' does not exist - ignoring it.
01:11:28.574 [WARN ] [.core.karaf.internal.FeatureInstaller] - The ui add-on 'restdocs' does not exist - ignoring it.
01:11:28.575 [WARN ] [.core.karaf.internal.FeatureInstaller] - The ui add-on 'classic' does not exist - ignoring it.
01:11:28.576 [WARN ] [.core.karaf.internal.FeatureInstaller] - The ui add-on 'habmin' does not exist - ignoring it.
01:11:28.576 [WARN ] [.core.karaf.internal.FeatureInstaller] - The ui add-on 'paper' does not exist - ignoring it.
Anmerkung: openHAB 3 unterstütz keine 1.x Bindings mehr!
Ihr überprüft unbedingt die /etc/default/openhab-Datei. Dort steht eventuell:
Code: Alles auswählen
EXTRA_JAVA_OPTS=""
Code: Alles auswählen
EXTRA_JAVA_OPTS="-Xms1024m -Xmx1536m -XX:+HeapDumpOnOutOfMemoryError -Xbootclasspath/a:/etc/openhab/automation/jython/jython-standalone-2.7.0.jar -Dpython.home=/etc/openhab/automation/jython -Dpython.path=/etc/openhab/automation/lib/python"
Auch etwas, was oft eingetragen wird, wäre bspw. für zWave:
Code: Alles auswählen
EXTRA_JAVA_OPTS="-Dgnu.io.rxtx.SerialPorts=/dev/ttyACM0"
Anmerkung: Ein sudo usermod -a -G dialout openhab entfällt hierbei, weil dies ja bereits unter openHAB 2 gemacht wurde.
Anmerkungen
Wer ein bisschen versteht, wie das openHAB-System aufgebaut ist und welche Dateien sich wo befinden und welche Konfigurationen, für den ändert sich eigentlich am Ende nur das Frontend und dass die 2 im Pfad verschwindet, ansonsten sind alle Migrationen eigentlich genau gleich!