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

62 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
date: 2026-06-15
type: decision
tags: [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 на `work`** — `local-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-db``restarts=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/dns``editMain action=add name=unifi type=A value=176.62.183.186``result: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.ru`**302 `/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`
## Управление
```bash
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.