From 51dcea50b21b3ad44d560ea6fa47d3f459596a01 Mon Sep 17 00:00:00 2001 From: dttb Date: Mon, 15 Jun 2026 13:28:57 +0300 Subject: [PATCH] =?UTF-8?q?unifi:=20=D0=BA=D0=BE=D0=BD=D1=82=D1=80=D0=BE?= =?UTF-8?q?=D0=BB=D0=BB=D0=B5=D1=80=20UniFi=20=D0=BD=D0=B0=20LXC=20140=20(?= =?UTF-8?q?10.0.0.196)=20+=20=D0=B4=D0=BE=D0=BC=D0=B5=D0=BD=20unifi.dttb.r?= =?UTF-8?q?u?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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 --- .../2026-06-15-unifi-controller-homelab.md | 61 +++++++++++++++++++ projects/dttb/network-topology.md | 12 ++++ projects/dttb/npm-proxy-hosts.md | 5 +- projects/dttb/proxmox-inventory.md | 19 +++++- 4 files changed, 92 insertions(+), 5 deletions(-) create mode 100644 decisions/2026-06-15-unifi-controller-homelab.md diff --git a/decisions/2026-06-15-unifi-controller-homelab.md b/decisions/2026-06-15-unifi-controller-homelab.md new file mode 100644 index 0000000..22d6697 --- /dev/null +++ b/decisions/2026-06-15-unifi-controller-homelab.md @@ -0,0 +1,61 @@ +--- +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 → ` (как на Передельках). +- `.196` — статика; убедиться, что вне DHCP-пула OpenWrt. diff --git a/projects/dttb/network-topology.md b/projects/dttb/network-topology.md index 40cc53b..7ca6a85 100644 --- a/projects/dttb/network-topology.md +++ b/projects/dttb/network-topology.md @@ -82,6 +82,17 @@ tags: [dttb] | Роль | SwarmClaw — оркестратор/control-plane над openclaw (рой агентов, делегирование, дашборд) | | Доступ | http://10.0.0.135:3456 (cookie `sc_auth`); провайдер OmniRoute, gateway-связка с LXC 137 | +### 10.0.0.196 — unifi (UniFi Network Application) +| Параметр | Значение | +|----------|----------| +| Hostname | unifi | +| Proxmox | LXC 140 | +| ОС | Debian 12 (Docker compose) | +| Открытые порты | 8443/https (Web UI), 8080/http (device inform), 3478/udp (STUN), 10001/udp (discovery), 8843, 8880, 6789 | +| Роль | Контроллер UniFi (mongo:4.4 + linuxserver/unifi-network-application) | +| Домен | unifi.dttb.ru → 10.0.0.196:8443 | +| ⚠️ Заметка | MongoDB строго 4.4 — хост-CPU Xeon X5672 без AVX | + ### 10.0.0.140 — proxmox-local | Параметр | Значение | |----------|----------| @@ -470,6 +481,7 @@ tags: [dttb] | mail.dttb.ru | 10.0.0.107:443 | Mailcow (почта dttb.ru) | | matrix.dttb.ru | 10.0.0.224:8080 | Matrix/Element Web | | rec.dttb.ru | 10.0.0.227:8091 | Agent-DVR / NVR | +| unifi.dttb.ru | 10.0.0.196:8443 | UniFi Network Application | | plex.dttb.ru | 10.0.0.200:32400 | Plex Media Server | | porteiner.dttb.ru | 10.0.0.10:9443 | Portainer | | z.dttb.ru | 10.0.0.220:80 | Z-сервис | diff --git a/projects/dttb/npm-proxy-hosts.md b/projects/dttb/npm-proxy-hosts.md index 08555b0..382776f 100644 --- a/projects/dttb/npm-proxy-hosts.md +++ b/projects/dttb/npm-proxy-hosts.md @@ -9,7 +9,7 @@ tags: [dttb, npm] > **NPM LXC:** 103 (10.0.0.195) > **Панель:** https://npm.dttb.ru > -> Последнее обновление: 2026-06-08 (добавлен swarm.dttb.ru → SwarmClaw LXC 135) +> Последнее обновление: 2026-06-15 (добавлен unifi.dttb.ru → UniFi LXC 140) --- @@ -17,7 +17,7 @@ tags: [dttb, npm] | Всего хостов | С SSL | Без SSL | Активных | |--------------|-------|---------|----------| -| 21 | 17 | 4 | 21 | +| 22 | 18 | 4 | 22 | --- @@ -51,6 +51,7 @@ tags: [dttb, npm] | 31 | `zima.umnybot.ru` | 10.0.0.190:80 | ✅ Let's Encrypt | ✅ | ✅ | ❌ | ZimaOS NAS коробки Алекса (pve-147 VM 100) | | 33 | `tg.umnybot.ru` | 10.0.0.190:3000 | ✅ Let's Encrypt | ✅ | ✅ | ❌ | Telegram web (KasmVNC, ZimaOS) — Basic Auth ACL `umnybot-kasm` | | 34 | `rustdesk.umnybot.ru` | 10.0.0.190:3005 | ✅ Let's Encrypt | ✅ | ✅ | ❌ | RustDesk client web (KasmVNC, ZimaOS) — Basic Auth ACL `umnybot-kasm` | +| 36 | `unifi.dttb.ru` | 10.0.0.196:8443 (HTTPS) | ✅ Let's Encrypt | ✅ | ✅ | ✅ | **UniFi Network Application** (LXC 140) | --- diff --git a/projects/dttb/proxmox-inventory.md b/projects/dttb/proxmox-inventory.md index 564e02d..36380de 100644 --- a/projects/dttb/proxmox-inventory.md +++ b/projects/dttb/proxmox-inventory.md @@ -9,7 +9,7 @@ tags: [dttb, proxmox] > **Основная нода:** pve (10.0.0.250) — описана ниже > **Вторая нода (standalone):** pve (10.0.0.147) — отдельный хост i3-2100/15GB/SSD+1.8TB HDD, см. [[proxmox-pve-147]] (VM 100 ZimaOS, LXC 101 второй NPM) > -> Последнее обновление: 2026-06-08 (добавлен LXC 135 swarmclaw) +> Последнее обновление: 2026-06-15 (добавлен LXC 140 unifi — UniFi Network Application) --- @@ -18,8 +18,8 @@ tags: [dttb, proxmox] | Тип | Всего | Запущено | Остановлено | |-----|-------|----------|-------------| | QEMU VM | 15 | 5 | 10 | -| LXC | 22 | 12 | 10 | -| **Итого** | **37** | **17** | **20** | +| LXC | 23 | 13 | 10 | +| **Итого** | **38** | **18** | **20** | --- @@ -203,6 +203,19 @@ tags: [dttb, proxmox] | IP | 10.0.0.141 (LAN) / 100.70.161.29 (NetBird) | | Назначение | VPN-proxy (детали уточнить) | +### LXC 140 — unifi (UniFi Network Application) +| Параметр | Значение | +|----------|----------| +| Статус | 🟢 running | +| IP | 10.0.0.196 (статика, nameserver 1.1.1.1) | +| ОС/рантайм | Debian 12, unprivileged + nesting/keyctl, Docker compose | +| Ресурсы | 2 vCPU / 3 GB / 16 GB (rootfs на `work`, т.к. local-lvm 90%) | +| Стек | `docker.io/mongo:4.4` + `docker.io/linuxserver/unifi-network-application:latest`, bind-mount `/opt/unifi/{config,db}` | +| Web UI | https://10.0.0.196:8443 · домен `unifi.dttb.ru` (NPM #36) | +| NPM домен | unifi.dttb.ru → 10.0.0.196:8443 (HTTPS backend, WSS) | +| Tags | network, unifi | +| Назначение | **Контроллер UniFi (Network Application)** для home lab. ⚠️ MongoDB именно **4.4** — CPU Xeon X5672 без AVX, Mongo 5.0+ падает с `Illegal instruction`. См. [[../../decisions/2026-06-15-unifi-controller-homelab]] | + --- ## 🔴 Остановленные LXC