ubuntuusers.de

🛈 Aktuell gibt es im Wiki ca. 750 Artikel, die nur für Xenial getestet sind. Dies entspricht ca. 10% aller Wikiartikel. Damit diese im nächsten Frühjahr nicht alle archiviert werden müssen, ist eure Mithilfe gefragt!

UniFi Controller

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Ubiquiti_Logo.png

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.

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. Die Pakete können für heruntergeladen werden. Nachdem man sie für die korrekte Ubuntuversion und Architektur geladen hat, müssen DEB-Pakete noch installiert werden.

Hinweis!

Fremdpakete können das System gefährden.

Installation über die Fremdquelle

Um aus der Fremdquelle zu installieren, muss man unabhängig von der Ubuntu-Version die folgende Paketquelle freischalten:

Hinweis!

Zusätzliche Fremdquellen können das System gefährden.

deb http://www.ubnt.com/downloads/unifi/debian stable ubiquiti

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  

Anschließend noch die Paketlisten neu einlesen:

apt-get update 

und schließlich die Installation starten:

  • unifi (Fremdquelle)

Paketliste zum Kopieren:

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/init/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. Dabei ist in der Datei /etc/init.d/unifi (wie oben analog für die MongoDB beschrieben) die Option ENABLE_UNIFI=yes auf no umzustellen. Der Dienst lässt sich dann weiterhin manuell starten [4], wenn er benötigt wird.

Problembehebung

Fehlermeldungen beim Abschließen des Wizards

Standardmäßig wird aus den Repositories das benötigte Java nachinstalliert. Jedoch funktioniert die Unifi Controller Version v 5.8.24 nicht mit der, automatisch installierten, Java Version 9. Dieses Problem äußert sich darin, dass der Wizard nicht beendet werden kann. Nach dem letzten Schritt erscheint oben rechts in der Ecke lediglich die Warnmeldung "Ein Fehler ist aufgetreten." Schaut man in die Logs, sieht man zB folgendes:

[2018-07-13 15:46:58,634] <webapi-39> ERROR [ApiServlet] - Servlet.service() for servlet [ApiServlet] in context with path [] threw exception [Servlet execution threw an exception] with root cause
java.lang.NoSuchMethodError: method resolution failed
at com.ubnt.ace.super.K.õô0000(Unknown Source)
at com.ubnt.ace.super.K.o00000(Unknown Source)
at com.ubnt.ace.super.K.o00000(Unknown Source)
at com.ubnt.ace.super.K.o00000(Unknown Source)
at com.ubnt.service.U.F.Ã’00000(Unknown Source)
at com.ubnt.ace.api.O0oO.o00000(Unknown Source)
at com.ubnt.ace.api.ApiServlet.service(Unknown Source)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at com.ubnt.ace.view.AuthFilter.Ã’00000(Unknown Source)
at com.ubnt.ace.view.AuthFilter.doFilter(Unknown Source)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.filters.CorsFilter.handleNonCORS(CorsFilter.java:458)
at org.apache.catalina.filters.CorsFilter.doFilter(CorsFilter.java:177)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:607)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1139)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
at java.util.concurrent.ThreadPoolExecutor.runWorker(java.base@9-internal/ThreadPoolExecutor.java:1158)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base@9-internal/ThreadPoolExecutor.java:632)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(java.base@9-internal/Thread.java:804)

sollte dies der Fall sein, muss der Unifi Controller nochmals vom System deinstalliert werden, Java 8 JRE mittels

apt-get install openjdk-8-jre 

installiert und im Anschluss der Unifi Controller wieder installiert werden. Ein manuelles entfernen der falschen Javaversion und anschließendes installieren der richtigen, führt -ohne das erneute installieren des Controllers- leider nicht zum Erfolg.

Passwort Reset funktioniert nicht

In der Version 5.2.9 funktioniert die Passwort-Zurücksetzung noch nicht. Wer daher sein Admin-Passwort verlegt hat, muss entweder den Controller neu installieren, 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: 2.6.10
connecting to: 127.0.0.1:27117/ace
{
	"_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.

Diese Revision wurde am 16. März 2019 21:40 von BillMaier erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Internet, Netzwerk, Hardware