In diesem Beitrag zeige ich Dir, wie Du den Unifi Controller auf einem Rapberry Pi (RPI3) installieren kannst.
Was Du dafür brauchst
Solltest Du noch keinen Raspberry Pi 3 besitzen, empfehle ich Dir folgende Komponenten, die auch ich im Einsatz habe.
Voraussetzungen
Als Voraussetzung benötigst Du Rasbian Jessie (Lite). Eine aktuelle Version findest Du hier: https://www.raspberrypi.org/downloads/raspbian/
Dann brauchst Du die aktuelle Version vom Unifi Controller. Ich habe die Beta-Version installiert, da sie mir noch weitere Funktionen wie VPN via Radius Server bietet. Hierfür musst Du Dich am Beta-Programm anmelden.
https://community.ubnt.com/t5/UniFi-Beta-Blog/bg-p/Blog_UniFi_Beta
Unifi Controller installieren
Lade Dir die aktuelle Version und installiere Sie wie folgt. Dabei wird der Prozess wahrscheinlich nicht komplett durchlaufen. Es fehlen Dependencies, die im nächsten Schritt installiert werden.
wget https://www.ubnt.com/downloads/unifi/5.6.12-d503e7daad/unifi_sysvinit_all.deb
dpkg -i unifi_sysvinit_all.deb
Dependencies installieren:
sudo apt-get -f install
Unifi Controller automatisch beim Systemstart aktivieren
sudo systemctl enable unifi
sudo systemctl start unifi
MongoDB deaktivieren
Der Unifi Controller startet eine eigene Instanz.
sudo service mongodb stop
sudo service mongodb disable
Java 8 installieren
Als Standard wird Java 7 installiert. Diese Version hat aber ziemliche Performance-Probleme auf dem RPI mit Auslastungen jenseits der 100%.
Aus diesem Grund ist es notwendig Java 8 zu installieren.
sudo apt-get install oracle-java8-jdk -y
Java 8 als Standard aktivieren
sudo update-alternatives --config java
Ob das geklappt hat, kannst Du mit folgendem Befehl überprüfen:
java -version
Es sollte: java version „1.8.0_65“ erscheinen
Nun musst Du nur noch den absoluten Pfad in der Unifi-Konfiguration setzen.
sudo cp -p /lib/systemd/system/unifi.service /etc/systemd/system
sudo sed -i '/^\[Service\]$/a Environment=JAVA_HOME=/usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt' /etc/systemd/system/unifi.service
Log-Rotation aktivieren
Damit die Logdateien nicht Überhand nehmen, aktivieren wir die Logrotation.
sudo apt-get update && sudo apt-get install logrotate
Anschließend folgende Konfiguration erstellen:
sudo bash -c 'cat >> /etc/logrotate.d/unifi << EOF
/var/log/unifi/*.log {
rotate 5
daily
missingok
notifempty
compress
delaycompress
copytruncate
}
EOF'
Nach einem Reboot steht Dir der Unifi Controller zur Verfügung.
Du erreichst den Controller unter folgender URL:
https://device_ip:8443
Wie Du den Controller konfigurierst, erkläre ich Dir in weiteren Beiträgen.
Die Alternative
Als Alternative kannst Du auch den Ubiquiti UniFi Cloud Key verwenden. Dieser kostet ca. das Doppelte, kann dafür aber über POE direkt an einem POE-Switch betrieben werden.
Warum verwendest du nicht apt-get install unifi?
Damit wurde die falsche Java-Version geladen. Da der RPI etwas schwach auf der Brust ist, habe ich einen anderen Weg gewählt.
Kann man FEHM und den Unifi Controller auf dem gleichen RPI3 laufen lassen? Oder läßt da die Performance zu sehr zu wünschen übrig?
Hi Uwe,
ich würde ich abraten, da Java schon sehr ressourcenfressend ist.
Finde FHEM schon sehr langsam.
Viele Grüße
Dennis
Hallo, vielen Dank für den sehr informativen Artikel!
Was kann man noch nebenbei auf dem RP3 laufen lassen, damit es nicht an die Ressourcen-Limit ankommt ? Nextcloud, NAS- bzw. irgendetwas für Smarthomesysteme? Oder sollte man nur den UBNT-Controller auf dem RP3 laufen lassen?
Danke
Hi Max,
ich habe bei mir nichts weiter laufen. Ich vertraue dem Java-RE nicht wirklich. CPU-Auslastung ist bei mir ca. 6-10%.
Somit wäre noch Luft für andere Dienste vorhanden. Vielleicht könnte man noch einen Cloud-Dienst aufspielen, da dieser im privaten Umfeld sicher auch nicht die ganze Zeit aktiv ist.
Viele Grüße
Dennis
Moin,
Muss es ein raspberry pi 3 sein habe noch einen. Aus der ersten Generation hier liegen, kann der das auch?
Hi Basti,
die Performance ist schon geringer. Insb. Java nimmt sehr viel Ressourcen in Anspruch. Ausprobiert habe ich es nicht. Vielleicht kannst Du kurz berichten, ob es geht oder nicht.
Viele Grüße
Dennis
Hi,
ich würde den UniFI Controller gerne auf meinem Raspberry installieren.
Auf diesem arbeitet bereits ein ioBroker. Ob das gut geht werde ich sehen :-X
Ich werde es testen.
Muss ich dann den Controller am PC den ich aktuell nutze erst iwie deaktivieren?
Dann kann ich doch von jedem Rechner der Zugriff auf den Pi hat, auf den Controller zugreifen, oder?
Das ist ja eigentlich die Idee dahitner, oder nicht?
Gruß
Alex
Hi,
hast du die Installation inzwischen durchgeführt?
Läuft iobroker parallel zum Unifi Controller?
Gruß
Jürgen
Ja, ich habe sie durchgeführt. Sie lief parallel zum ioBroker.
Aber ich muss nun auf was größeres umsteigen. Der Pi hat einfach zu wenig RAM.
Allerdings läuft mein controller wohl nicht mehr.
Der Adapter bekommt keine Verbindung.
Wie kann ich denn den Controller evtl. manuell (neu)starten?
Oder Reinstallieren?
Ich wollte den UniFi Controller nach deiner Top Anleitung auf einem älteren Raspberry (Model B Rev 2) installieren. Nach dem Installieren von Java 8 und dem anschließenden Versuch, die Version abzufragen, erhalte ich die Fehlermeldung „Server VM is only supported on ARMv7+ VFP“.
Kann ich trotzdem die Controllersoftware auf meinem Raspberry zum Laufen bekommen oder muss ich mir zwingend einen neuen RPI3 anschaffen?
Hi Wolfgang,
es scheint so als würde der alte RPI nicht den geforderten Prozessor haben.
Im Netz finden sich einige Anleitung bzgl. Mathematica, die ähnliche Probleme haben.
Du könntest vielleicht die folgende Alternative versuchen:
apt-get install openjdk-8-jre-headless openjdk-8-jre
Viele Grüße
Dennis
Hi…,
Ich wollte gerne die Controller Software anhand deiner Anleitung installieren aber ich scheitere schon an dem Befehl
dpkg -i unifi_sysvinit_all.deb
Ich habe keine superuser rechte… was muss ich tun?
Hi Sebastian,
Du kannst mit dem Befehl „sudo su“ die entsprechenden Rechte bekommen. Oder Du gibst bei jedem Befehlt als quasi Präfix „sudo“ ein (also „sudo dpkg -i unifi_sysvinit_all.deb“.
Hoffe das hilft Dir.
Viele Grüße
Dennis
Hallo, super! Artikel der es auch mir ermöglicht hat die Installation durchzuführen. Vielen Dank!
Bis auf die zu installierende Version welche mittlerweile neuer ist, habe ich auch auf die vorgeschlagene Java Version verzichtet.
Ich habe den Kontroller nämlich auf einem RPI2 mit laufendem openHab2 installiert und da ist die Java Version bereits höher.
Ziel ist nämlich eine Anwesenheitserkennung zu realisieren wie hier (https://www.openhab.org/addons/bindings/unifi/) beschrieben. Diese braucht eine laufende Kontroller Instanz. Läuft die Instanz auf meinem MacBook funktioniert die Erkennung hervorragend. Deshalb möchte ich diese nun auf dem Raspi haben weil das MacBook ja nicht immer zu Hause liegt.
Am Schluss habe ich aber folgendes Problem.
Wenn ich nach dem Reboot des Raspi versuche den Kontroller aufzurufen (https://ip_des_rpi:8443) bekomme ich zwar den Hinweis das es sich um eine unsichere Verbindung handelt, klicke ich weiter lande ich auf der Grundseite des openHab.
Ist der Unifi Port 8443 Korrekt?
Wie kann ich feststellen ob der Kontroller wirklich läuft?
Wie komme ich an den Kontroller ran damit ich user/pw hinterlegen kann?
Nochmals besten Dank für den Artikel.
Conti
Hi Conti,
Du kannst in der Console folgendes versuchen:
ps -ax | grep unifi
Hier müsstest Du mind. 2 Einträge sehen, wo „grep unifi“ steht, kannst Du ignorieren.
Alternativ:
top
Bei „top“ solltest Du bei User irgendetwas wie „unifi“ sehen.
Zum Beenden STRG+C drücken.
Sonst könntest Du mal versuchen einen anderen Browser auszuprobieren.
Chrome sperrt sich teilweise gegen „nicht signierte“ verschlüsselte Verbindungen.
Viele Grüße
Dennis
Hallo Dennis,
zunächst einmal Danke für Deine ausführliche Anleitung bzgl. der Installation des UniFi-Controllers auf dem Raspberry Pi.
Da ich selber wenig Ahnung habe, habe ich Deine Anleitung befolgt und die Installation Schritt für Schritt durchgeführt, aber: es läuft leider nicht.
Kurz gesagt erreiche ich die Web-Oberfläche nicht.
Die URL lautet (in meinem Fall) https://192.168.178.74:8443 aber Opera (und auch andere Browser (Chromium, IE) können keine Verbindung herstellen („ERR_CONNECTION_REFUSED“).
Zum Status (via PuTTY / SSH):
pi@raspberrypi:~ $ sudo service unifi start
pi@raspberrypi:~ $ sudo service unifi status
● unifi.service – unifi
Loaded: loaded (/etc/systemd/system/unifi.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2019-03-12 09:31:38 CET; 8min ago
Process: 288 ExecStart=/usr/lib/unifi/bin/unifi.init start (code=exited, status=0/SUCCESS)
Main PID: 359 (jsvc)
CGroup: /system.slice/unifi.service
├─359 unifi -cwd /usr/lib/unifi -home /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt -cp /usr/share/java/commons-daemon.jar:/usr/lib/unifi/lib/ace.
├─361 unifi -cwd /usr/lib/unifi -home /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt -cp /usr/share/java/commons-daemon.jar:/usr/lib/unifi/lib/ace.
└─362 unifi -cwd /usr/lib/unifi -home /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt -cp /usr/share/java/commons-daemon.jar:/usr/lib/unifi/lib/ace.
Mär 11 22:12:30 raspberrypi systemd[1]: Starting unifi…
Mär 12 09:31:38 raspberrypi unifi.init[288]: Starting Ubiquiti UniFi Controller: unifi failed!
Mär 12 09:31:38 raspberrypi systemd[1]: Started unifi.
Die vorletzte Zeile verheißt nichts Gutes, aber angeblich ist der Dienst unifi ja gestartet. Daraus kann ich erst mal nichts schließen ¯\_(ツ)_/¯
Gibt es noch weitere Debug-Möglichkeiten, um herauszufinden, *warum* der Dienst nicht erreichbar ist?
Danke und viele Grüße
Tobias
Hi Tobias,
Du könntest mal schauen, ob die Java-Version korrekt ist.
which Java
und dann schauen, ob dort nur eine Version auftaucht.
/usr/bin/java -version
Hast Du denn von allem die neueste Version installiert?
Und schau mal in die Log-Dateien:
/usr/lib/unifi/logs/
Dort könnte ggf. noch mehr an Fehlermeldungen stehen.
Viele Grüße
Dennis
Hallo Dennis,
tatsächlich war es ein Problem der JAVA-Version (wie sollte es auch anders sein *facepalm*).
Ich habe mich zur Behebung an diese Anleitung gehalten:
https://lazyadmin.nl/home-network/raspberry-pi-java-update/
Zuletzt hatte ich noch versäumt, einen Reboot zu machen, aber endlich und mit
tail -f /usr/lib/unifi/logs/server.log
konnte ich dann nach Reboot feststellen, dass der unifi-Dienst anfing zu laufen und dann war alles gut.
Herzlichen Dank für die Rückmeldung & viele Grüße
Tobias
Nur als Info. Für den RPI 3 gibt es auch ein PoE Modul. Dann ist er ein vollwertiger bzw besserer Ersatz zum CloudKey. Der CloudKey stürzt zumindest bei mir ständig ab.
Hi Marc,
Danke für die Info. Das schaue ich mir mal an, dann kann ich mir das Netzteil sparen.
Viele Grüße
Dennis
In der aktuellsten Version des Controllers (5.10+) muss OpenJDK verwendet werden.
Neuerdings versucht UniFi beim starten ExitOnOutOfMemoryError als Flag zu setzen. Oracle Java 8 ist irgendwo auf Version 60 hängengeblieben und kann mit dem Flag nichts anfangen und schlägt damit fehl. Das passiert mir mit dem OpenJDK8 nicht.
Quelle: https://community.ubnt.com/t5/UniFi-Routing-Switching/Step-By-Step-Tutorial-Guide-Raspberry-Pi-with-UniFi-Controller/m-p/2696561/highlight/true#M135893
Hi Felix,
Danke für den Hinweis. Ich habe lange kein Update mehr gemacht. Das schaue ich mir mal an und aktualisieren den Artikel.
Viele Grüße
Dennis
Hallo Dennis,
leider ist deine Anleitung nicht mehr Aktuell. Java 8 kann so nicht mehr installiert werden. Kannst du mir dabei helfen?
das mit java kannst du ignorieren, wenn du raspian buster installiert hast, denn dann solltest du eine java version höher 9 haben
Hi Dennis,
zunächst vielen Dank für deine ausführliche Anleitung. Ich habe dieser folgend den Unifi Controller auf einem jungfräulichen Raspi 4 mit Buster installiert. Jedoch erreiche ich die Seite nicht. Bekomme ebenfalls die Message ERR_CONNECTION_REFUSED.
Ich habe deinen Lösungsvorschlag sudo service unifi status versucht und erhalte folgende Rückmeldung:
pi@raspberrypi:~ $ sudo service unifi status
● unifi.service – unifi
Loaded: loaded (/etc/systemd/system/unifi.service; enabled; vendor preset: en
Active: failed (Result: start-limit-hit) since Sat 2019-11-09 19:32:12 CET; 1
Process: 1995 ExecStart=/usr/lib/unifi/bin/unifi.init start (code=exited, stat
Process: 2022 ExecStop=/usr/lib/unifi/bin/unifi.init stop (code=exited, status
Nov 09 19:32:12 raspberrypi systemd[1]: unifi.service: Service RestartSec=100ms
Nov 09 19:32:12 raspberrypi systemd[1]: unifi.service: Scheduled restart job, re
Nov 09 19:32:12 raspberrypi systemd[1]: Stopped unifi.
Nov 09 19:32:12 raspberrypi systemd[1]: unifi.service: Start request repeated to
Nov 09 19:32:12 raspberrypi systemd[1]: unifi.service: Failed with result ’start
Nov 09 19:32:12 raspberrypi systemd[1]: Failed to start unifi.
Wie kann ich das Problem lösen.
Vorab schon mal vielen Dank für deine Unterstützung!
Viele Grüße
Matthias
Hallo Matthias,
schau mal hier ob Du etwas in den Logs findest:
Windows: C:\Users\\Ubiquiti UniFi\logs\ /Library/Application\ Support/UniFi/logs/
macOS: /Users/
UniFi Cloud Key and Debian/Ubuntu Linux*: /usr/lib/unifi/logs/
Viele Grüße
Dennis
Hallo Dennis,
weshalb deaktivierst du die MongoDB?
Viele Grüße,
Alex
Hi Alex,
der Unifi Controller startet eine eigene Instanz. Daher ist es nicht so gut kompatibel.
Viele Grüße
Dennis
Neue Version Unifi Controller: https://dl.ui.com/unifi/5.12.35/unifi_sysvinit_all.deb
Bin deinen Ausführungen gefolgt und es passt auch alles, aber Unifi startet nicht, im Log gibt es auch nichts ergiebiges, was auf einen Fehler hinweist.
sudo service unifi status
● unifi.service – unifi
Loaded: loaded (/etc/systemd/system/unifi.service; enabled; vendor preset: enabled)
Active: failed (Result: start-limit-hit) since Thu 2020-02-20 15:16:34 GMT; 7s ago
Process: 16536 ExecStart=/usr/lib/unifi/bin/unifi.init start (code=exited, status=0/SUCCESS)
Process: 16713 ExecStop=/usr/lib/unifi/bin/unifi.init stop (code=exited, status=0/SUCCESS)
Feb 20 15:16:34 nextcloudpi systemd[1]: unifi.service: Service RestartSec=100ms expired, scheduling restart.
Feb 20 15:16:34 nextcloudpi systemd[1]: unifi.service: Scheduled restart job, restart counter is at 5.
Feb 20 15:16:34 nextcloudpi systemd[1]: Stopped unifi.
Feb 20 15:16:34 nextcloudpi systemd[1]: unifi.service: Start request repeated too quickly.
Feb 20 15:16:34 nextcloudpi systemd[1]: unifi.service: Failed with result ’start-limit-hit‘.
Feb 20 15:16:34 nextcloudpi systemd[1]: Failed to start unifi.
Danke schon mal für die Hilfe
Bei mir ist der Service erfolgreich gestartet jedoch , lädt die https://IP: 8443 nicht ..
Was kann das sein ?