UniFi von jacobalberty im Docker richtig konfigurieren

Status
Für weitere Antworten geschlossen.

xxJJxx

Benutzer
Mitglied seit
18. Okt 2017
Beiträge
28
Punkte für Reaktionen
0
Punkte
1
Hallo,

ich habe schon in diesem Thread Ubiquity UniFi Wireless Controller versucht rauszubekommen, wie man den oben genannten UniFi Controller richtig im Docker konfiguriert.
Tommi2day hat auch schon sehr gute Signale gesetzt, doch leider hat es bei mir noch nicht klick gemacht. Liegt wahrscheinlich an meiner fehlenden Kenntnis mit der Kommandozeilensteuerung :(

Nun zu meinem Problem:

Ich habe den UniFi Controller via Anleitung von iDomix installiert und da wurde z.B. gesagt, man sollte den Ordner unter /var/lib/unifi anlegen. Gemacht getan!

Doch nun lese ich HIER, dass das veraltete Ordnerstrukturen sind und man jetzt /unifi/data oder eben nur /unifi anlegen soll, ebenso für das Zertifikat /unifi/cert (was man wohl erst mappen muss???) Kann ich das einfach ändern oder muss ich alles neu anlegen?

Ebenso wird der Controller mit Root-Rechten gestartet und das kann man wohl ändern. Tommi2day hat auch da schon gute Signale gesetzt, doch weiß ich leider nicht genau wo ich diese wie eintragen soll? Habe im Container unter Bearbeiten den letzten Reiter "Umwelt" gefunden, wo ich verschiedene Variablen eingeben kann. Muss ich dort die neuen Variablen für den angelegten User angeben und wie bekomme ich die User Id raus?

Bei jacobalberty steht:

RUNAS_UID0

Default: false

This is used to determine whether or not the UniFi service runs as a privileged (root) user.

UNIFI_UID and UNIFI_GID

Default: 999 for both

These variables set the UID and GID for the user and group the UniFi service runs as when RUNAS_UID0 is set to false


Wäre klasse wenn ich von euch Schritt für Schritt an die Hand genommen werde. Versuche ja zu lernen, aber diese Einstellungen für Docker-Varianten von "Paketen" ist für mich trotz vielem Lesen irgendwie der pure Bahnhof.

Danke für eure Hilfe

PS: Habe einen extra User mit gewissen Rechten angelegt und per cat /etc/passwd die UID raus bekommen.
 
Zuletzt bearbeitet:

monsieur_s

Benutzer
Mitglied seit
15. Jan 2010
Beiträge
71
Punkte für Reaktionen
0
Punkte
6
Ist zwar schon älter aber ich hab mich auch gerade damit beschäftigt.

Der Folder "/var/lib/unifi" ist tatsächlich veraltet, würde aber aktuell (Controller v5.6.26) noch funktionieren. Besser ist, wenn du stattdessen "/unifi" angibst, da wohl irgendwann in Zukunft nur noch das existieren wird. In der neuen Variante hat sich auch die Ordnerstruktur leicht geändert. Unten siehst du ein Beispiel wie ich das in Docker konfiguriert habe und wie danach die Struktur auf der Diskstation aussieht. Du brauchst nicht zwingend alle Ordner und beim starten des Container werden die zwingend gebrauchten Folder erstellt.

Screen Shot 2017-12-29 at 09.37.17.png

Screen Shot 2017-12-29 at 09.39.39.jpg


Bezüglich der UID/GID, da hat Tommy2day eigentlich schon erwähnt was man machen muss, halt einfach ohne commands. Ich hab dir unten die zwei Varianten etwas besser erklärt.

1. Entweder gibst du dem unifi Verzeichnis mit "chown" auf deinem NAS die Rechte so wie sie in den ENVIRONMENT Variablen (also UID 999 und GID 999) stehen. Wenn du die "unifi" Zeile vor und nach dem "chown" anschaust siehst du was passiert.

Rich (BBCode):
xyz@Diskstation:~$ ls -alht /volume1/docker/
total 0
drwx------  1 1028 users 118 Dec 29 09:13 unifi
drwxrwxrwx+ 1 root root   34 Dec 28 14:59 .
drwxr-xr-x  1 root root  570 Dec 23 00:27 ..
drwxrwxrwx+ 1 root root    8 Dec 22 23:49 @eaDir

xyz@Diskstation:~$ sudo chown 999:999 -R /volume1/docker/unifi/

xyz@Diskstation:~$ ls -alht /volume1/docker/                   
total 0
drwx------  1  999   999 118 Dec 29 09:13 unifi
drwxrwxrwx+ 1 root root   34 Dec 28 14:59 .
drwxr-xr-x  1 root root  570 Dec 23 00:27 ..
drwxrwxrwx+ 1 root root    8 Dec 22 23:49 @eaDir


2. Oder halt du erzeugst einen neuen User im Synology Webgui, gibst dem neuen User nur die Rechte für den von dir erstellten Shared Folder und liest die UID/GID von diesem neuen User via /etc/passwd aus. Nicht vergessen danach die UID/GID Environment Variablen im Docker Container an deinen neuen User anzupassen. Der "chown" Umweg brauchst du nur, wenn du in einem Unterverzeichnis die Rechte ändern möchtest, weil soweit ich das auf die Schnelle gesehen habe, kannst du im Synology Webgui die Rechte nur pro Shared Folder setzen. Ich persönlich hab einen docker Shared Folder auf dem NAS und darin alle Container, d.h. ich möchte nicht unbedingt dem neuen User die Rechte für alle Container geben, entsprechend würde ich hier auch mit chown arbeiten.
Diesen Weg hab ich nicht ausprobiert, da für mich das obere absolut ausreichend war, sollte aber theoretisch genau so gehen.

Hoffe das war nun klar?

Gruss

EDIT: gerade gesehen das im anderen Thread ja alles beantwortet wurde und der Container bei dir läuft. Egal, dann gibts halt jetzt hier zusammenfassend falls mal jemand sucht noch die Lösung ;-)
 

