
Spis treści
Cześć!
Dzisiaj przedstawię Ci kroki jakie trzeba wykonać, aby dokonać migracji UniFi Controllera w wersji kontenerowej opracowanej przez LinuxServer.io do nowego rozwiązania – UniFi Network Application. Ostatnie zmiany wprowadzone przez Ubiquiti oraz decyzja autorów LinuxServer.io dotyczące zaprzestania kontynuacji wsparcia starego kontenera z UniFi Controller, wymagają od administratorów sieci zrozumienia i przeprowadzenia skutecznej migracji. Poniżej przedstawię kroki, które należy podjąć w tym procesie.
Wstęp do naszego projektu
Poradnik podzielę na kilka etapów – od przygotowania kopii zapasowej, po utworzenie folderów na nowy kontener do Network Application i finalne uruchomienie za pomocą Docker Compose. Czynności będę wykonywać na Synology DS920+, uruchamianie kontenerów będę dokonywać za pomocą zainstalowanego już wcześniej Portainer.
Czym jest UniFi Controller?
UniFi Controller firmy Ubiquiti służy jako centralny hub dla urządzeń sieciowych serii UniFi, zapewniając bezpieczną komunikację i zarządzanie. Ten kontroler jest odpowiedzialny za konfigurację i bieżącą konserwację podłączonych urządzeń, takich jak punkty dostępowe. Po dodaniu urządzenia do kontrolera, tworzy się trwałe połączenie – przyrównać można to do relacji rodzica z dzieckiem, gdzie kontroler pełni rolę „matki” dla „dzieci” w postaci urządzeń sieciowych. Wszystkie informacje o każdym z urządzeń są przechowywane w lokalnym systemie plików kontrolera.
Interesującym aspektem jest to, że urządzenia serii UniFi nie wymagają ciągłej pracy kontrolera do swojego funkcjonowania. Po otrzymaniu konfiguracji od kontrolera, mogą działać niezależnie, przesyłając jedynie statystyki dotyczące ich działania do kontrolera dla celów monitoringu i analizy.
Jaka jest różnica między UniFi Controller, a UniFi Network Application?
Niczym, Ubiquiti postanowiło od wersji kontrolera 6.2 używać zamiast Controller to określenie Network Application.
Przygotowanie
W celu przygotowania poradnika, przyjmiemy ustaloną nazwę domeny oraz określone nazwy konfiguracyjne, przedstawione poniżej. Dla dostosowania konfiguracji do własnych potrzeb, należy zastosować ustawienia według indywidualnych wymagań.
- Pełna nazwa domeny (FQDN) Synology DSM: https://dsm.xyz.com,
- Pełna nazwa domeny (FQDN) UniFi Controller / Network Application: https://unifi.xyz.com,
- Zainstalowany na Synology poprzez Docker: Portainer, AdGuard Home,
- Zainstalowany na Synology poprzez Centrum pakietów: Container Manager,
- Na serwerze DHCP routera, wskazany adres IP serwera DNS (AdGuard Home) zainstalowanego na Synology,
- Istniejące urządzenia np. punkty dostępu (Access Point), które były zarządzane przez UniFi Controller, a chcemy je przenieść do UniFi Network Application.
Hardware
Nginx Proxy Manager (opcjonalnie)
Na moim Synology skonfigurowałem reverse proxy przy użyciu Nginx Proxy Manager, co umożliwia dostęp do panelu administracyjnego UniFi za pomocą adresu URL (https://unifi.xyz.com) zamiast standardowego adresu IP. Jest to rozwiązanie zwiększające wygodę zarządzania urządzeniami UniFi, oferując łatwiejszy do zapamiętania i bardziej intuicyjny adres dostępny w sieci LAN. Jesteś zainteresowany tym jak to zrobić? Zajrzyj tutaj.
Dodatkowo, lokalne przekierowanie DNS realizowane jest przez serwer DNS AdGuard, również działający na serwerze Synology w wersji kontenerowej.
Oprogramowanie
W ofercie Ubiquiti dostępne są również zewnętrzne urządzenia służące jako kontrolery, takie jak Cloud Key. Jednakże, istnieje możliwość zastąpienia ich przez rozwiązanie bazujące na Docker Compose, co stanowi alternatywę zwłaszcza dla tych, którzy preferują bardziej elastyczne i zintegrowane środowiska informatyczne. Szczegóły tego rozwiązania omówię w dalszej części artykułu.
UniFi Network Application od LinuxServer.io
Dostęp do repozytorium kontenerowej wersji UniFi Network Application stworzonej przez LinuxServer.io jest dostępna tutaj. W oparciu o te dane będziemy tworzyć nowy Stack w Portainerze.
Baza danych
Warto wspomnieć, że niektóre modele serwerów Synology, w tym wspomniany wyżej model DS920+, nie obsługują technologii AVX (Advanced Vector Extensions). AVX to zestaw instrukcji procesora zapewniających lepszą wydajność w zadaniach wymagających intensywnej obliczeniowo pracy, takich jak przetwarzanie danych czy operacje graficzne. Z tego powodu, w tej instrukcji będziemy korzystać z wersji MongoDB 4.4, która jest kompatybilna z urządzeniami nieposiadającymi wsparcia dla AVX.
MongoDB jest nowoczesną, otwarto-źródłową bazą danych typu NoSQL, która przechowuje dane w formacie podobnym do JSON, znane jako BSON. Jest to system bazodanowy o wysokiej wydajności, skalowalności i elastyczności, szczególnie przydatny w aplikacjach wymagających szybkiego przetwarzania dużych ilości złożonych danych.
Krok 1 – Konfiguracja w Synology DSM
File Station
- Zaloguj się na swoim serwerze plików Synology i uruchom aplikację File Station.
- Następnie, przejdź do wcześniej utworzonego folderu współdzielonego o nazwie docker. Wewnątrz tego folderu znajdź i otwórz folder unifi.
- Następnym krokiem jest utworzenie podfolderu o nazwie network-application wewnątrz folderu unifi.
- Po udanej migracji i instalacji nowego Unifi Network Application, stary folder zawierający poprzedni kontroler będzie mógł zostać usunięty. To posprząta przestrzeń i uporządkuje strukturę folderów zgodnie z aktualną konfiguracją.
- W artykule nie będziemy omawiać dodatkowych folderów związanych z UniFi Poller, które są częścią mojej konfiguracji. UniFi Poller to kontenery służące do zbierania danych telemetrycznych z kontrolera UniFi, które następnie mogą być wizualizowane w Grafanie. Skupimy się na innych aspektach konfiguracji i migracji kontrolera UniFi.
- Wewnątrz folderu network-application, utwórz dwa podfoldery: config oraz mongodb. Podfolder config będzie służył do przechowywania plików konfiguracyjnych, natomiast mongodb będzie przeznaczony do zarządzania danymi bazy danych.
Krok 2 – Stwórz skrypt do stworzenia bazy danych
- Powróć do folderu network-application, a następnie otwórz folder mongodb. W tym miejscu utwórz plik o nazwie init-mongo.js. Następnie, wklej do tego pliku zawartość kodu, który jest podany poniżej. Ten plik będzie używany do inicjalizacji i konfiguracji bazy danych MongoDB dla Unifi Network Application. Upewnij się, że kod odpowiada specyfikacjom potrzebnym dla Twojej konfiguracji – przede wszystkim zmień hasło domyślne.
db.getSiblingDB("unifi").createUser({user: "unifi", pwd: "unifi", roles: [{role: "readWrite", db: "unifi"}]});
db.getSiblingDB("unifi_stat").createUser({user: "unifi", pwd: "unifi", roles: [{role: "readWrite", db: "unifi_stat"}]});
Krok 3 – Pobierz kopię zapasową z UniFi Controller
Aby przenieść istniejące konfiguracje Site z obecnego kontrolera do nowego repozytorium Network Application, ważnym krokiem jest pobranie kopii zapasowej istniejących urządzeń i konfiguracji. Pozwoli to na łatwe przeniesienie wszystkich ustawień i zarejestrowanych urządzeń do nowego środowiska, eliminując konieczność ponownej rejestracji i konfiguracji każdego urządzenia od początku. Ułatwi to proces migracji, zachowując wszystkie istotne ustawienia i dane.
- Aby rozpocząć proces migracji, zaloguj się do panelu administracyjnego obecnego kontrolera.

- W panelu administracyjnym kontrolera, znajdź i wybierz ikonę koła zębatego, która reprezentuje ustawienia (Settings). Ta opcja znajduje się w menu po lewej stronie ekranu i zapewnia dostęp do różnych konfiguracji i ustawień systemu.

- Po wybraniu ustawień, przejdź do zakładki System. Ta część interfejsu użytkownika zawiera istotne funkcje zarządzania systemem.

- W kolejnym kroku, w zakładce System, przejdź do sekcji Backups, która znajduje się w menu w górnej części strony. Ta sekcja umożliwia zarządzanie kopiami zapasowymi systemu, co jest niezbędne do zabezpieczenia Twoich danych i ustawień przed migracją do nowego środowiska UniFi Network Application.

- Kliknij przycisk Download w sekcji Backups, aby pobrać najnowszą kopię zapasową utworzoną przez obecny kontroler UniFi.

- Po kliknięciu, zaczekaj chwilę, aż system przygotuje i pobierze plik z kopią zapasową. Ten plik będzie zawierał wszystkie niezbędne dane i ustawienia, które są wymagane do późniejszej migracji do nowego środowiska UniFi Network Application.
Krok 4 – Aktualizacja Stack Docker Compose w Portainerze
Ten krok polega na zalogowaniu się do Portainera i zmodyfikowaniu istniejącego stosu (Stack) poprzez wprowadzenie nowego kodu Docker Compose. W tej nowej konfiguracji Docker Compose uwzględnisz oddzielne usługi dla bazy danych MongoDB oraz dla Unifi Network Application. W ten sposób zintegrujesz zarówno bazę danych, jak i aplikację w ramach jednego rozwiązania kontenerowego.
- Zaloguj się na swoje konto i przejdź do interfejsu administracyjnego Portainera.
- Jeśli korzystasz z systemu jednokrotnego logowania Authentik, możesz ułatwić sobie proces logowania, integrując Portainer z Authentikiem. Instrukcje dotyczące integracji znajdziesz w dedykowanym poradniku.
- Wybierz swoje środowisko (eng: Environments) w którym będziesz edytować konfigurację utworzonego Docker Compose. Następnie przejdź do Stacks i wybierz utworzony Stack o nazwie unifi.

- W górnej części pod nazwą Stack details przejdź do Editor.
- Poprzednią zawartość Docker Compose odnoszącego się do repozytorium UniFi Controllera podmień na nowy kod przedstawiony poniżej:
---
version: "3.9"
services:
unifi_net_app_db:
image: mongo:4.4
container_name: unifi_network_application-db
hostname: unifi-net-app-db
mem_limit: 2g
cpu_shares: 768
healthcheck:
test: ["CMD", "mongo", "--eval", "db.adminCommand('ping')"]
interval: 10s
timeout: 10s
retries: 5
start_period: 20s
networks:
- unifi_network
volumes:
- /volume1/docker/unifi/network-application/mongodb/init-mongo.js:/docker-entrypoint-initdb.d/init-mongo.js:ro
- /volume1/docker/unifi/network-application/mongodb:/var/lib/mongo:rw
- /volume1/docker/unifi/network-application/mongodb:/data/configdb:rw
- /volume1/docker/unifi/network-application/mongodb:/data/db:rw
restart: unless-stopped
unifi_net_app_server:
image: linuxserver/unifi-network-application:8.0.26
container_name: unifi_network_application-server
hostname: unifi-net-app-server
environment:
- PUID=1026
- PGID=100
- TZ=Europe/Warsaw
- MONGO_HOST=unifi-net-app-db
- MONGO_USER=unifi
- MONGO_PASS=unifi
- MONGO_PORT=27017
- MONGO_DBNAME=unifi
- MEM_LIMIT=1024
- MEM_STARTUP=1024
- MONGO_TLS=false
volumes:
- /volume1/docker/unifi/network-application/config:/config
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
restart: unless-stopped
networks:
- unifi_network
depends_on:
- unifi_net_app_db
networks:
unifi_network:
name: unifi_network
ipam:
config:
- subnet: 192.168.200.0/24
Parametry
Podczas uruchamiania możemy określić parametry konfigurujące kontenery (takie jak te zawarte powyżej). Parametry te są rozdzielane dwukropkiem i wskazują kolejno <zewnętrzny>:<wewnętrzny>. Na przykład, -p 8080:80 sprawi, że port 80 wewnątrz kontenera będzie dostępny z zewnątrz kontenera, z IP hosta, na porcie 8080.
Time Zone
- Po wklejeniu kodu w edytorze, zmień wartość dla strefy czasowej (TZ), wybierając odpowiednią strefę czasową z tej listy.
PUID i PGID
Gdy używasz woluminów (parametru -v), mogą wystąpić kwestie związane z uprawnieniami pomiędzy systemem operacyjnym gospodarza a kontenerem. Aby obejść te problemy, dajemy możliwość wyboru identyfikatora użytkownika (PUID) oraz grupy użytkownika (PGID).
- Przed wklejeniem powyższego kodu w obszar edytora, zmień wartości numerów dla PUID i PGID na swoje własne wartości PUID i PGID. Wartości PUID i PGID odnoszą się do danego konta istniejącego na Synology. Musisz wpisać swoje własne wartości.
- Aby sprawdzić swoje wartości PUID i PGID na systemie Linux, możesz użyć terminala. Wpisz komendę id nazwa_użytkownika (zastępując nazwa_użytkownika własną nazwą użytkownika na komputerze). Wynik tej komendy pokaże Twoje identyfikatory PUID (UID) i PGID (GID). Te wartości są niezbędne do prawidłowej konfiguracji kontenerów Docker, gdyż pozwalają na dopasowanie uprawnień plików i katalogów w kontenerze do Twojego systemu.
id jkowalski
uid=1026(jkowalski) gid=100(users) groups=100(users),101(administrators)
Krok 5 – Uruchom Network Application i wgraj kopię zapasową kontrolera
Ostatni krok polega na uruchomieniu Network Application wraz z MongoDB i zaimportowaniu wcześniej pobranej kopii zapasowej z poprzedniego kontrolera.
Po uruchomieniu nowego środowiska Unifi Network Application, będziesz miał możliwość wgrania zapisanych ustawień i konfiguracji, dzięki czemu wszystkie urządzenia i ustawienia sieciowe zostaną przywrócone w nowym systemie bez potrzeby ręcznej rekonfiguracji. To ułatwi szybkie przystosowanie się do nowego środowiska i zapewni ciągłość działania sieci.
Logowanie
- Zaloguj się, korzystając z adresu https://unifi.xyz.com. Należy pamiętać, że pierwsze uruchomienie i konfiguracja bazy danych mogą zająć trochę czasu.
- Po uruchomieniu, zacznijmy od wybrania opcji przywrócenia konfiguracji z poprzedniego kontrolera, klikając na Restore Server from a Backup na dole ekranu,
- Następnie wybierz plik z kopią zapasową i potwierdź chęć jej wgrania. Proces przywracania ustawień może trochę potrwać.

- Po zakończeniu tego procesu, Twoje urządzenia powinny być już prawidłowo zintegrowane z nowym środowiskiem Network Application.
- Gotowe! 🚀
Dodatkowe źródła i informacje
- Controller vs Network Application: https://www.reddit.com/r/Ubiquiti/comments/ngjjf1/controller_vs_network_application/
Przeczytaj także
- TVHeadend: Przewodnik instalacji na Synology w Docker Compose / Jak zainstalować TVHeadend na Synology z Docker Compose. Praktyczny przewodnik krok po kroku dla zaawansowanych użytkowników.
- Jak wykonać test prędkości Internetu na Raspberry Pi / Sprawdź prędkość internetu na Raspberry Pi za pomocą speedtest-cli. Odkryj, jak skonfigurować i używać narzędzia do pomiaru prędkości.
- ADS-B: Instalacja i konfiguracja odbiornika na Raspberry Pi / Odkryj tajniki instalacji i konfiguracji własnej anteny ADS-B na Raspberry Pi. Rozwijaj umiejętności i śledź samoloty w czasie rzeczywistym.
- Traccar: Przewodnik instalacji na Synology w Dockerze / Przewodnik krok po kroku: Instalacja Traccar na Synology za pomocą Docker. Skuteczne śledzenie pojazdów na własnym serwerze.
- Traccar: Konfiguracja komunikacji z GPSem w Dockerze / Krok po kroku jak umożliwić komunikację z Traccar GPS. Przy użyciu Docker Compose otwórz porty dla zarządzania i odbierania danych GPS.
Dodaj komentarz