unifi: adoption свитча+U7-LR; фикс system_ip override + DNS unifi, host-mode откатан
- U7-LR не виделся = битый порт 5 свитча (PoE есть, линк down) -> порт 8 - stuck 'Принятие' = Docker bridge отдавал внутренний IP -> system_ip=10.0.0.196 - DNS unifi->10.0.0.196 на OpenWrt для автообнаружения - host networking сломал mongo-URI кэш + автодетект IP, откатан на bridge - USG физически не в сети (0 следов в БД) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -55,7 +55,30 @@ pct exec 140 -- bash -c 'cd /opt/unifi && docker compose restart'
|
|||||||
pct exec 140 -- bash -c 'cd /opt/unifi && docker compose pull && docker compose up -d' # апдейт
|
pct exec 140 -- bash -c 'cd /opt/unifi && docker compose pull && docker compose up -d' # апдейт
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Adoption устройств (2026-06-15, позже в тот же день)
|
||||||
|
|
||||||
|
Принимали **USW-Lite-16-PoE** (10.0.0.111) и **U7-LR**. Грабли:
|
||||||
|
|
||||||
|
### U7-LR не появлялся — физика порта свитча
|
||||||
|
Точка была в **порту 5** свитча: PoE подавался (Class 4, 4.41 Вт), но **линк down**, 0 пакетов, DHCP не получала; после передёргивания PoE детект вообще пропал (Class Unknown). → **битый порт/патч-корд**. Переткнули в **порт 8** — ожила: IP 10.0.0.243, линк 1000F, firmware 8.0.12. Вывод: «питание есть, а линка нет» = сначала кабель/порт, не контроллер.
|
||||||
|
|
||||||
|
### Stuck «Принятие» + ничего не автообнаруживается — Docker inform-host
|
||||||
|
Контроллер в Docker **bridge** отдавал устройствам inform-host = свой внутренний IP контейнера (`172.18.0.x`), до которого устройства не достучаться → adoption висит. Плюс заводская точка ищет `http://unifi:8080/inform`, а DNS-записи `unifi` не было.
|
||||||
|
|
||||||
|
**Фикс (рабочий, оставлен):**
|
||||||
|
1. **DNS на OpenWrt 10.0.0.1**: `uci add dhcp domain` → `name=unifi ip=10.0.0.196` → commit + `dnsmasq restart`. Теперь заводские устройства сами находят контроллер (как на Передельках).
|
||||||
|
2. **`system_ip=10.0.0.196`** в `/opt/unifi/config/data/system.properties` (был закомментирован `# system_ip=a.b.c.d`) + `docker restart unifi-network-application`. В логе стало `Current System IP: 10.0.0.196` (было `172.18.0.3`). Контроллер теперь отдаёт верный inform-host.
|
||||||
|
3. `set-inform http://10.0.0.196:8080/inform` на устройствах (ssh ubnt/ubnt) для немедленного появления.
|
||||||
|
|
||||||
|
Результат: оба `adopted:true` (проверено `docker exec unifi-db mongo unifi --eval 'db.device.find(...)'`).
|
||||||
|
|
||||||
|
### ⚠️ host networking НЕ применять (пробовал — откатил)
|
||||||
|
Переводил оба контейнера в `network_mode: host` — **сломалось**:
|
||||||
|
- linuxserver-образ кэширует mongo-URI в `system.properties` при первом старте и НЕ перечитывает env → в host остался `unifi-db:27017` (не резолвится) → `MongoTimeoutException`, краш-луп.
|
||||||
|
- контроллер в host автодетектил `Current System IP: 172.18.0.1` (docker-бридж), не 10.0.0.196.
|
||||||
|
Правильное решение — **оставить bridge + `system_ip` override**, а не host. Бэкап bridge-compose: `/opt/unifi/docker-compose.yml.bak-bridge-*`.
|
||||||
|
|
||||||
## Что осталось / на заметку
|
## Что осталось / на заметку
|
||||||
- Контроллер пустой — устройств UniFi в домашней сети (10.0.0.0/24) пока нет (роутер — OpenWrt). Готов к adopt новых AP/switch.
|
- **USG не adopt'ится — его физически нет в сети** (нет DHCP-аренды, нет на живых портах свитча, в БД контроллера 0 следов). Сначала запитать/воткнуть в живой порт; как появится — с DNS `unifi` + `system_ip` примется сам.
|
||||||
- Для adopt устройств из других подсетей — set-inform на UI или DNS `unifi → <ip>` (как на Передельках).
|
|
||||||
- `.196` — статика; убедиться, что вне DHCP-пула OpenWrt.
|
- `.196` — статика; убедиться, что вне DHCP-пула OpenWrt.
|
||||||
|
- При смене IP контроллера — обновить и DNS `unifi`, и `system_ip`.
|
||||||
|
|||||||
Reference in New Issue
Block a user