LinuxServer.io Migration von unifi-controller zu unifi-network-application
Bevor etwas umgestellt wird, solltest du unbedingt ein Backup anlegen.
Dieses sollte über das Unifi Webinterface erstellt und heruntergeladen werden, weil es zum Ende benötigt wird!
Vorwort
Linuxserver.io hat den Support für das Image linuxserver/unifi-controller eingestellt, wie auf der offiziellen Webseite gezeigt wird: https://docs.linuxserver.io/images/docker-unifi-controller/
Deswegen sollten bestehende Installationen auf das neue Image migriert werden. Weil dieses aber keine MongoDB eingebaut hat, muss ein externer Datenbank-Server erstellt werden.
Die Anleitung besteht aus folgenden Schritten:
- Backup über das Webinterface erstellen
- MongoDB Container erstellen
- alten Unifi Container stoppen
- neuen Unifi Container erstellen
- Backup über Webinterace einspielen
Netzwerk
In dieser Anleitung wird ein eigenes Netzwerk für die MongoDB und den Unifi Controller erstellt.
Durch die festen IP-Adressen kann ein davorgestellter nginx und andere Dienste einfacher konfiguriert werden.
Container | IP-Adresse |
---|---|
MongoDB | 172.25.0.2 |
Unifi Controller | 172.25.0.3 |
Die Ports der Anwendungen können entweder in der docker-compose.yml freigegeben werden, oder deine Firewall übernimmt dies, je nach persönlicher Präferenz.
Werden die Port-Freigaben von Docker nicht benötigt, kannst du diese in den docker-compose.yml Dateien einfach entfernen.
Backup erstellen & herunterladen
Das Erstellen des Backups kann je nach Datenmenge etwas dauern
- Einloggen
- Einstellung
- Backup
- “Backup / Wiederherstellen”
- Backup herunterladen (& den gewünschten Zeitraum der migriert werden soll wählen)
- Datei herunterladen
Konfiguration
Beim Unifi-Controller und Init Skript muss noch das Kennwort gesetzt werden, also das “xxxxx” ersetzen!
Docker-Compose
version: "3"
services:
unifi-db:
# aktuell ist offiziell Mongo <= 4.4 supported!
image: docker.io/mongo:4.4
container_name: unifi-db
volumes:
- /srv/docker/containers/unifi-db/db:/data/db
- /srv/docker/containers/unifi-db/init-mongo.js:/docker-entrypoint-initdb.d/init-mongo.js:ro
restart: unless-stopped
networks:
default:
ipv4_address: 172.25.1.2
ports:
- 27017:27017
unifi-controller:
image: lscr.io/linuxserver/unifi-network-application:latest
container_name: unifi-controller
environment:
PUID: 1000
PGID: 1000
MONGO_USER: "unifi"
MONGO_PASS: "xxxxxx"
MONGO_HOST: "172.25.1.2"
MONGO_PORT: "27017"
MONGO_DBNAME: "unifi"
MEM_LIMIT: "1024"
MEM_STARTUP: "1024"
volumes:
- /srv/docker/containers/unifi-controller/config/:/config
restart: unless-stopped
networks:
default:
ipv4_address: 172.25.1.3
ports:
- 8443:8443
- 3478:3478/udp
- 10001:10001/udp
- 8080:8080
- 1900:1900/udp #optional
- 8843:8843 #optional
- 8880:8880 #optional
- 6789:6789 #optional
- 5514:5514/udp #optional
networks:
default:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.25.1.0/24
driver_opts:
com.docker.network.bridge.name: br_unifi
MongoDB Init Skript
Erst legen wir den Container Ordner an, damit im Anschluss das Init-Skript angelegt werden kann.
Das Skript legt beim ersten Start die Logindaten des Unifi Controllers an.
PW="xxxxx"
mkdir -p /srv/docker/containers/unifi-db/
cat - > /srv/docker/containers/unifi-db/init-mongo.js <<EOF
db.getSiblingDB("unifi").createUser({user: "unifi", pwd: "${PW}", roles: [{role: "dbOwner", db: "unifi"}]});
db.getSiblingDB("unifi_stat").createUser({user: "unifi", pwd: "${PW}", roles: [{role: "dbOwner", db: "unifi_stat"}]});
EOF
Docker stop / start
Nun muss der alte Unifi Controller gestoppt werden, damit die Ports wieder freigegeben werden.
Danach kann die neue Umgebung hochgefahren werden.
docker stop <unifi-controller>
docker-compose up -d
optional: Reverse Proxy
Sollte ein reverse Proxy wie (nginx, Traefik, …) vor dem Controller stehen, muss das Backend angepasst werden auf 172.25.0.3:8443.
Abweichungen sind allerdings je nach deiner Umgebung durchaus möglich…
Backup einspielen
Nach kurzer Zeit sollte das Webinterface wieder verfügbar sein. Entweder über den Port 8443, oder den Reverse Proxy mit gewohnter URL. Das Portal bietet das Hochladen und Einspielen des Backups an. Hier muss die *.unf Datei, die zu Beginn heruntergeladen wurde, gewählt werden.
Je nach Größe des Backups, kann dies mehrere Minuten dauern.
Die Webseite lädt automatisch neu, wenn die Wiederherstellung durch ist.
Links
LinuxServer.IO - Unifi Controller Image
https://docs.linuxserver.io/images/docker-unifi-network-application/#docker-compose-recommended-click-here-for-more-info