Zum Inhalt springen

~/CodeBlog.at

UniFi Network Controller per Docker auf der Synology – mein Erfahrungsbericht

·4 Min. Lesezeit

Veröffentlicht
Überarbeitet

Was ist neu: Status heute, aktuelle Images und Container Manager ergänzt, Tippfehler im Passwort-Befehl korrigiert und Hinweis auf mongosh.

Kurz & knapp

Den UniFi Network Controller kann man mit dem Image jacobalberty/unifi im Container Manager einer Synology betreiben – wichtig sind Host-Netzwerk bzw. die Ports 8080, 8443, 3478/udp und 10001/udp. Ein vergessenes Passwort lässt sich direkt in der MongoDB (--port 27117, Datenbank ace) zurücksetzen, und Geräte, die den Controller nicht finden, holt set-inform http://<IP>:8080/inform per SSH zurück.

Getestet mit: UniFi Network 6.0.43 → 7.x auf Synology (Juli 2023)

Inhalt
  1. Und so ging’s
  2. Passwort zurücksetzen in der MongoDB
  3. Geräte werden nicht erkannt
  4. Update auf die aktuelle Controller-Version

Ich hab mich schon länger gewundert, dass mir meine Cloud-Key-Gen2+-Oberfläche nie mehr ein Update angeboten hat. Mit dem Ausbau des neuen Büros sollte das Netzwerk um einen neuen 24er-Switch mit PoE erweitert werden – und laut Datenblatt braucht der die Controller-Version 7.x. Meiner lief aber noch auf 6.0.43.

Also wollte ich das Update manuell per SSH anstoßen: „Connection refused.“ Neustart – brachte nix. Also in der GUI ein Backup gemacht und heruntergeladen, danach ein Factory Reset. Das ging noch, und dann kam am Controller die Meldung: „Boot failed“. Der ist also im Eimer.

Schneller Workaround: den Controller mit Docker auf der Synology laufen lassen.

Und so ging’s

  1. Docker auf der Synology installieren – im Paket-Zentrum. Dabei wird auch gleich eine neue Freigabe namens docker angelegt.

    Heute heißt das Paket Container Manager; die Oberfläche sieht etwas anders aus als 2023.

  2. Passendes Image finden. In der Docker-App unter Registrierung nach „UniFi“ gesucht und diese beiden gefunden:

    Und zwar bewusst in der Version 6.0.43, also derselben wie auf dem Cloud Key – ich war mir nicht sicher, ob sich mein Backup in einer neueren Version einspielen lässt. Bei GitLab geht das zum Beispiel nicht.

  3. Container einrichten. Die Einstellungen habe ich aus dieser Anleitung von Andreas Schreiner (öffnet in neuem Tab) übernommen. Die wichtigsten Punkte:

    • Netzwerk host statt bridge
    • die Variablen BIND_PRIV und RUNAS_UID0 auf false
    • als Volume einen vorher angelegten Ordner, z. B. /docker/Unifi-Controller
  4. Ports in der Synology-Firewall freigeben – danach kam ich zumindest schon mal auf die GUI des Controllers.

Passwort zurücksetzen in der MongoDB

Nächstes Problem: Das Passwort ging nicht. Zurücksetzen ebenso nicht. Im Netz habe ich dann dieses Video (öffnet in neuem Tab) und eine (inzwischen leider nicht mehr verfügbare) Anleitung gefunden. Die Befehle führt man im Terminal des Containers aus – das gibt’s in der Synology-Oberfläche direkt beim Container.

Zuerst den Benutzernamen herausfinden:

mongo --port 27117 ace --eval "db.admin.find().forEach(printjson);"

Das liefert eine Liste mit den Admins aus der Datenbank. Dann das Passwort für den eigenen User überschreiben (XXX = Benutzername):

