~/CodeBlog.at

Ein halbkreativer Entwickler über alles zwischen C# und TYPO3.

UniFi Cloud Controller auf SYNOLOGY NAS

Ich hab mich schon länger gewundert, dass ich in meiner Cloud Key Gen2+ Oberfläche nie mehr ein Update angeboten bekam. Mit dem Ausbau des neuen Büros werde ich das Netzwerk auch um einen neuen Switch erweitern. Dieser soll ein 24er mit PoE werden. Laut Datenblatt braucht dieser aber die Version 7.x vom Controller. Meiner läuft aber noch auf 6.0.43. Daher wollte ich manuell ein Update machen. Nach langer Suche fand ich heraus, dass man dieses auch manuell anstoßen kann und zwar über SSH. Also wollte ich mich mit dem Controller über SSH Verbinden: „Connection refused.“. Die Verbindung war also nicht möglich. Kam mir komisch vor, also versuchte ich mal einen Neustart. Brachte nix. Also dann in der GUI ein Backup machen und runterladen. Danach ein Factory Reset. Dieses ging auch noch und dann kam am Controller die Meldung: „Boot failed“. Der ist also im Eimer. Vermutlich ist die HDD hin oder zumindest deren Boot-Sektor. Soll wohl öfters vorkommen.

Schneller Workaround:
Den Controller mit Docker auf der SYNO laufen lassen

Und so geht’s:

1.) Docker auf der SYNO installieren.

Das geht im GUI einfach im Package Manager. Dieser Schritt erstellt auch gleich einen neue Freigabe namens „docker“.

2.) Passendes Image finden und verwenden.

In der Docker-App gibts dann den Reiter „Registrierung“. Hier hab ich nach „UniFi“ gesucht und bin auf folgende Images gestoßen:

https://registry.hub.docker.com/r/jacobalberty/unifi/
https://registry.hub.docker.com/r/linuxserver/unifi-controller/

Wobei ich mich für ersteres entschieden hab. Allerdings in der Version 6.0.43, da ich mir nicht sicher bin, ob ich mein altes Back-Up auch in einer neuen Version einspielen kann. Bei Gitlab geht das zB nicht.

Die Einstellungen vom Container hab ich von hier (https://blog.andreas-schreiner.de/2021/01/13/unifi-controller-installation-auf-einer-synology-nas/) übernommen, wobei sich manche Eingebamasken mittlerweile geändert haben aber die wichtigsten Einstellungen waren das Netzwerk (nicht bridge, sondern host) und die Settings BIND_PRIV und RUNAS_UID0 auf false zu setzen. Den Ordner am NAS unter /docker/Unifi-Controller hab ich vorher schon erstellt und nun nur mehr ausgewählt.

Screenshots erspare ich mir an dieser Stelle. Vielleicht ein anderes Mal.

Danach musste ich nur mehr die verwendeten Ports in der Firewall auf der SYNO freigeben und schon kam ich zumindest mal nur GUI vom Controller.

Nun schon das nächste Problem: Passwort geht nicht. Zurücksetzen ebenso nicht.

Also im Netz diese Hilfen gefunden: https://www.youtube.com/watch?v=r_SfenlfyY0 und https://serverthings.com/how-to-reset-unifi-controller-password-hosted-on-windows/.

Passwort zurücksetzen in der MongoDB:

Dazu muss man zuerst den Username herausfinden, dies geht über diesen Befehl: (ausführen kann man die in der SYNO GUI beim Container im Terminal)

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

Dies liefert dann eine Liste mit den Admins aus der DB.

Nun musste ich das Passwort für meinen User zurücksetzen:

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

Wo ich als neues Passwort einfach: $6$OzJJ0heL$XyD5qt4pviLieuj8CMFbnSc9VYvxDyzYpH7dHC8wmaLwKv9xwyDxBiMx3GcT8nEdIa7XJbqlZo39jhfbQBXRM/ genommen hab. (Klartext: password123).

Ebenso hab ich bemerkt, dass mein User 2 Leerzeichen am Ende hatte. Also hab ich den Befehl umgebaut und auch noch die beiden Leerzeichen entfernt.

Danach konnte ich mich endlich im Controller anmelden. Und natürlich sofort wieder auf mein altes Passwort geändert.

Geräte werden nicht erkannt:

Ich hab wie in der einen Anleitung beschrieben in der PiHole den Record für die SYNO gesetzt, aber der Neustart des APs hat nix gebracht. Ich befürchte die UniFi’s haben andere DNS Server hinterlegt als die PiHole ist. Dann bringt das ganze so nix.

Erster Versuch war der AP. Bei diesem hab ich keine Ahnung, welche Zugangsdaten ich für SSH brauche. Daher hab ichs bei der USG versucht. Hier gings.

Dann via Console die Inform URL umgestellt mit:

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

Jetzt erkennt er im Controller auch wieder meine USG. Um die anderen Devices kümmere ich mich dann später.

Update auf aktuellste Controller Version:

Zuerst muss ich in der Docker-App das neueste Image von meinem Container runterladen. Also den :latest Tag. Danach hab ich wie hier (https://community.synology.com/enu/forum/1/post/132066) beschrieben den Container exportiert, dann im JSON File die Version geändert und den Container wieder importiert und dann den neuen gestartet.

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