[[Vorlage(Getestet, bionic, focal)]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Editor: Einen Editor öffnen] [:Terminal: Ein Terminal öffnen] [:Dienste: Umgang mit Diensten] [:mit_Root-Rechten_arbeiten:] }}} [[Inhaltsverzeichnis()]] [[Bild(Ubiquiti_Logo.png, 64, align=left)]] Unter dem Label UniFi vertreibt die Firma [wikipedia:Ubiquiti_Networks: 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: {{{#!vorlage Paketinstallation 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 [https://help.ubnt.com/hc/en-us/articles/220066768-UniFi-How-to-Install-Update-via-APT-on-Debian-or-Ubuntu Fremdquelle] {en}, 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 == [[Vorlage(Fremdpaket, "Ubiquiti Networks", https://download.ubnt.com/unifi)]] == Installation über die Fremdquelle == {{{#!vorlage Warnung [:Fremdquellen:] können das System gefährden }}} [[Vorlage(Fremdquelle-auth, key 06E85760C0A52C50)]] Dann die Fremdquelle hinzufügen: {{{#!vorlage Befehl sudo add-apt-repository 'deb http://www.ubnt.com/downloads/unifi/debian stable ubiquiti' }}} Anschließend noch die Paketlisten neu einlesen: {{{#!vorlage Befehl apt-get update }}} und schließlich die Installation starten: {{{#!vorlage Paketinstallation unifi, Fremdquelle }}} = Inbetriebnahme = == Zugewiesener Speicherplatz == Der Unifi Controller nutzt eine [wikipedia:MongoDB: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. {{{#!vorlage 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: {{{#!vorlage Befehl # 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 {{{#!code basg ENABLE_MONGODB="yes" }}} ist umzustellen auf {{{#!code bash 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: {{{#!code bash 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: {{{#!code bash 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 Units:systemd Service Unit] gestartet. Der UniFi Controller ist über einen beliebigen graphischen Webbrowser unter einer der beiden folgenden Adressen anzusprechen: * `http://:8080` * `https://:8443` Bei einer lokalen Installation kann `` 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: {{{#!vorlage Tabelle 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: {{{#!vorlage Befehl 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: {{{#!vorlage Befehl sudo service mongodb restart }}} Dann ist über folgenden Befehl herauszufinden, unter welchem Benutzernamen man sein Konto hinterlegt hat: {{{#!vorlage Befehl 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] ): {{{#!vorlage Befehl 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): {{{#!vorlage Befehl 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 = * [https://www.ubnt.com ubnt.com] {en} * [https://help.ubnt.com/hc/en-us/articles/220066768-UniFi-How-to-Install-Update-via-APT-on-Debian-or-Ubuntu Installationsanleitung auf ubnt.com] {en} # tag: Netzwerk, Hardware, Internet