Hier habe ich mein Protokoll meines Umzugs von einem Raspberry Pi 4 auf einen Pi 5 erstellt. Vielleicht mag‘s dem ein oder anderen als Anleitung dienen.
Man liest zwar immer wieder, dass so ein Umzug einfach und schnell in wenigen Minuten zu bewerkstelligen sei, leider habe ich keinen Weg einfachen gefunden. Am Ende geriet das Ganze alles in allem ziemlich aufwendig.
All dies mag auch an meiner Installation liegen. Ohne InfluxDB, Grafana, piVCCU3, .. geht es wohl tatsächlich einfacher, wie man in diesem Thread nachlesen kann. Wer also ein einfach(er)es System hat, sollte sich anderer Quellen bedienen.
BackItUp ist zur Wiederherstellung von ioBroker entwickelt worden. Da ist es eine schöne Zugabe, dass auch die Daten von CCU3, InfluxDB und Grafana mit diesem Programm gesichert und wiederhergestellt werden können. Es wäre schlichtweg zu vermessen zu erwarten, dass BackItUp Installationen und Initialisierungen dieser zusätzlichen Anwendungen ebenfalls übernimmt.
Etwa müssen im hier vorgestellten Szenario die Installationen piVCCU, InfluxDB und Grafana separat erfolgen, bevor man darangehen kann, die mittels BackItUp erstellen Backups wiederherstellen zu können. D.h.: Jede dieser drei Erweiterungen müssen nicht nur separat neu installiert, sondern auch konfiguriert werden; anschließend gilt es noch die Einbindungen dieser Programme in ioBroker ebenfalls zu konfigurieren.
Alle Leidensgenossen, die ebenfalls kein einfaches System haben, sollten hier fündig werden.
Vorhaben
Unsere auf ioBroker basierende Hausautomation soll von einem Raspberry Pi 4 auf einen neuen Pi 5 umziehen. Ziel ist es, beim Umzug die Datenbank InfluxDB auf einen separaten Raspberry Pi 4 auszulagern.
ioBroker, InfluxDB, Grafana und Homematic sind auf einem Pi 4 installiert, wobei sich die piVCCU3 in einem LXC befindet.
Strategie
Die hier vorgestellte Dokumentation ist keine Schritt für Schritt Anleitung. Hierauf wurde verzichtet, da viele sehr langwierige Arbeiten auf den insgesamt drei beteiligten Systemen parallel ausgeführt werden können, um den Zeitaufwand möglichst gering zu halten. Die nachfolgende Aufstellung sollte helfen, bei den Arbeiten die Übersicht über die notwendigen Arbeitsschritte und Einstellungen zu wahren.
- Sicherungen von ioBroker und allen Datenbanken der Adaptern mit BackItUp erstellen und bereithalten
- Pi 5 und Pi 4 mit aktuellem Betriebssystem versehen
- Auf dem Pi 5 ioBroker installieren
- BackItUp kann keine Installation sondern nur die Daten von InfluxDB und Grafana wiederherstellem, daher muss zuvor InfluxDB auf dem Pi 4 und Grafana auf dem Pi 5 zusätzlich installiert werden. Auch das Backup für Homematic in der piVCCU3 muss über die GUI Oberfläche der CCU erfolgen.
- Sicherung von ioBroker vom alten System Pi 4 auf dem Pi 5 mittels BackItUp einspielen.
- alle Datenbanken der Adapter - außer InfluxDB - auf den Pi 5 mit BackItUp übertragen.
- Instanz des InfluxDB Adapters auf dem Pi 5 konfigurieren
- Einstellungen zu InfluxDB in der BackItUp Instanz auf dem Pi 5 konfigurieren
- separaten Pi 4 für InfluxDB mit Betriebssystem und InfluxDB ausstatten.
- mittels BackItUp auf dem Pi 5 InfluxDB Datenbank wiederherstellen
Voraussetzung
Es stehen folgende mit BackItUp (regelmäßig) erstellte Backups zur Verfügung ..
- ioBroker (mit allen Adaptern, Datenpunkten, Einstellungen, ..)
- JavaScript (als separates Backup)
- InfluxDB
- Grafana
- YAHKA
- ZigBee
- piVCCU3 (Homematic)
Alles ist auf einem Pi 4 installiert. Die Backups werden auf NAS/Cifs (Fritz!Box mit USB-Stick) gesichert.
Bei der Wiederherstellung des Systems auf dem neuen Raspberry Pi 5 müssen drei Gruppen von Adapter unterschieden werden:
- einfache Adapter
- Adapter mit eigener Datenbank: ZigBee, YAHKA
- Adapter von InfluxDB, Grafana und piVCCU3
Dass InfluxDB, Grafana und piVCCU3 in einer eigenen Gruppe landen, ist dem Umstand geschuldet, dass diese Programme zuvor eigens auf dem neuen Pi 5 manuell/vorab installiert werden müssen und darüber hinaus die InfluxDB-Datenbank auf einen separaten Pi 4 ausgelagert werden soll. Darüber hinaus muss das Backup der piVCCU3 mittels der Homematic GUI eingespielt werden. Für jede dieser Gruppen wird ein spezieller Restore auf dem Pi 5 fällig.
Die Konfiguration der BackItUp-Instanz auf dem alten System ist in den nachfolgenden Abbildungen dargestellt.
-
Die Konfiguration der NAS/Cfis basierten Sicherung
-
Die Konfigurationen für InfluxDB in den Instanzen von BackItUp können über die blaue Schaltfläche zur Ermittlung der Konfiguration aus den Einstellungen in den Instanzen der InfluxDB-Adapter übernommen werden. Hierzu muss jedoch zuvor (nach dem Restore des ioBroker) die Konfiguration auf dem neuen Pi 5 von lokal zu einer remote umgestellt werden.
-
Die Konfiguration zur Sicherung von Grafana muss das Zugriffstoken der Ausgangskonfiguration enthalten.
-
Obwohl eine virtuelle piVCCU (von Alexander Reinert) verwendet wird, sind die Einstellungen dieselben wie bei einer RasberryMatic oder einer CCU von Homematic.
Hierbei zeigt sich auch schon die erste Stolperfalle. Sie macht sich jedoch nur bei Passwörtern für den NAS/Cifs Zugang bemerkbar. Enthält das verwendete Passwort Sonderzeichen, so muss man das Passwort im neuen System von Hand erneut eingeben. In diesem Beitrag findet sich eine mögliche Erklärung.
Vorbereitung vom Raspberry Pi 5 und Pi 4
Mittels dem Raspberry Pi Imager werden der Pi 5 und Pi 4 mit dem aktuellen Betriebssystem bestückt.
Anschließend sollte man je nach Bedarf noch die folgenden Repositorys im Terminal via SSH installieren, wie sie beispielsweise in diesem Beitrag zu finden sind.
Grafana
sudo rm /etc/apt/sources.list.d/grafana*
sudo apt-get install -y apt-transport-https
sudo apt-get install -y software-properties-common wget
sudo wget -q -O /usr/share/keyrings/grafana.key https://apt.grafana.com/gpg.key
echo "deb [signed-by=/usr/share/keyrings/grafana.key] https://apt.grafana.com stable main" | sudo tee /etc/apt/sources.list.d/grafana.list
InfluxDB
sudo rm /etc/apt/sources.list.d/influ*
wget -q https://repos.influxdata.com/influxdata-archive_compat.key
echo '393e8779c89ac8d958f81f942f9ad7fb82a25e133faddaf92e15b16e6ac9ce4c influxdata-archive_compat.key' | sha256sum -c && cat influxdata-archive_compat.key | gpg --dearmor | sudo tee /usr/share/keyrings/influxdata-archive_compat.gpg > /dev/null
echo 'deb [signed-by=/usr/share/keyrings/influxdata-archive_compat.gpg] https://repos.influxdata.com/debian stable main' | sudo tee /etc/apt/sources.list.d/influxdata.list
rm influxdata-archive_compat.key
Restore
Nach diesen Arbeiten kann die Wiederherstellung von ioBroker auf dem neuen Pi 5 inklusive aller drei Adaptergruppen erfolgen. Die notwendigen Backup-Dateien findet man im Register WIEDERHERSTELLEN der BackItUp-Instanz. Die Option Alle Adapter nach der Wiederherstellung starten sollte deaktiviert sein, ansonsten laufen die Startvorgänge der Adapter der zweite Gruppe auf einen Fehler, da ihre zugehörigen Datenbanken noch nicht wiederhergestellt sind.
Vorweg gilt es, die BackItUp-Instanz auf dem neuen System zu konfigurieren. Hierzu ermöglicht BackItUp die Übertragung seiner sämtlichen Konfigurationsdaten, indem man diese aus dem alten System herunterlädt und im neuen einspielt. Die mit Pfeilen gekennzeichneten kleinen Schaltflächen rechts oben in den BackItUp-Instanzen ermöglichen diesen Datentransfer. Mit der rechten Schaltfläche kann man die Daten in eine Datei laden, mit der linken werden diese in eine bestehende BackItUp-Installation geladen.
Anschließend kann die Sicherung von ioBroker aus dem alten System mittels BackItUp im neuen System auf dem Pi 5 wiederhergestellt werden. Dieser Restore des ioBroker-Backups auf dem neuen Pi 5 gewährleistet, dass die Adapter aller drei Gruppen auf dem neuen System verfügbar sind. Für die zweite Gruppe der Adapter müssen die zugehörigen Datenbanken separat mittels BackItUp auf dem Pi 5 wiederhergestellt werden. Exemplarisch wird hier das Vorgehen bei ZigBee aufgezeigt.
Klickt man auf das rechte (eine Art Uhr)Symbol, so kann man den Wiederherstellungsvorgang einleiten. Die linke der beiden - mit einem Pfeilsymbol gekennzeichnete - Schaltflächen ermöglicht ein Herunterladen der jeweiligen Backup-Datei.
Nachdem man nun alle Daten(Banken) der einzelnen Adapter - außer InfluxDB - wiederhergestellt hat, kann es an die Wiederherstellung der InfluxDB-Datenbank gehen.
Grafana wiederherstellen
Zum Wiederherstellen von Grafana muss dieses Programm natürlich zuvor auf dem Pi 5 manuell installiert werden. Leider ist eine solche Installation nicht mal nebenbei zu erledigen.
Garfana.ini Datei anpassen
Damit die mit Grafana erstellten Darstellungen auch in der Visualisierung der VIS von ioBroker eingebettet werden können, ist eine Bearbeitung Datei grafana.ini erforderlich. Ihre Bearbeitung kann beispielsweise mit dem Editor nano erfolgen.
sudo nano /etc/grafana/grafana.ini
Insgesamt müssen in drei Abschnitten securitiy, auth.anonimous und users Änderungen erfolgen. Hierbei ist zu beachten, dass das Semikolon am Anfang der Zeile entfernt wird, ansonsten wird die Zeile als Kommentar angesehen und bleibt unberücksichtigt.
Durch Drücken von Ctrl+W und Eingabe des Suchbegriffs [1], kann man schnell zu der gesuchten Stelle finden. Ist die gefundene Stelle nicht die richtige, so kann die Suche durch erneutes Drücken von Ctrl+W fortgesetzt werden. In diesem Fall schlägt nano den zuletzt verwendeten Suchbegriff vor; durch Drücken auf die Eingabetaste, wird die nächste Stelle gesucht, an der der Begriff zu finden ist.
Die erste Änderung im Bereich security ermöglich das Einbetten von Elementen aus Grafana in andere Anwendungen.
[security]
allow_embedding = true
Im Bereich auth.anonymous wird geregelt, wie auf ein eingebettetes Objekt aus Grafana in einer anderen Anwendung zugegriffen werden darf. Die erste Option erlaubt einen Zugriff, ohne dass sich der Anwender authentifizieren muss. Alle Objekte werden in Grafana in sog. Organisations vorgehalten. Hier ist jene einzugeben, unter der das Objekt in Grafana geführt wird. Die dritte Option weist dem Anwender die Zugriffsrechte zu; im hier dargestellten Beispiel kann der Anwender keine Änderungen am übergebenen Objekt vornehmen.
[auth.anonymous]
enabled = true
org_name = org_iobroker
org_role = Viewer
Um beim Zugriff auf ein eingebettetes Objekt sich nicht gegenüber Grafana authentifizieren zu müssen, sollte man im Bereich users dies ausschalten.
[users]
allow_sign_up = false
Damit nun alle vorgenommenen Einstellungen auch wirksam werden, muss Grafana neu gestartet werden. Dies kann man auf zweifache Weise erreichen. Entweder ..
sudo /bin/systemctl restart grafana-server
.. oder ..
sudo service grafana-server stop
sudo service grafana-server start
Leider reicht all dies noch immer nicht aus. Damit BackItUp überhaupt auf die neue Installation von Grafana zugreifen kann, um das Backup einzuspielen, muss in Grafana ein sog. Service-Account generiert werden. Das erzeugte Token sollte man sich unbedingt abspeichern, da man es zu einem späteren Zeitpunkt nicht mehr auslesen kann.
Das auf diese Weise erzeugte, neue Token muss nun in BackItUp eingetragen werden. Anschließend kann der BackUp-Prozess zur Wiederherstellung von Grafana erfolgen.
InfluxDB-Datenbank auf einem separaten Pi 4 wiederherstellen
Da InfluxDB nicht auf dem Pi 5, sondern auf einem separaten Raspberry Pi 4 gespeichert werden soll, muss dieser vorbereitet werden. Auf dem Pi 4 wird zunächst ein aktuelles Betriebssystem installiert. Anschließend installiert man eine aktuelle Version von InfluxDB auf dem Pi 4. Hierbei darf/sollte kein Bucket (Datenbank) angelegt werden. Der Restore-Prozess von InfluxDB legt automatisch die Datenbank (Bucket) in der neuen InfluxDB-Installation an. Einem Restore der InfluxDB-Datenbank mittels BackItUp auf dem neuen Pi 5 steht nun nichts mehr im Weg.
Nach dem Restore von ioBroker auf dem Pi 5 ist die Instanz von InfluxDB noch rein lokal. Sie muss jedoch als remote konfiguriert werden. In den nachfolgenden Abbildungen sind die erforderlichen Konfigurationen im alten und neuen System dargestellt.
Die Konfiguration des InfluxDB-Adapter auf dem alten System enthält den Token der alten InfluxDB.
In der Konfiguration des InfluxDB-Adapters auf dem neuen System ist der Token aus der InfluxDB-Datenbank auf dem neu eingerichteten Pi 4 zu nehmen. Darüber hinaus muss vermerkt werden, wie die externe Datenbank auf dem Pi 4 erreicht werden kann.
Die Wiederherstellung von JavaScript muss nicht explizit angestoßen werden. Dies erfolgt stets zusammen mit der Wiederherstellung von ioBroker.
Als nächstes muss noch die BackItUp-Instanz auf dem Pi 5 für InfluxDB angepasst werden. Hat man die Einstellungen wie zuvor beschrieben vorgenommen, so kann man sich diese Arbeit vereinfachen, indem man durch Klicken auf die blaue Schaltfläche mit der Aufschrift Ermitteln der Konfiguration die notwendigen Daten aus dem InfluxDB-Adapter ausliest und hier automatisch einträgt. Ggf. muss man jedoch den Token erneut eingeben, da er nicht (immer) auf diese Weise hier übernommen werden kann.
Nach diesen Vorarbeiten kann mittels BackItUp des neuen Systems die InfluxDB-Datenbank auf dem Pi 4 wiederhergestellt werden.
Anmerkungen, Hinweise, Tipps
Die Wiederherstellung der piVCCU3-Installation muss in der GUI der Homematic-Software erfolgen. BackItUp kann dies nicht ausführen.
Bei den Wiederherstellungsprozessen ist viel Geduld angesagt. Je nach Anzahl der Adapter kann das Restore vom ioBroker schon mal mehr als eine Stunde dauern. Bei einer großen InfluxDB-Datenbank sind auch mal über zwei Stunden fällig.
Hat man sich die Token bei der Installation von InfluxDB nicht notiert, muss man sie aus InfluxDB auslesen. Dies kann per CLI oder - was viel bequemer ist - auch über die GUI erfolgen. Hierzu gibt man nach dem Einlogen in InfluxDB in der Adresszeile nach dem Port 8086 einfach /api/v2/authorizations ein. Man erhält ein JSON, in dem u.a. auch das gesuchte Token zu finden ist.
Vermutlich stößt man bei der Einrichtung der Raspberry Pi auf ein Sicherheitsproblem. Installiert man einen Pi komplett neu, so ändert sich sein Fingerprint. Beim Einloggen im Terminal verweigert das Betriebssystem des PCs ggf. den Zugang. Hat man einen Mac, so hilft im Terminal die Eingabe von ssh-keygen -R 192.168.4.63, wobei die IP-Adresse des betroffenen Pi anzugeben ist.
[Wird fortgesetzt]
[zurück]