Files
knowledge-base/decisions/2026-06-15-unifi-controller-homelab.md
dttb 51dcea50b2 unifi: контроллер UniFi на LXC 140 (10.0.0.196) + домен unifi.dttb.ru
- Docker-стек mongo:4.4 + linuxserver/unifi-network-application
- MongoDB 4.4 принудительно: хост Xeon X5672 без AVX, 5.0+ падает Illegal instruction
- образ с docker.io (ghcr.io виснет из РФ), rootfs на work (local-lvm 90%)
- NPM #36 + Let's Encrypt (DNS через Spaceweb, один editMain add)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-15 13:29:13 +03:00

4.9 KiB
Raw Blame History

date, type, tags
date type tags
2026-06-15 decision
decision
dttb
unifi
proxmox
lxc
network

UniFi Network Application на home lab — LXC 140 (2026-06-15)

Задача

Развернуть контроллер UniFi (Network Application) на Proxmox home lab (10.0.0.250) + домен unifi.dttb.ru.

Итог

  • LXC 140 unifi — Debian 12, unprivileged + nesting/keyctl, Docker compose
  • IP 10.0.0.196 (статика), nameserver 1.1.1.1
  • Ресурсы: 2 vCPU / 3 GB RAM / 16 GB диск (rootfs на worklocal-lvm забит на 90%)
  • Стек: docker.io/mongo:4.4 + docker.io/linuxserver/unifi-network-application:latest, persistent bind-mount /opt/unifi/{config,db}
  • Web UI: https://10.0.0.196:8443 (302 на логин — поднялся), inform на :8080
  • Домен: unifi.dttb.ru (NPM proxy host #36 → HTTPS 10.0.0.196:8443, WSS) + Let's Encrypt

КОРЕНЬ (важная грабля): MongoDB 4.4, не выше

Хост HP Z800 = 2× Xeon X5672 (Westmere)без AVX (grep avx /proc/cpuinfo пусто). MongoDB 5.0+ (и 7.0, который ставит стандартный community-script ct/unifi.sh) требует AVX и падает с Illegal instruction. LXC видит CPU хоста напрямую — маскировки нет. → берём mongo:4.4 (последняя версия без AVX; UniFi 8.x поддерживает Mongo 3.67.0). Проверка живости: docker logs unifi-dbrestarts=0, «Waiting for connections», app подключился. Падений нет.

Native-установка на Debian 12 отпала: MongoDB 4.4 под bookworm в репах нет (4.4 собран под bullseye/libssl1.1). Docker-стек mongo:4.4 самодостаточен и обходит это. Заодно это тот же стек, что отлажен на Передельках (2026-04-16-unifi-migration-peredelki, там bind-mount решал сброс БД).

Грабля 2: ghcr.io виснет из РФ

lscr.io/linuxserver/... редиректит на ghcr.io → закачка встала на 0 KB/s (compose висел). mongo:4.4 с docker.io скачался нормально. → Образ переключён на docker.io/linuxserver/unifi-network-application:latest (linuxserver публикует и туда, и в ghcr). Скорость 1.2 MB/s. Если опять затык — NetBird Trance→finland exit или docker registry mirror.

Домен и SSL (процедура как для omni — 2026-05-26-omni-domain-and-update)

DNS dttb.ru — на Spaceweb (нет публичного wildcard, каждый поддомен записью вручную).

  1. unifi.dttb.ru → публично NXDOMAIN (DoH 1.1.1.1; с Mac dig хайджачится NetBird — feedback_dttb_dns_split_view).
  2. Добавлена A-запись через Spaceweb API одним вызовом (НЕ в цикле — editMain циклом ломает зону): POST https://api.sweb.ru/domains/dnseditMain action=add name=unifi type=A value=176.62.183.186result:true.
  3. Negative-cache LE Boulder + 1.1.1.1 (TTL ~600) → ждать ~10 мин после первой неудачной попытки, потом выпуск.
  4. NPM proxy host #36 создан (backend HTTPS 10.0.0.196:8443, WSS вкл). Cert Let's Encrypt id 126 (exp 2026-09-13) выпущен и привязан (ssl_forced, http2).

Проверка: https://unifi.dttb.ru302 /setup/ (свежий контроллер), сертификат CN=unifi.dttb.ru issued by Let's Encrypt YE1.

Доступы

  • Proxmox: ssh root@10.0.0.250 (1qaz!QAZ), pct ... 140
  • Контейнер: pct exec 140 -- ...; compose в /opt/unifi/
  • MongoDB (внутр.): user unifi / Un1fiM0ngo2026, db unifi/unifi_stat
  • UniFi UI: https://10.0.0.196:8443 или https://unifi.dttb.ruпервый вход = создание admin-аккаунта (контроллер пустой)
  • Spaceweb DNS: it5870yand / 1qaz!QAZ (api.sweb.ru)
  • NPM: 10.0.0.195:81, it5870@yandex.ru / 1qaz!QAZ

Управление

ssh root@10.0.0.250
pct exec 140 -- bash -c 'cd /opt/unifi && docker compose ps'
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'  # апдейт

Что осталось / на заметку

  • Контроллер пустой — устройств UniFi в домашней сети (10.0.0.0/24) пока нет (роутер — OpenWrt). Готов к adopt новых AP/switch.
  • Для adopt устройств из других подсетей — set-inform на UI или DNS unifi → <ip> (как на Передельках).
  • .196 — статика; убедиться, что вне DHCP-пула OpenWrt.