Unifi Controller als TrueNAS Jail

Einleitung

Die UniFi Controller Management-Schnittstelle ermöglicht die Verwaltung von UniFi-Geräten und die Anzeige von Netzwerkstatistiken.
Die Software wird häufig auf einem Windows- oder Mac-PC installiert, bietet aber keine solide Basis für einen dauerhaften Betrieb.
Da FreeBSD Jails so schön schlank sind und FreeBSD auch von Ubiquiti unterstützt wird, bietet sich eine Installation dort an.
Wenn wir es schon machen, dann richtig.

unifi1

Ziele

Ziel dieser Anleitung ist der Betrieb eines Unifi Controllers auf Basis von TrueNAS oder FreeBSD. Ohne Jail genügt ein pkg install unifi8 und das Thema ist durch. Um es aber noch perfekter zu machen, insbesondere was die Unabhängigkeit der Einstellungen von der Jail angeht, gehen wir hier nochmal genauer darauf ein.

NEU: Für ganz ungeduldige habe ich einen Konsole only Abschnitt. Da gibts nur Befehle, keine Erklärungen.

Letzte Aktualisierung:

  • 04.02.2024: Finale Version, kleinere Anpassungen
  • 23.01.2024: Initiale Version

Voraussetzungen

  • TrueNAS Core oder reiner FreeBSD Server mit installiertem iocage
  • IP Adresse des UNIFI Jails ist bekannt
  • Hostname des UNIFI Jails ist bekannt (z.B. unifi.domain.local) und per internem DNS erreichbar

Generell sollten solche Dienste in einer eigenen Umgebung eingerichtet werden. Das macht nicht nur die Sicherheit, sondern auch die Wartung wesentlich einfacher. Jails können relativ einfach gesichert werden und es sind nur die Pakete installiert, die absolut notwendig sind.

Diagramm

Damit sieht das Setup lokal so aus:

                    ┌───────────────────────────────────────────┐
                    │   TrueNAS              Optional:          │
                    │ ┌──────────────────┐  ┌─────────────────┐ │
                    │ │ jail/unifi       │  │ tank/jail_data  │ │
LAN: 0.0.0.0:8443  ─┼─┼─► unifi  ────────┼──┼─► unifi/data    │ │
                    │ └──────────────────┘  └─────────────────┘ │
                    └───────────────────────────────────────────┘

Jail erstellen

Es wird ein eigenes Jail benötigt sollte PostgreSQL als zentraler Datenbank Server auch für andere Anwendungen dienen. Hier nehmen wir pgsql als Jail Namen und es wird auf jeden Fall die Option allow_sysvipc benötigt.

Optional: Datenverzeichnisse

Dies ist eher für fortgeschrittenen Anwender gedacht, die schon etwas Erfahrung besitzen.

Wie bestimmte Datenverzeichnisse außerhalb des Jails abgelegt werden, wird hier erklärt. Es werden folgende Verzeichnisse benötigt:

└── /mnt/tank/jails_data
    └── unifi
        └── data  # Ablage für Daten (Im Jail: /usr/local/share/java/unifi/data mit id:975/unifi)

Optional: Benutzer erstellen

Sollten die Daten außerhalb des Jails gespeichert werden, dann müssen die Berechtigungen passen und wird in einem separaten Artikel erklärt. Hier wird der Benutzer- und Gruppenname: unifi mit der ID: 975 benötigt.

Unifi lässt sich alternativ exzellent aus einer Backup (unf-)Datei wiederherstellen.

Jail einrichten

Die Webshell in TrueNAS ist ausreichend für die simple Konfigurationen, daher bleibt SSH diesmal deaktiviert.

  • Jail starten: TrueNAS / Jails / unifi / Start
  • Jail Shell öffnen: TrueNAS / Jails / unifi / Shell

Paketquelle anpassen

Paketquellen sollten angepasst werden, siehe separater Artikel.

Pakete installieren & Dienste aktivieren

Nun die Paketquelle mit pkg update aktualisieren und dann die benötigten Pakete mit pkg install -y unifi8 installieren.
Dienst mit service unifi enable aktivieren, damit dieser beim Start des Jails automatisch startet.

Unifi

Konfiguration erstellen

Hurra, es wird keine Konfiguration benötigt, beim ersten Start wird alles automatisch erstellt.

Dienste starten

Damit sind wir nun am Ende der Vorbereitungen angelangt und Unifi wird mit service unifi start gestartet.

Registrierung

Nun erfolgt der erste Aufruf von Unifi, in dem die Netzwerkeinrichtung erfolgt.
Hierzu mit dem Lieblingsbrowser nun die IP oder Hostname des Gitea Jails aufrufen:
https://IP:8443 oder http://HOSTNAME:8443

unifi

Backup

Backups werden automatisch einmal pro Woche von der UNIFI-Software durchgeführt.
Diese sind in dem Ordner /usr/local/share/java/unifi/data/backup gespeichert.

Konsole

pkg install -y unifi8
service unifi enable
service unifi start

Voilá