Seit über 6 oder 7 Jahren verwende ich UniFi Access Point der Firma UBIQUITI NETWORKS, sei es geschäftlich oder auch privat. Anfangs betrieb ich die Controller-Software auf einem Windows Rechner. Aus Gründen wie Platzverhältnisse, Stromverbrauch, SW-Updates usw. entschied ich mich letztes Jahr die Umgebung auf einem Raspberry Pi 3B+ zu migrieren.
Migration des UniFi Controllers
Eigentlich läuft soweit alles einwandfrei auf meinem Raspberry 3B+ jedoch ist das "Grundrauschen" der CPU seit einem Raspbian Stretch Update im Juni oder Mai 2019 so hoch, dass die Temperatur regelmässig über 70°C ansteigt.
Weiss der Geier wieso!
Quellen:
UniFi - How to Install and Update via APT on Debian or Ubuntu
UniFi Network Controller Stable 5.10.25
UniFi - How to Install & Upgrade the UniFi Network Controller Software (Nachtrag vom 01.09.19)
UniFi Installation Scripts | UniFi Easy Update Script (Nachtrag vom 01.09.19)
Vorbereitung des RasPi
Nach der Installation von Raspbian Buster und Konfiguration einer fixen IP lohnt es sich auf jeden Fall das Debian basierte Linux aufzufrischen (ACHTUNG: es erfolgt anschliessend ein automatischer Neustart!):
sudo apt update && sudo apt dist-upgrade -y && sudo apt-get autoremove && sudo apt-get autoclean && sudo reboot
Bevor die eigentliche Installation und Migration beginnt, habe ich haveged installiert da ich das Problem hatte, dass es nach einem Neustart des Raspi bis zu 10 Minuten dauerte bis ich mich an der Weboberfläche des Controllers anmelden konnte. Dieses Tutorial löste mein Problem:
sudo apt-get install haveged
sudo update-rc.d haveged defaults
sudo reboot
Nachtrag 3 (01.09.19):
Mein Controller zeigt an, dass die Version 5.11.39 zum download verfügbar ist, jedoch findet Raspian die neue Version nicht im Repositorium und somit kann auch kein Update durchgeführt werden! Gemäss Community bin ich nicht alleine mit dieser Tatsache.
Eigentlich wollte ich zuerst nach dieser Anleitung ein Update durchführen, bin dann auch diesen Artikel gestossen und dachte mir "Kannst ja nichts verlieren, habe ja ein komplett Backup des RasPi" und Schwups, die neue Version war innerhalb von 2 Minuten installiert!
Somit ist die folgende Anleitung eigentlich hinfällig!
Nun beginnt die eigentliche Controller Installation mit dem bereitstellen der UniFi Source:
sudo apt update && sudo apt install ca-certificates apt-transport-https
echo 'deb http://www.ui.com/downloads/unifi/debian stable ubiquiti' | sudo tee /etc/apt/sources.list.d/100-ubnt-unifi.list
GPG-Schlüssel herunterladen, damit die UniFi Source als sicher eingestuft wird (Methode A, bevorzugt):
sudo wget -O /etc/apt/trusted.gpg.d/unifi-repo.gpg https://dl.ui.com/unifi/unifi-repo.gpg
Update des Repositorium und anschliessender Installation der Controller Software:
sudo apt update
sudo apt install apt-transport-https
sudo apt install unifi
Raspberry Pi 4B mit Raspbian BUSTER lite hat Java 9 mit im Paket, jedoch läuft der UniFi Controller nur mit Java 8, deshalb müssen wir Java 8 installieren:
sudo apt-get install openjdk-8-jre-headless -y
Gemäss diversen Communities wird die MongoDB mit-installiert, die wird jedoch nicht gebraucht, deshalb deaktivieren wir den Dienst, stoppen ihn und starten den Raspi neu:
sudo systemctl disable mongodb
sudo systemctl stop mongodb
sudo reboot now
Jetzt ist es an der Zeit vom bestehenden (alten) Controller ein Backup zu machen. Dazu über den Browser am (alten-) Controller anmelden. Unter Wartung-> Backup-> Keine Begrenzung kann eine aktuelle Sicherung erstellt und lokal auf dem PC gespeichert werden (dauert ca. 1-2 Minuten):
https://IP-alter-Raspi:8443
(z.B. https://192.168.1.10:8443)
Danach am "alten Controller" per SSH anmelden und den UniFi Dienst stoppen und deaktivieren. Optional kann nach erfolgreicher Migration die Controller Software auch de-installiert werden. Ich verzichte auf die De-Installation damit ich für den Notfall auf dem Raspberry 3B+ die UniFi Software wieder hochfahren kann:
sudo systemctl stop unifi
sudo systemctl disable unifi
Nun können wir die Sicherung von vorhin im neuen Controller einlesen. Dazu über den Browser die Webseite önnen und den Punkt aus vorigem Backup wiederherstellen anklicken. Nach ca. 1-2 Minuten wird die Seite automatisch neu aufgebaut und man kann sich wie gewöhnt an der Weboberfläche anmelden:
https://IP-neuer-Raspi:8443
(z.B. https://192.168.1.20:8443)
Unter Login-> Einstellungen-> Controller-> 'Controller Name' (z.B.: UniFi-RasPi) und 'Controller-Hostname/IP' (z.B. 192.168.1.20) anpassen.
In der USG musste ich mal 2 Port-Weiterleitungen für STUN und INFORM eintragen, diese müssen natürlich auch auf die neue IP-Adresse angepasst werden (Quelle: Tutorial).
Falls nach 2-3 Minuten die Einbindung nicht stattgefunden hat, kann man auch per SSH auf jedes UniFi Gerät verbinden, den folgenden Befehl manuell eingeben und anschliessend das Device neu starten:
set-inform http://192.168.1.20:8080/inform
Nachtrag 1 (30.07.19):
Da mich letzte Nacht meine UniFi-App auf dem Handy ununterbrochen daran erinnerte, dass der (alte) Controller On- bzw. Offline ist habe ich mich dazu entschlossen die Software auf dem RasPi definitiv zu de-installieren. Grund dazu war das automatisierte Backup (dabei wird der UniFi Dienst vor der Sicherung gestoppt und nach der Sicherung wieder gestartet) mit anschliessender Erstellung einer *.IMG Datei auf mein NAS, damit bei einem Ausfall der SD-Karte der entsprechende RasPi innerhalb von ca. 5-10 Minuten wieder betriebsbereit ist (mehr dazu folgt in einem sep. Atikel).sudo dpkg -P unifi
Ausserdem wäre wahrscheinlich die Migration noch effizienter wenn so vorgegangen würde:
- Controller auf neuem RasPi installieren.
- Konfiguration auf altem RasPi sichern und auf neuem RasPi installieren (gleich nach der Installation).
- Auf dem neuen RasPi soweit alles auf die neue IP-Adresse vorbereiten
- Auf beiden RasPi's den neuen Controller hinterlegen: Einstellungen-> Controller-> 'Controller Name' (z.B.: UniFi-RasPi) und 'Controller-Hostname/IP' (z.B. 192.168.1.20) anpassen.
Danach sollten sich alle UniFi-Geräte selbständig auf den neuen Controller verbinden und anschiessen kann der alte Controller heruntergefahren und de-installiert werden.
Nachtrag 2 (31.07.19):
Nachdem ich etwas im File-System des alten UniFi-Controller herumgestöbert bin, habe ich unter /var/lib/mongodb
tatsächlich ca. 750MB in drei Journal-Dateien gefunden! Für ein Linux-System auf 6GB SD-Karte ist das ja eine ganz schöner Brocken! Diese Dateien habe ich dann gelöscht und mich hat es natürlich gewurmt, dass ich auf dem neuen RasPi auch wieder Schrott aufbewahre der nicht gebraucht wird.
Kurzerhand habe ich mit sudo apt-get purge mongodb-*
(Auf keinen Fall ausführen!!) die MONGODB de-installiert, jedoch wurde gleichzeitig auch der komplette UniFi-Controller entfernt! Was für ein Desaster!!!
Dank meiner Anleitung hier konnte ich jedoch den Controller innerhalb von 5 Minuten wieder betriebsbereit machen, leider hatte ich kein manuelles Backup der Konfiguration erstellt, jedoch wäre unter /var/lib/unifi/backup
eine automatisch generierte Sicherung vorhanden gewesen... wenn denn dieser Ordner mit der De-Installation von MONGODB nicht auch automatisch gelöscht worden wäre!
Dank einem coolen Tool von Framp rapsiBackup konnte ich glücklicherweise aus dem Backup von letzter Nacht die gewünschte Konfigurations-Datei wieder herstellen.
Nichtsdestotrotz habe ich auf dem neuen RasPi 4 die mongodb Jornaldateien gelöscht und somit wieder 750MB mehr Platz!