Schlagwort: Unifi

Ein Upgrade für den Homeserver Teil 7 – Unifi Controller

Seit gut drei Jahren betreibe ich einen RaspberryPi als Homeserver. Zunächst reichte dieser noch gut aus. Mit der Zeit wurde aber nicht nur die Zahl der Anwendungen, die auf dem Raspberry laufen, mehr, sondern auch die Leistungsanforderungen der Anwendungen selbst. Besonders meine ich damit die Influx Datenbank, die seit über drei Jahren jede Minuten um einen Datensatz der PV-Anlage größer wird. Die Datenbank braucht mittlerweile über 10 Minuten zum Starten. Auch diese Webseite braucht zum Laden deutlich länger, als sie sollte. Wenn ich den Raspberry komplett neu starte, braucht es ca. eine Stunde, bis alle Anwendungen wieder laufen. Das ist definitiv zu viel. Es sollte also ein neuer Rechner her. In dieser Artikelserie möchte ich davon berichten.


Übersicht aller Artikel dieser Serie


Was ist der Unifi Controller?

Der Unifi Controller ist eine Software, die benötigt wird, um Unifi Geräte einzurichten. Man kann diese grundsätzlich auch nur temporär zur Einrichtung der Geräte auf seinem Rechner laufen lassen. Lässt man ihn aber 24/7 laufen, so erhält man einige interessante Statistiken.

Installation des Unifi Controllers

Bis vor kurzem war es noch möglich, den Unifi Controller mit einem einzigen Container zu installieren. Mittlerweile wurde aber die Datenbank ausgelagert. Man braucht also zwei Container. Einen für die Datenbank und einen für Unifi selbst.

Dazu machen wir uns die Docker „Stacks“ zunutze. Ein Stack ist eine Einheit aus mehreren Containern (und Volumes).

Ich lege also einen neuen Stack in Portainer an:

Erstellen eines Docker Stacks

Diesem gebe ich einen Namen und füge folgenden Code im Webeditor ein.

Erstellen eines Docker Stacks mit Unifi Controller und DB

Die Volumes musst du bei dir natürlich anpassen (nur den Teil vor dem Doppelpunkt). Ebenso das Passwort für die DB.

Anschließend klicke ich auf „Deploy this stack“, um den Unifi Controller samt Datenbank zu starten. Öffnet man jetzt die Weboberfläche des Unifi Controllers unter Port 8443, so erhält man ein „404 – Not found“. Das liegt daran, dass es in der Datenbank weder den Benutzer noch die Datenbank delbst gibt.

Konfiguration der Datenbank

Um das zu ändern, wählen wir im Abschnitt „Containers“ unseren Container mit der Datenbank, in meinem Fall „unifi-db“.

Öffnen der Konsole der Datenbank

Dort klicken wir auf „Console“ und anschließend auf „connect“.

Öffnen der Konsole der Datenbank

In der Konsole angekommen, geben wir mongo ein, um in die Konsole der Datenbank zu kommen.

Konfigurieren der Datenbank für Unifi Controller

Dort legen wir einen Benutzer und zwei Datenbanken mit den Befehlen:

Das Passwort muss natürlich wieder das gleiche sein, wie das Passwort, was wir bei der Installation vom Unifi Controller angegeben haben.

Unifi Controller konfigurieren

Jetzt sieht man unter der Adresse https://IP_ADRESSE:8443 den Einrichtungsassistenten von Unifi:

Unifi Controller EInrichtungsassistent

Da ich von einem anderen Server umziehe, wähle ich hier den Punkt „Restore Server from a Backup“ und werde hier nicht weiter auf die Einrichtung eingehen.

Ändern des Inform Host

Der Unifi Controller in Docker erkennt nicht von selbst, welche IP-Adresse er hat. Damit man Geräte hinzufügen kann, muss er dies aber wissen, damit er die Adresse den Geräten mitteilen kann.

In den Systemeinstellungen des Unifi Controllers kann man das festlegen:

Ändern des Inform Host in Unifi Controller

Fazit

Der Unifi Controller ist jetzt fertig installiert und konfiguriert!

Unifi Accesspoints per API deaktivieren

Im Unifi Controller gibt es die Möglichkeit, WLAN-Netzwerke zeitgesteuert zu (de-)aktivieren. Was allerdings nicht möglich ist, ist nur einzelne Accesspoints zeitgesteuert ein- und auszuschalten. Eine kurze Suche im Netz ergab, dass man das wohl über die API des Unifi Controllers lösen kann:

1. ID des Unifi-Geräts herausfinden

An dieser Stelle sind die Entwicklertools im Browser nützlich. Einmal geöffnet, sieht man im „Network“ Tab alle Netzwerkanfragen, die die Seite stellt. Ändert man nun eine Einstellung eines Accesspoints (Unter „Unifi Devices“), sieht man eine Anfrage in folgendem Format:

https://IP:8443/api/s/default/rest/device/XXXXXXXXXXXXXXXXXXXXXXXX

Eine HTTP Anfrage des Unifi Controllers

Die 24-stellige ID am Ende der URL ist die ID von dem Gerät, das du gerade bearbeitet hast.

2. Skript zum Aktivieren und Deaktivieren

Folgendes Bashskript verwende ich, um den AP zu aktivieren:

Das Skript kann auf einem beliebigen Server, z.B. einem RaspberryPi (auf dem auch mein Unifi Controller läuft) laufen und per Cronjob automatisiert werden.

In den Zeilen 3, 5, 7 und 9 müssen die Werte entsprechend angepasst werden. Um den AP zu deaktivieren, muss in Zeile 15 das „false“ in ein „true“ geändert werden.

Quelle: https://community.ui.com/questions/DISABLE-ENABLE-your-AP-with-time-scheduler-Turn-off-radio-transmitter/3c32439b-a731-4de9-9130-d82d68f409c0