Dies ist eine mobil optimierte Seite, die schnell lädt. Wenn Sie die Seite ohne Optimierung laden möchten, dann klicken Sie auf diesen Text.

Linux [How-To] Unifi Controller via docker-compose aufsetzen

    Nobody is reading this thread right now.
Hallo zusammen,

als steilen Einstand (ist mein erster Post) möchte ich gleich mal eine Anleitung loswerden. Die Installation eines WLAN-Controllers kann für viele Nutzer, gerade wenn diese des Englischen nicht so sehr mächtig sind, eine schwer überwindbare Hürde darstellen und wird bestimmt schon den einen oder anderen davon abgehalten haben, sich überhaupt einen Unifi WLAN Accesspoint zuzulegen. Völlig zu unrecht! Die Dinger sind schweinegut und einen Controller zu installieren ist eigentlich super easy. Hier beschreibe ich einen Quick&Dirty-Ansatz ohne spezielle Härtung. Das bedeutet: Es reicht für den Hausgebrauch. Komme bitte nicht auf die Idee, das hier auf einem Cloudserver oder sonstwie offen am Internet zu betreiben.

Gebraucht wird folgendes:
* Linux-Installation (egal ob auf einem PC, in einer VM oder auf einem Raspberry Pi)
* Internetverbindung (nur zum Download der Images)
* Unifi WLAN AP (oder zumindest die Vorfreude darauf)

Los geht's:
1. Als Basis könnt ihr eine Linux-Distribution eures Geschmacks verwenden. Das kann Debian/Raspbian sein, ebenso gut aber auch CentOS oder was anderes. Wichtig ist, dass docker-ce für die Distribution verfügbar ist und dass ihr Root-Zugriff auf das System habt. Beschrieben wird hier Debian/Raspbian, es sollte auf Ubuntu aber analog funktionieren. Ich empfehle, dass ihr euch per SSH an das Linux-Gerät verbindet (z.B. von Windows aus über PuTTY). Dazu braucht ihr die IP-Adresse des Linuxsystems, welche ihr aus der Installation noch kennen solltet.
2. Login als Root. Raspbian-User: Login als pi / raspberry und dann ein beherzter
Bash:
sudo -i
3. Erst mal saubermachen:
Bash:
apt-get remove docker docker-engine docker.io containerd runc
3a: Raspbian-Benutzer:
Bash:
curl -fsSL https://get.docker.com -o get-docker.sh | sh -
3b: Debian-Benutzer:
Bash:
# erst mal Repository-Info updaten und die Abhängigkeiten installieren
apt update && apt -y install apt-transport-https ca-certificates curl gnupg lsb-release vim
# Key fürs Docker Repository installieren
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# Docker Repository hinzufügen
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian   $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
# Repository-Info updaten
apt update
# Docker-CE installieren
apt -y install docker-ce docker-ce-cli containerd.io
4 (optional): hello-world Container aufblasen als Funktionstest
Bash:
docker run hello-world
Die Ausgabe sollte so aussehen:
Bash:
root:~/ # docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
b8dfde127a29: Pull complete
Digest: sha256:308866a43596e83578c7dfa15e27a73011bdd402185a84c5cd7f32a88b501a24
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/

For more examples and ideas, visit:
https://docs.docker.com/get-started/
5. Docker-Compose installieren:
Bash:
curl -L "https://github.com/docker/compose/releases/download/1.29.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version
# Beim letzten Kommando sollte sowas hier rauskommen:
# root:~/ # docker-compose --version
# docker-compose version 1.27.4, build 40524192

Zwischenstand: Hurra! Wir haben nun die Basis, um darauf sog. Docker-Compose-Stacks zu betreiben. Ein solcher Stack ist z.B. der Unifi-Controller.
6. Um den Stack anzulegen:
Bash:
# Verzeichnisse erstellen
mkdir -p /opt/docker-compose-stacks/unifi_wlan/data
# Stackbeschreibung anlegen
vim /opt/docker-compose-stacks/unifi_wlan/docker-compose.yml
7. Ihr landet in einem Editor, der mit der Tastatur gesteuert wird. Hier gebt ihr folgendes ein:
Bash:
:set mouse-=a
8. Nun drückt den Buchstaben i auf der Tastatur und fügt (per Rechtsklick) folgendes ein:
version: '3'
services:
unifi-controller:
container_name: unifi.controller
network_mode: "host"
image: jacobalberty/unifi:latest
restart: unless-stopped
volumes:
- './data/lib:/var/lib/unifi'
- './data/log:/var/log/unifi'
- './data/run:/var/run/unifi'
ports:
- '3478:3478/udp'
- '10001:10001/udp'
- '6789:6789/tcp'
- '8080:8080/tcp'
- '8880:8880/tcp'
- '8443:8443/tcp'
- '8843:8843/tcp'
environment:
- TZ=Europe/Berlin
labels:
- 'unifi-controller'
9. Gebt nun aufeinanderfolgend folgendes ein:
ESC --> : (Doppelpunkt) --> wq! --> EINGABETASTE / ENTER
10. Der Stack ist nun fertig. Zeit zum Runterladen:
Bash:
cd /opt/docker-compose-stacks/unifi_wlan && docker-compose pull
11. Wenn das Runteladen und Entpacken durch ist:
Bash:
docker-compose up -d
12. Nach ein paar Minuten Bedenkzeit einen Browser öffnen und mit https://<ip-des-linuxsystems>:8443 die Oberfläche des Controllers öffnen. Die Zertifikatswarnung kann ignoriert werden (meistens gibt es unten auf der Warnseite einen Link, mit dem man das Laden fortsetzen kann). Ab dann kann der Controller ganz normal eingerichtet werden.

