Lokalny kontroler UniFi – pełna kontrola nad Twoją siecią
UniFi to jedno z tych rozwiązań, które szybko zdobywa zaufanie administratorów sieci – szczególnie tam, gdzie liczy się kontrola nad danymi, bezpieczeństwo i prostota zarządzania. Kluczową zaletą tego ekosystemu jest możliwość uruchomienia kontrolera lokalnie, we własnej infrastrukturze, bez wysyłania informacji o sieci do zewnętrznych chmur czy zagranicznych serwerów. Dzięki temu zachowujemy pełną suwerenność nad konfiguracją, ruchem i logami naszej sieci, co ma ogromne znaczenie zwłaszcza w środowiskach firmowych i infrastrukturalnych.
W materiale pokazany został praktyczny sposób uruchomienia UniFi na serwerze z Debianem przy użyciu Dockera i Docker Compose. Kontroler oparty jest o bazę MongoDB, a całość konfiguracji została sprowadzona do czytelnego pliku docker-compose.yml, co pozwala szybko postawić, odtworzyć lub przenieść środowisko w inne miejsce. Dzięki temu nawet awaria serwera nie oznacza utraty sieci – wystarczy backup i kilka minut, aby wszystko przywrócić do działania.
Dużo uwagi poświęcono portom i bezpieczeństwu. Okazuje się, że do poprawnego działania infrastruktury nie trzeba wystawiać „wszystkiego na świat” – w praktyce wystarczą tylko dwa kluczowe porty: jeden do zarządzania panelem administracyjnym i drugi do komunikacji urządzeń z kontrolerem. Reszta to funkcje opcjonalne, które warto świadomie włączać tylko wtedy, gdy są naprawdę potrzebne.
Bardzo ciekawym elementem jest sposób adopcji urządzeń. Access pointy UniFi mogą automatycznie odnajdywać kontroler w tej samej sieci, można je również dodać ręcznie przez SSH, a najbardziej eleganckim rozwiązaniem jest wykorzystanie lokalnego DNS-a. Wystarczy, że router będzie rozwiązywał nazwę unifi na adres IP kontrolera – wtedy każde nowe urządzenie podłączone do prądu samo zgłosi się do adopcji, bez klikania, aplikacji i ręcznej konfiguracji.
Po dodaniu pierwszego access pointa tworzona jest sieć Wi-Fi, która automatycznie rozgłasza się na wszystkich kolejnych urządzeniach. UniFi pokazuje pełną topologię sieci, podłączonych klientów, zużycie pasma i umożliwia zarządzanie każdym elementem z jednego panelu. Co ważne – z poziomu kontrolera można nawet uzyskać dostęp do konsoli urządzeń i wykonywać na nich operacje diagnostyczne, co pokazuje jak dużą władzę ma administrator nad infrastrukturą.
Na końcu backupy – jeden z najważniejszych elementów całego systemu. UniFi potrafi wykonywać automatyczne kopie zapasowe konfiguracji, statystyk i bazy danych, a wszystkie kluczowe pliki znajdują się w jasno określonych katalogach. Dzięki temu łatwo zabezpieczyć je dodatkowym backupem i mieć pewność, że w razie awarii sieć da się szybko odtworzyć w innym miejscu.
To wszystko sprawia, że UniFi jest rozwiązaniem, które łączy w sobie prostotę, dużą funkcjonalność i realną kontrolę nad bezpieczeństwem danych – bez kompromisów i bez oddawania kluczowej infrastruktury w cudze ręce.
Project GitHub Link https://github.com/linuxserver/docker-unifi-network-application
Plik konfiguracyjny docker compose
docker-compose.yaml:
---
services:
unifi-db:
image: mongo:${MONGO_TAG_VERSION}
container_name: unifi-db
env_file: .env
volumes:
- ./mongodb:/data/db
- ./init-mongo.sh:/docker-entrypoint-initdb.d/init-mongo.sh:ro
restart: unless-stopped
unifi-network-application:
image: linuxserver/unifi-network-application:${UNIFI_TAG_VERSION}
container_name: unifi-app
env_file: .env
volumes:
- ./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
Plik ze zmiennymi (koniecznie dostosuj hasła) .env
PGID=1000
TZ=Etc/UTC
MONGO_USER=unifi
MONGO_PASS=unifi-pass
MONGO_HOST=unifi-db
MONGO_PORT=27017
MONGO_DBNAME=unifi
MONGO_AUTHSOURCE=admin
MONGO_INITDB_ROOT_USERNAME=root
MONGO_INITDB_ROOT_PASSWORD=root-pass
MEM_LIMIT=1024
MEM_STARTUP=1024
MONGO_TLS=24 #optional
MONGO_TLS= #optional
MONGO_TAG_VERSION=8.0-noble
UNIFI_TAG_VERSION=10.0.162-ls111
Skrypt inicjujący bazę danych MongoDB dla aplikacji
init-mongo.sh
#!/bin/bash
if which mongosh > /dev/null 2>&1; then
mongo_init_bin='mongosh'
else
mongo_init_bin='mongo'
fi
"${mongo_init_bin}" <
Skrypt inicjujący bazę danych MongoDB dla aplikacji
init-mongo.sh
arp -a | grep 6a:ec:48
Logowanie do urządzenia
ssh ubnt@$AP-IP
pass: ubnt
Przekierwoanie urządzenia dl naszego kontrolera
set-inform http://$address:8080/inform
Resetowanie urządzenia z CLI
syswrapper.sh restore-default
Struktura katalogów
unifi/
├─┬─ config – application
│ ├─┬ data – unifi data
│ │ └─┬ backup
│ │ └─ autobackup – unify backup
│ └── logs – unifi logs
├── mongodb – database folder
├── .env – variables of the entire installation
├── docker-compose.yaml – ddocker compose configuration
└── init-mongo.sh – mongodb initial script