UniFi Controller
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 20.04 Focal Fossa
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Unter dem Label UniFi vertreibt die Firma Ubiquiti_Networks eine Reihe aktiver Netzwerkkomponenten, die über eine einfache Weboberfläche – den UniFi Controller – eingerichtet und gesteuert werden können. Dieser Controller basiert auf dem UniFi-Server, der mit dem Controller zusammen installiert wird und als Hintergrunddienst läuft. Diese Seite beschreibt die Inbetriebnahme dieses UniFi Controllers unter Ubuntu.
Vor der Installation¶
Das bei der Installation von Unifi vorgeschlagene Java-Paket openjdk-11 unter Bionic bzw. openjdk-14 unter Focal, ist nicht kompatibel. Die aktuelle Version 6.0.45 des UniFi Controller benötigt Java 8 JRE. Fehlt die korrekte Java-Version startet der Dienst nicht. Ein manuelles entfernen der falschen Javaversion und anschließendes installieren der Richtigen, führt, ohne das erneute installieren des Controllers, leider nicht zum Erfolg. Es ist also notwendig folgendes Paket zuerst zu installieren:
openjdk-8-jre
Befehl zum Installieren der Pakete:
sudo apt-get install openjdk-8-jre
Oder mit apturl installieren, Link: apt://openjdk-8-jre
Ist das Paket schon vorhanden erhält man eine entsprechende Meldung.
Installation¶
Der UniFi Controller steht in den offiziellen Quellen nicht zur Verfügung. Er kann entweder als deb-Paket direkt von der Ubiquiti-Seite heruntergeladen werden, oder man nutzt eine Fremdquelle 🇬🇧, die Ubiquity zur Verfügung stellt. Wenn man den UniFi Controller regelmäßig benötigt, um ein Netzwerk zu überwachen, ist die Nutzung der Fremdquelle der bessere Weg, da man dann automatisch mit Updates versorgt wird. Wenn man den Controller nur benötigt, um Netzwerkkomponenten einmalig einzurichten, genügt das deb-Paket.
Direkte Installation¶
Von Ubiquiti Networks werden DEB-Pakete ⮷ angeboten.
Syntaxfehler: Bedingungen erlauben nur einen Ausdruck pro Block.
Installation über die Fremdquelle¶
Achtung!
Fremdquellen können das System gefährden
Um die Fremdquelle zu authentifizieren, muss man den Signierungsschlüssel mit folgendem Befehl importieren:
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 06E85760C0A52C50
Dann die Fremdquelle hinzufügen:
sudo add-apt-repository 'deb http://www.ubnt.com/downloads/unifi/debian stable ubiquiti'
Anschließend noch die Paketlisten neu einlesen:
apt-get update
und schließlich die Installation starten:
unifi (Fremdquelle)
Befehl zum Installieren der Pakete:
sudo apt-get install unifi
Oder mit apturl installieren, Link: apt://unifi
Inbetriebnahme¶
Zugewiesener Speicherplatz¶
Der Unifi Controller nutzt eine Mongo-Datenbank. Für den Controller und für die MongoDB werden dabei für Log-Dateien über 6 GB Speicherplatz reserviert. Wenn auf dem Installationsmedium nicht so viel Platz zur Verfügung steht (oder nicht so viel Platz zur Verfügung gestellt werden soll), bestehen zwei Möglichkeiten: entweder lagert man die entsprechenden Log-Dateien aus, oder man weist das System an, mit kleineren Log-Dateien zu arbeiten. Für die erste Variante muss in verlinkbarer Umgebung genügend Speicherplatz vorhanden sein; die zweite empfiehlt sich nur, wenn vom System sonst keine MongoDBs genutzt werden.
Hinweis:
Wird keine der folgenden Maßnahmen ergriffen und stehen am Installationsort keine 6GB zur Verfügung, kann der Controller nicht gestartet werden.
1. Weg: Auslagerung der Log-Dateien¶
Nach der Installation liegen die betroffenen Log-Dateien einerseits in /var/lib/unifi/db/journal, andererseits in /var/lib/mongodb/journal. Sollen die Log-Dateien ausgelagert werden, müssen beide Verzeichnisse an einen Speicherort verschoben werden, auf dem genügend Platz zur Verfügung steht. Dieser Speicherort ist dann zu verlinken:
# Verschieben der Log-Dateien sudo mv -R /var/lib/unifi/db/journal /Ort/mit/Platz/unifi_journal sudo mv -R /var/lib/mongodb/journal /Ort/mit/Platz/mongodb_journal # Verlinken der Log-Dateien sudo ln -s /Ort/mit/Platz/unifi_journal /var/lib/unifi/db/journal sudo ln -s /Ort/mit/Platz/mongodb_journal /var/lib/mongodb/journal
2. Weg: Reduktion der Log-Dateien¶
Damit die MongoDB nicht von selbst die Log-Dateien anzulegen versucht, ist als erstes zu unterbinden, dass MongoDB automatisch als Hintergrunddienst läuft. Dazu muss die Datei /etc/mongodb.conf mit root-Rechten [2] geöffnet werden. Die Zeile
1 | ENABLE_MONGODB="yes" |
ist umzustellen auf
1 | ENABLE_MONGODB="no" |
Danach muss UniFi mitgeteilt werden, dass bloß kleine (oder auch gar keine) Log-Dateien anzulegen sind. Hierfür muss die Datei /usr/lib/unifi/data/system.properties mit root-Rechten [2] editiert werden. Um kleine Log-Dateien von je 128 MB statt je 1 GB anzulegen, ist bei der Zeile unifi.db.extraargs
das Kommentarzeichen (#
) zu entfernen und die Option --smallfiles
zu ergänzen:
1 | unifi.db.extraargs=--smallfiles
|
Um gar keine Log-Dateien anzulegen, ist bei der Zeile unifi.db.nojournal=false
das Kommentarzeichen (#
) zu entfernen und die Option auf true
zu setzen:
1 | unifi.db.nojournal=true |
Nun muss der UniFi-Server als Dienst neu gestartet werden [4], danach lässt sich der Controller normal benutzen.
Bedienung¶
Der UniFi Controller wird nach der Installation automatisch als systemd Service Unit gestartet. Der UniFi Controller ist über einen beliebigen graphischen Webbrowser unter einer der beiden folgenden Adressen anzusprechen:
http://<hostname>:8080
https://<hostname>:8443
Bei einer lokalen Installation kann <hostname>
durch localhost
oder 127.0.0.1
ersetzt werden; ansonsten ist die Server-IP einzutragen.
Beim ersten Aufruf wird der Nutzer aufgefordert, ein Admin-Konto anzulegen, über das die Steuerung der Netzwerkkomponenten von nun an von einem beliebigen Rechner aus unternommen werden kann (sofern der Host in Reichweite ist).
Die weiteren Möglichkeiten des Controllers (Statistiken zu einzelnen Netzwerkkomponenten und zu verbundenen Clients, Hauspläne mit der Reichweite einzelner Access-Points, etc.) unterscheiden sich unter Ubuntu nicht von anderen Betriebssystemen. Die Bedienung ist selbstklärend.
Änderung der Standard-Ports¶
Standardmäßig arbeitet UniFI mit folgenden Ports:
Standard-Ports von UniFi | |
Port | Dienst |
8080 | http-Schnittstelle |
8443 | https-Schnittstelle |
27117 | MongoDB-Schnittstelle |
Sämtliche Ports lassen sich in der Datei /usr/lib/unifi/data/system.properties umdefinieren, beim Bearbeiten sind Root-Rechte notwendig[5]. Dazu ist bei den entsprechenden Zeilen auch das Kommentarzeichen zu entfernen.
Temporäre Nutzung¶
Standardmäßig läuft der UniFi Server als ständiger Dienst auf dem System, auf das er installiert wurde. Wird der UniFi-Controller nur benötigt, um einen einzelnen Access-Point einzurichten oder ein kleines Netzwerk, das nicht ständig überwacht werden muss, so ist es sinnvoll, den Dienst auszuschalten. Man kann dazu folgenden Befehl verwenden:
sudo systemctl disable unifi
Der Dienst wird nun nicht mehr beim Systemstart geladen, kann aber weiterhin manuell gestartet werden.
Problembehebung¶
Passwort Reset funktioniert nicht¶
Wer sein Admin-Passwort verlegt hat, muss entweder den Controller neu installieren, wenn die Passwort-Rücksetzung nicht funktioniert, oder folgendes Brecheisen verwenden:
Zuerst ist sicherzustellen, dass die MongoDB läuft:
sudo service mongodb restart
Dann ist über folgenden Befehl herauszufinden, unter welchem Benutzernamen man sein Konto hinterlegt hat:
mongo --port 27117 ace --eval "db.admin.find().forEach(printjson);"
Das führt zu folgender Ausgabe (wobei die Option name
den gesuchten Benutzernamen ausgibt):
MongoDB shell version v3.6.3 connecting to: mongodb://127.0.0.1:27117/ace MongoDB server version: 3.6.3 { "_id" : ObjectId("0123456789abcdef01234567"), "name" : "NAME", "email" : "EMAIL", "x_shadow" : "IRGENDEIN-UNLESERLICHER-HASH", "time_created" : NumberLong(0123456789), "last_site_name" : "default", }
Nun ist ein neues Passwort zu erstellen (der Befehl mkpasswd findet sich im Paket whois [1] ):
mkpasswd -m sha-512
Der Passwort-Hash, den man erhält, ist nun über folgenden Befehl in die MongoDB einzutragen (sowohl "NAME"
als auch "PASSWORT-HASH"
sind durch die eigenen Angaben zu ersetzen):
mongo --port 27117 ace --eval 'db.admin.update( { "name" : "NAME" }, { $set : { "x_shadow" : "PASSWORT-HASH" } } )'
Danach kann man sich unter dem Benutzernamen mit dem neu erstellten Passwort normal anmelden.
Links¶