Hinzufügen von APs

Layer 2 Adoption

Das o.g. Beispiel für die docker-compose.yml setzt das Netzwerk für den Controller auf das des Linuxsystems (anstelle eines gebrückten Netzwerks). Das bedeutet, dass neue APs normalerweise einfach so hinzugefügt werden können sollten. Sollte das nicht gehen, gibt es noch folgende Methoden:

Layer 3 Adoption

The default example requires some l3 adoption method. You have a couple options to adopt.

Adoption IP erzwingen

Unter Settings -> Controller im Feld "Controller Hostname/IP" die IP-Adresse des Linuxsystems eingeben und einen Haken in "Override inform host with controller hostname/IP" setzen. Danach "save" klicken und in einer Root-Sitzung "docker-compose -f /opt/docker-compose-stacks/unifi_wlan/docker-compose.yml restart" eingeben.


SSH Adoption

Die schnellste Methode, einen AP anzulernen, ist diesen direkt über die Adresse des Controllers zu informieren. Dazu den AP anschließen, seine IP herausfinden (das geht in der Oberfläche eures Routers), sich per SSH auf diese IP verbinden (z.B. über PuTTY) und folgendes ausführen:

mca-cli
set-inform http://<linuxsystem-ip>:8080/inform

Weitere Möglichkeiten

Die Möglichkeiten, einen AP aufzunehmen, findet ihr auf der .

Update des Controllers
Das Update ist denkbar einfach:
Bash:
# Controller stoppen
cd /opt/docker-compose-stacks/unifi_wlan && docker-compose stop
# Sicherheitskopie der Daten machen
cp -a data data_`date --iso`
# Neues Image ziehen
docker-compose pull
# Stack wieder hochfahren
docker-compose up -d

Änderungshistorie:
14.04.2021 - 13:04 Uhr - Compose-Version auf 3 geändert wegen network_mode
 
Hallo und herzlich Willkommen bvlgy im Forum,

das nenne ich mal einen ersten gelungenen Post!

Ist die Anleitung von dir selber erstellt worden, oder woher hast du sie?

VG Gatzi
 
Die habe ich selber erstellt, weil ich gestern etwas Pflege an meinem Controller betrieben habe und mir beim Durchsehen der Foren hier dachte, dass sowas irgendwie noch fehlt. Einzig die Adoption-Methoden habe ich grob übersetzt aus dem Git-Repository des Menschen, der das Docker-Image der Unifi-Controller bereitstellt:
Mit Docker-Compose lassen sich noch viel schönere Schweinereien anrichten (gerade auch wenn man ein Homelab betreibt und so Dinge wie einen DNS im Netzwerk hat). Bin da innerhalb der letzten paar Monate echt auf den Geschmack gekommen.
 
Hi, danke für die Anleitung. Kann ich das damit gleichzeitig mit einem Open VPN Server auf einem Raspberry laufen lassen?

Habe z.zt den Controller nur auf einem Windows PC kaufen, wenn ich was ändern will. Der muss ja nicht permanent laufen. Wäre aber schön wenn.

Danke und Gruß

Gesendet von meinem LM-V450 mit Tapatalk
 
Hi,
absolut kein Problem, solange der OVPN Server keinen dieser Ports belegt:
Code:
- '3478:3478/udp'
- '10001:10001/udp'
- '6789:6789/tcp'
- '8080:8080/tcp'
- '8880:8880/tcp'
- '8443:8443/tcp'
- '8843:8843/tcp'

Hat schon ein paar Vorteile, wenn der Controller dauernd läuft. Man kann z.B. rückwirkend sehen, was immer so los war

Grüße
bvlgy
 
Für die Nutzung dieser Website sind Cookies erforderlich. Du musst diese akzeptieren, um die Website weiter nutzen zu können. Erfahre mehr…