mongo --port 27117 ace --eval 'db.admin.update({"name": "XXX"}, {$set: {"x_shadow": "$6$OzJJ0heL$XyD5qt4pviLieuj8CMFbnSc9VYvxDyzYpH7dHC8wmaLwKv9xwyDxBiMx3GcT8nEdIa7XJbqlZo39jhfbQBXRM/"}})'

Der lange Wert ist der SHA-512-Hash von password123 – damit kann man sich anmelden und sollte das Passwort natürlich sofort wieder ändern.

Dabei habe ich auch bemerkt, dass mein Benutzername zwei Leerzeichen am Ende hatte. Also den Befehl umgebaut und die Leerzeichen gleich mit entfernt – danach konnte ich mich endlich anmelden.

Geräte werden nicht erkannt

Wie in einer Anleitung beschrieben, habe ich im Pi-hole einen DNS-Eintrag für die Synology gesetzt – aber auch ein Neustart des Access Points brachte nix. Vermutlich hatten die UniFi-Geräte andere DNS-Server hinterlegt.

Beim Access Point wusste ich nicht, welche Zugangsdaten ich für SSH brauche, also hab ich’s beim USG versucht. Dort ging’s, und per Konsole habe ich die Inform-URL umgestellt:

set-inform http://<SYNOLOGY-IP>:8080/inform

Danach erkannte der Controller mein USG wieder.

Update auf die aktuelle Controller-Version

Zuerst in der Docker-App das neueste Image heruntergeladen (Tag latest). Danach habe ich, wie im Synology-Forum beschrieben (öffnet in neuem Tab), den Container exportiert, in der JSON-Datei die Version geändert, den Container wieder importiert und gestartet.

Lustigerweise hat er nach dem Update auf 7.x dann auch alle anderen UniFi-Geräte von selbst erkannt.

Häufige Fragen

Welches Docker-Image eignet sich für den UniFi Controller?

Ich habe jacobalberty/unifi verwendet, das bis heute gepflegt wird (aktuell UniFi Network 10). Das früher ebenfalls verbreitete linuxserver/unifi-controller ist veraltet; Nachfolger ist linuxserver/unifi-network-application, das eine separate MongoDB benötigt.

Welche Ports braucht der UniFi Controller?

Laut Image-Dokumentation 8080/tcp (Gerätekommunikation), 8443/tcp (Weboberfläche), 3478/udp (STUN) und 10001/udp (Geräteerkennung).

Wie setze ich das Passwort des UniFi Controllers zurück?

In der MongoDB des Controllers den Hash im Feld x_shadow des Admin-Users überschreiben, z. B. mit dem SHA-512-Hash von password123, anmelden und sofort ein neues Passwort setzen.

Warum findet der Controller meine UniFi-Geräte nicht?

Die Geräte kennen die neue Adresse des Controllers nicht. Per SSH auf dem Gerät mit set-inform http://<Controller-IP>:8080/inform die neue Adresse setzen.

Quellen & weiterführende Links

  1. jacobalberty/unifi (Docker Hub) (öffnet in neuem Tab) – Docker Hub
  2. jacobalberty/unifi-docker (README) (öffnet in neuem Tab) – GitHub
  3. linuxserver/unifi-network-application (öffnet in neuem Tab) – Docker Hub
  4. Container Manager (öffnet in neuem Tab) – Synology
  5. UniFi Controller Installation auf einer Synology NAS (öffnet in neuem Tab) – Andreas Schreiner
  6. MongoDB 6.0 Compatibility Changes (mongo shell entfernt) (öffnet in neuem Tab) – MongoDB Dokumentation

Geschrieben von

Christoph Schwob (öffnet in neuem Tab)

Ich bin Christoph Schwob, halbkreativer Entwickler aus Österreich und arbeite seit über 10 Jahren an und mit TYPO3. Hier sammle ich Lösungen, Code-Snippets und Notizen rund um TYPO3, macOS, Server, Homelab und alles andere.

Suche

Tippe einen Suchbegriff ein.