---
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.6–7.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.