xxJJxx

Benutzer
Mitglied seit
18. Okt 2017
Beiträge
28
Punkte für Reaktionen
0
Punkte
1
Moin und vielen Dank für die ausführliche Erklärung.

Ja, der Docker läuft und wenn man den updaten muss habe ich nun festgestellt, dass man gar kein Verzeichnis angeben muss auch "/unifi" nicht mehr. Ich muss nur noch die U-und GID anpassen und die beiden Felder (Name fällt mir gerade nicht ein) von "true" auf "false", dann läuft es auch. Alle Verzeichnisse sind irgendwie schon automatisch eingebunden. Kannst du das bestätigen?

Hatte es einfach getestet, da eben die Verzeichnisse aufgelistet waren, dort wo man auch die U- und GID anpasst, somit dachte ich mir, wozu noch mal extra als Pfad angeben?
 

monsieur_s

Benutzer
Mitglied seit
15. Jan 2010
Beiträge
71
Punkte für Reaktionen
0
Punkte
6
Du meinst die environment variablen BIND_PRIV & RUNAS_UID0, genau, die muss man auf "false" setzen damit das funktioniert.

Bezüglich Verzeichnisse und deren Verknüpfung, kommt drauf an wo du genau meinst. Also die Verknüpfung zwischen Docker Container und den Daten auf deinem NAS müssen aus meiner Sicht zwingend gesetzt werden, sonst sind die Daten nach einem Upgrade weg (da innerhalb vom Docker Container). Falls du aber innerhalb der Environment Variablen meinst, da hast du natürlich recht, die sind alle immer korrekt per Default, da musst du nichts mehr ändern.

Hier noch zur Verdäutlichung, die brauchts zwingend, sieht man dann auch im Skript unten von mir (-v /volume1/docker/unifi:/unifi)
Screen Shot 2018-01-16 at 20.58.49.png


Unten siehst du mein Update Skript. Damit wird direkt der alte Docker Container gestoppt, gelöscht und ein neuer mit der aktuellsten Version installiert, ohne das man übers GUI etwas klicken muss :). Ich hab bei mir die unifi Folder Berechtigung auf die Default Environment Variable 999:999 geändert, so muss ich nichts verändern an den Docker Default Einstellungen bei nem Update. Mein Controller läuft zudem im L2 Adopt Mode.

Rich (BBCode):
sudo docker pull jacobalberty/unifi:latest

docker stop unifi-controller-latest || true && docker rm unifi-controller-latest  || true

docker run -d --init --name unifi-controller-latest --restart=unless-stopped  --net=host -e BIND_PRIV='false' -e RUNAS_UID0='false' -v /volume1/docker/unifi:/unifi jacobalberty/unifi:latest
 

xxJJxx

Benutzer
Mitglied seit
18. Okt 2017
Beiträge
28
Punkte für Reaktionen
0
Punkte
1
Moin, danke für die ganzen Infos und deinem Update Skript. Ich habe jetzt von 5.6.22 -> 5.6.26 und danach auch auf 5.6.29 ein Update gemacht ohne jeweils den Mount-Pfad "/unifi" anzugeben. ich habe das Gefühl, dass das setzen des Pfades nur wichtig ist, wenn die Dateien nicht unter "/unifi" zu finden wären, quasi nicht per Default-Pfad zu finden wären. In diesem Fall muss man den Pfad wohl setzen? Hat bei mir zumindest funktioniert. Kann aber auch sein, dass es bei der ersten Einrichtung nötig ist, aber bei Updates nicht mehr relevant?

Kannst du mir dein Update Skript so anpassen, dass die UID und die GID noch mit drin wären, so kann ich das auch nutzen. Ich verwende nicht die Variablen 999:999, war mir zu unsicher.

Danke und viele Grüße
 

monsieur_s

Benutzer
Mitglied seit
15. Jan 2010
Beiträge
71
Punkte für Reaktionen
0
Punkte
6
Das Skript kann ich schlecht für deinen Anwendungsfall anpassen, da ich nicht genau weiss wie du deinen heutigen Docker Container aufgesetzt hast. Z.b. ob du im Bridge Modus bist oder wie du deinen Container nennst. Das muss alles passen sonst hast du schlussendlich zwei Container am laufen und der AP wird unter Umständen nicht mehr erkannt. Du kommst wohl nicht drum rum mal kurz die docker run Dokumentation anzuschauen: https://docs.docker.com/manuals/.

Die UID und GID solltest du mit "-e UNIFI_UID=<ZAHL> -e UNIFI_GID=<ZAHL>" hinzufügen können.

Gruss
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat