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
2. Login als Root. Raspbian-User: Login als pi / raspberry und dann ein beherzter
3. Erst mal saubermachen:
3a: Raspbian-Benutzer:
3b: Debian-Benutzer:
4 (optional): hello-world Container aufblasen als Funktionstest
Die Ausgabe sollte so aussehen:
5. Docker-Compose installieren:
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:
7. Ihr landet in einem Editor, der mit der Tastatur gesteuert wird. Hier gebt ihr folgendes ein:
8. Nun drückt den Buchstaben i auf der Tastatur und fügt (per Rechtsklick) folgendes ein:
9. Gebt nun aufeinanderfolgend folgendes ein:
ESC --> : (Doppelpunkt) --> wq! --> EINGABETASTE / ENTER
10. Der Stack ist nun fertig. Zeit zum Runterladen:
11. Wenn das Runteladen und Entpacken durch ist:
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
mca-cli
set-inform http://<linuxsystem-ip>:8080/inform
Update des Controllers
Das Update ist denkbar einfach:
Änderungshistorie:
14.04.2021 - 13:04 Uhr - Compose-Version auf 3 geändert wegen network_mode
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
Sie müssen registriert sein, um Links zu sehen.
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
Bash:
apt-get remove docker docker-engine docker.io containerd runc
Bash:
curl -fsSL https://get.docker.com -o get-docker.sh | sh -
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
Bash:
docker run hello-world
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/
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
Bash:
:set mouse-=a
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'
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'
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
Bash:
docker-compose up -d
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
Sie müssen registriert sein, um Links zu sehen.
.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