[2026-09-14] eagle: family/how-to/truenas-infrastructure.md family/plans/t610-home-automation.md

This commit is contained in:
Alexey Martemyanov
2026-09-14 20:49:31 +06:00
parent edbe9ef76a
commit 2f88ba48b9
2 changed files with 153 additions and 11 deletions
+10 -10
View File
@@ -1,6 +1,6 @@
# TrueNAS — инфраструктура
> ✅ **ДОМАШНЯЯ АВТОМАТИЗАЦИЯ ПЕРЕНЕСЕНА НА HP t610 (2026-09-14).** HA, zigbee2mqtt, mosquitto, mbusd, modbus-bridge **и flows Node-RED** переехали на **t610** (HA OS, `192.168.2.176`). Единый документ по t610 — [[family/plans/t610-home-automation]]. **TrueNAS-стек автоматизации пока работает как есть — не отключён** (отключение = Этап 4). Причина переноса: TrueNAS на пределе RAM (17/21 ГБ).
> ✅ **ДОМАШНЯЯ АВТОМАТИЗАЦИЯ ПЕРЕНЕСЕНА НА HP t610 (2026-09-14).** HA, zigbee2mqtt, mosquitto, mbusd, modbus-bridge **и flows Node-RED** переехали на **t610** (HA OS, `192.168.2.176`). Единый документ по t610 — [[family/plans/t610-home-automation]]. **✅✅ TrueNAS-стек автоматизации ПОГАШЕН 2026-09-14 (ночная сессия, §5-кватер-Л плана):** `homeassistant`, `mbusd`, `mosquitto`, `nodered`, `zigbee2mqtt`, `modbus-bridge`, `ser2net` → `docker stop` + `docker update --restart=no` (**НЕ удалены**, папки `docker/*` целы — откат = `docker start` + `--restart=unless-stopped`). Проверено: порты 502/1883/8123/1880 свободны, `mallexxx.*` = 200, MQTT на t610 живой. Причина переноса: TrueNAS на пределе RAM (17/21 ГБ).
>
> **2026-09-14 (вечер-2, обновлено вечер-13) — Caddy ПЕРЕКЛЮЧЁН, Node-RED ПЕРЕНЕСЁН:**
> - **Caddy НЕ переносился и не будет:** 17 из 20 доменов `*.mallexxx.duckdns.org` — сервисы самого TrueNAS (immich, gitea, jellyfin, radarr, webdav, transmission, portainer…). Перенос Caddy на t610 положил бы их при падении t610. **✅ ПРАВКА ЗАВЕРШЕНА (факт-проверка 2026-09-14 вечер-13):** в `Caddyfile` остался **ОДИН** upstream на t610 — `mallexxx.duckdns.org` → `192.168.2.176:80` (HA, HTTP 200 ✅). **УБРАНЫ совсем:** `cam.mallexxx.duckdns.org` (камера на t610 по RTSP — домен не нужен) и `nodered.mallexxx.duckdns.org` (Node-RED — через ingress HA, решение Alex «оставляем так»). Caddyfile: `/mnt/RED_2TB/docker/caddy/Caddyfile` (root-owned — агент только стейджит в `/tmp/`, подменяет Alex), бэкап `Caddyfile.bak-20260914`. Порты контейнера: `8088:80`, `8443:443`; DNAT на роутере `192.168.2.2`: `wan:80→192.168.2.197:8088`, `wan:443→192.168.2.197:8443`.
@@ -11,7 +11,7 @@
> - **Результат:** ZONT пишет в mosquitto-**аддон на t610** (живой поток `modbus/sensors/kids/*`, `bedroom/*`). В настройках ZONT ничего не менялось (`mqtt://…@192.168.0.10:1883`, где `.0.10` = wan-интерфейс роутера `192.168.2.2`, не отдельный GPON-роутер).
> - ✅ **`dining/*` тоже публикуется (2026-09-14, позже):** прежняя версия «ZONT не публикует / мёртвый upstream» — **❌ ОПРОВЕРГНУТА**. Причина была в **баге сборки RTU-кадров в `modbus-bridge`** (19-байтный кадр гостиной рвался), фикс `3748feb` → все 7 полей `dining` живы. Подробно — [[family/plans/t610-home-automation]] §5-кватер-З.
> - **⚠️ «Камера на TrueNAS» — ИСПРАВЛЕНО (2026-09-14, вечер-10) + ✅ РЕШЕНО ОКОНЧАТЕЛЬНО (вечер-13):** прежняя запись «камера = USB-вебка на t610, upstream `cam.*:8090` к камере отношения не имеет» — **❌ НЕВЕРНА**. Поиск в `Caddyfile.bak` доказал: **`cam.mallexxx.duckdns.org → 192.168.2.197:8090` — ЭТО И БЫЛА камера** на TrueNAS: отдельный HTTP-MJPEG-сервис (`ustreamer`/`mjpg-streamer`, порт 8090 — канон для «USB-вебка → MJPEG»). **Контейнер УТРАЧЕН** при пересоздании пула (локальный образ не пережил `.ix-apps`; из живого Caddyfile строка удалена — `cam.*` больше нет). **✅ ФИНАЛ (вечер-13):** вебка `046d:0825` физически в **t610**, работает через **аддон `a889bffc_go2rtc-hardware`** → RTSP H.264 `rtsp://192.168.2.176:8554/usb_camera_h264` → **Generic Camera** `camera.192_168_2_176` (зона `kotelnaia`, `unique_id`, **WebRTC работает**, поворот `#rotate=90`). Схема `camera: platform: ffmpeg` в Core — **❌ ОТВЕРГНУТА** (`Resource busy` + нет `unique_id`). Подробно — [[family/plans/t610-home-automation]] §5-кватер-И-3/И-6.
> - **Не перенесено с TrueNAS:** погашение TrueNAS-стека (Этап 4 п.6 — заблокировано: Caddy на TrueNAS держит точку входа). **⚠️ Обновлено (вечер-13):** Caddy-часть и ZONT MQTT **закрыты** (в `Caddyfile` на t610 ведёт только `mallexxx.*`, `cam.*`/`nodered.*` убраны; MQTT DNAT `.197`→`.176`). Осталась только остановка самого TrueNAS-стека.
> - **Не перенесено с TrueNAS:** ~~погашение TrueNAS-стека (Этап 4 п.6 — заблокировано: Caddy на TrueNAS держит точку входа)~~ → **✅ ЗАКРЫТО 2026-09-14 (ночь): стек автоматизации ПОГАШЕН, Caddy остался на TrueNAS (так и задумано).** См. §5-кватер-Л в [[family/plans/t610-home-automation]].
> Обновлено: 2026-09-02 (vpn.mallexxx:443 = РАБОЧИЙ Xray-сервер, проверено end-to-end; vless-proxy outbound мёртв)
@@ -126,21 +126,21 @@ TrueNAS использует **NFSv4 ACL**, а не стандартный POSIX
| vless-proxy | teddysun/xray:latest | — | — |
| filebrowser | filebrowser/filebrowser:latest | — | — |
| webdav | hacdias/webdav:latest | — | webdav.mallexxx.duckdns.org |
| homeassistant | home-assistant:stable | 8123 | mallexxx.duckdns.org |
| ~~homeassistant~~ | home-assistant:stable | ~~8123~~ | **ПОГАШЕН 2026-09-14** — переехал на t610 |
| immich-server | immich-app/immich-server:release | 2283 | immich.mallexxx.duckdns.org |
| immich-postgres | tensorchord/pgvecto-rs:pg14-v0.2.0 | — | — |
| immich-redis | redis:7 | — | — |
| nodered | nodered/node-red:latest | 1880 | nodered.mallexxx.duckdns.org |
| mosquitto | eclipse-mosquitto:latest | — | — |
| ~~nodered~~ | nodered/node-red:latest | ~~1880~~ | **ПОГАШЕН 2026-09-14** — flows на t610 (ingress) |
| ~~mosquitto~~ | eclipse-mosquitto:latest | ~~1883~~ | **ПОГАШЕН 2026-09-14** — брокер на t610 |
| caddy | caddy:latest | 80, 443 | reverse proxy для всего |
| rclone | rclone/rclone:latest | — | бэкап по cron |
| portainer | portainer/portainer-ce:latest | 9000 | portainer.mallexxx.duckdns.org |
| watchtower | containrrr/watchtower:latest | — | авто-обновление образов |
| inpxer | ghcr.io/hedger/inpxer:latest | 18080 | books.mallexxx.duckdns.org |
| nodered | node-red:latest | 1880 | nodered.mallexxx.duckdns.org |
| zigbee2mqtt ⛔ | koenkk/zigbee2mqtt:latest | — | — (переехал на t610) |
| mbusd ⛔ | 3cky/mbusd:latest | 502 | Modbus (переехал на t610) |
| modbus-bridge ⛔ | modbus-bridge | — | — (переехал на t610) |
| ser2net ⛔ | ghcr.io/jippi/docker-ser2net | 502 | **ПОГАШЕН 2026-09-14** — spare-master, конфликт порта с mbusd |
| cups-splix | cups-splix | 631 | принтер |
| xray-admin | ghcr.io/mhsanaei/3x-ui:latest | 2053 (панель), 10095 (vless-ws), 443 (sub) | vpn-panel.mallexxx.duckdns.org, vpn.mallexxx.duckdns.org |
| xray-reverse-portal | teddysun/xray:latest | 12345 (SOCKS), 12346 (VLESS-TCP REALITY interconn) | — (см. `personal/tech/xray-reverse-tunnel-kraken-truenas.md`) |
@@ -184,9 +184,9 @@ arr, caddy, cups, filebrowser, gitea, hermes, immich, inpx-web, inpxer, library,
1. **docker engine:** `systemctl enable --now docker` (после создания data-root, см. шапку). Проверка: `docker info | grep -iE "Server Version|Docker Root Dir"`.
2. **Инфраструктура/сеть:** mosquitto (MQTT) → zigbee2mqtt (нужен mosquitto) → nodered (MQTT) → caddy (прокси, тянет все домены) → vless-proxy (SOCKS5 для hermes).
3. **Умный дом:****на TrueNAS БОЛЬШЕ НЕ ВОССТАНАВЛИВАТЬ** — переехало на t610 (см. «Декомиссия стека автоматизации»). mbusd (Modbus TCP:502) → modbus-bridge (через mbusd) → ha (homeassistant, нужен caddy для домена) — **всё это теперь аддоны на `192.168.2.176`**.
3. **Умный дом:****на TrueNAS БОЛЬШЕ НЕ ВОССТАНАВЛИВАТЬ** — переехало на t610 (см. «Декомиссия стека автоматизации»), **стек ПОГАШЕН 2026-09-14**. `mbusd` (Modbus TCP:502) → `modbus-bridge` (через mbusd) → `ha` (homeassistant, нужен caddy для домена) — **всё это теперь аддоны на `192.168.2.176`**.
4. **Медиа/хранилище:** transmission (нужен caddy) → arr (radarr/sonarr/prowlarr) → inpxer (books), inpx-web, library → rclone, syncthing, filebrowser, webdav, gitea. ⚠️ `inpxer`/`inpx-web`/`library` — на 2026-09-14 в циклическом краше (см. декомиссию).
5. **Сервисы/свои:** hermes-taiga (нужен vless-proxy), portainer, portainer-mcp, watchtower, cups, ser2net.
5. **Сервисы/свои:** hermes-taiga (нужен vless-proxy), portainer, portainer-mcp, watchtower, cups. ~~ser2net~~**погашен 2026-09-14** (конфликт порта 502 с mbusd).
6. **Проверка:** `docker ps`. HA: `docker exec homeassistant python -m homeassistant --script check_config --config /config`.
### Transmission — детали
@@ -281,7 +281,7 @@ arr, caddy, cups, filebrowser, gitea, hermes, immich, inpx-web, inpxer, library,
### Home Assistant на TrueNAS ⛔ **ХОЛОСТОЙ ЭКЗЕМПЛЯР (аудит 2026-09-14)**
> ⛔ **СТАТУС:** контейнер `homeassistant` `Up 5 дней`, но **рабочим не является** — `modbus.host` в `/mnt/RED_2TB/docker/ha/configuration.yaml` указывает на **`.197`** (сам TrueNAS), т.е. на шину, которой там больше нет (адаптеры на t610). Живая HA — **аддон на t610 `192.168.2.176`**, домен `mallexxx.duckdns.org` ведёт **туда** (Caddy → `192.168.2.176:80`). **Кандидат на снос (п.6 плана [[family/plans/t610-home-automation]]).**
> ⛔ **СТАТУС (2026-09-14, ночь): КОНТЕЙНЕР ПОГАШЕН.** `docker stop homeassistant` + `docker update --restart=no`. Причина: `modbus.host` в `/mnt/RED_2TB/docker/ha/configuration.yaml` указывает на **`.197`** (сам TrueNAS) — шины там больше нет (адаптеры на t610), инстанс холостой. Живая HA — **аддон на t610 `192.168.2.176`**, домен `mallexxx.duckdns.org` ведёт **туда** (Caddy → `192.168.2.176:80`). **Папки и конфиги целы** — откат: `docker start homeassistant && docker update --restart=unless-stopped homeassistant`. Подробно — §5-кватер-Л в [[family/plans/t610-home-automation]].
> 📌 Эталон конфига старой HA сохранён: `/mnt/RED_2TB/docker/ha/configuration.yaml` — modbus-блок построчно идентичен тому, что уехал на t610 (32 заслонки). Использовался как эталон при сверке зон/устройств.
> ⚠️ Папки `docker/ha/` и `docker/homeassistant/` — **`homeassistant/` ПУСТАЯ**, рабочая — `ha/`.
@@ -311,7 +311,7 @@ ssh truenas_admin@mallexxx.duckdns.org "docker exec homeassistant python -m home
### mbusd — Modbus RTU → TCP gateway ⛔ **ПЕРЕЕХАЛ НА t610 (2026-09-14)**
> ⛔ **СТАТУС (аудит 2026-09-14): контейнер на TrueNAS БОЛЬШЕ НЕ РАБОЧИЙ.** USB-адаптеры (CH340 ZONT/вентиляция) физически переехали на t610 → в `/sys/bus/usb` на TrueNAS только принтер Samsung `04e8:3425`. `/dev/ttyVent` **не существует**. Контейнер формально `Up` с `2026-08-25` (RestartCount=0), но спамит `tty_reopen(): can't open tty device /dev/ttyUSB0 (No such device or address)`. Маппинг `/dev/ttyVent` докер толерирует, пока device не пересоздавали. **Кандидат на снос (п.6 плана [[family/plans/t610-home-automation]]).**
> 🔴 **Конфликт порта 502:** `mbusd` и `ser2net` **оба** публикуют `0.0.0.0:502` И оба просят `/dev/ttyVent`. `ser2net` в state `Created` (никогда не запущен). При попытке `start ser2net` будет конфликт портов. **Не поднимать оба одновременно.**
> 🔴 **⚠️ ИСТОРИЯ (устранено 2026-09-14):** `mbusd` и `ser2net` **оба** публиковали `0.0.0.0:502` И оба просили `/dev/ttyVent`. `ser2net` был в state `Created` (никогда не запущен) — при `start ser2net` был бы конфликт портов. **✅ Оба погашены 2026-09-14** (`stop` + `--restart=no`), порт 502 на TrueNAS свободен. Не поднимать оба одновременно.
Мост Modbus RTU → TCP: пробрасывает серийный порт в TCP 502. ~~Используется и для вентиляции (AT2), и для ZONT-шины.~~**исторически**; на 2026-09-14 обе линии обслуживает mbusd **на t610**.