[2026-09-14] eagle: family/how-to/gitea-config.md family/how-to/truenas-rclone-backup.md family/plans/t610-home-automation.md
This commit is contained in:
@@ -30,6 +30,11 @@ curl -sS -H "Authorization: token $TOKEN" 'https://git.mallexxx.duckdns.org/api/
|
|||||||
```
|
```
|
||||||
> ⚠️ **В inline-команде Hermes эта конструкция ломается** (см. «Питфоллы») — писать скрипт файлом.
|
> ⚠️ **В inline-команде Hermes эта конструкция ломается** (см. «Питфоллы») — писать скрипт файлом.
|
||||||
|
|
||||||
|
**✅ Проверено 2026-09-14 (вечер-14):** `GET /api/v1/user` → **HTTP 200**, `login: git_admin` — токен живой. Вариант извлечения без `sed` (устойчив к `|` в inline, но всё равно лучше файлом):
|
||||||
|
```bash
|
||||||
|
T=$(git -C ~/Developer/nolvu-landing remote get-url origin | sed -n 's#https://git_admin:\([^@]*\)@.*#\1#p')
|
||||||
|
```
|
||||||
|
|
||||||
## Создание приватного репо через API (эталон 2026-09-14)
|
## Создание приватного репо через API (эталон 2026-09-14)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|||||||
@@ -41,6 +41,19 @@
|
|||||||
Шифрованное → положить в `/mnt/RED_2TB/backup/` или `/mnt/RED_2TB/docker/` — подхватится автоматически.
|
Шифрованное → положить в `/mnt/RED_2TB/backup/` или `/mnt/RED_2TB/docker/` — подхватится автоматически.
|
||||||
Нешифрованное → добавить `run_sync` строку в `/mnt/RED_2TB/docker/rclone/config/backup.sh`.
|
Нешифрованное → добавить `run_sync` строку в `/mnt/RED_2TB/docker/rclone/config/backup.sh`.
|
||||||
|
|
||||||
|
## Кандидаты на добавление — конфиги сервисов
|
||||||
|
|
||||||
|
| Источник | Куда класть | Статус |
|
||||||
|
|---|---|---|
|
||||||
|
| Конфиги **t610** (HA OS): `/config/{configuration,automations,scripts,scenes,secrets}.yaml`, `/config/.storage/`, `/config/go2rtc.yaml`, `zigbee2mqtt`, `/addons/{mbusd,modbus-bridge,ustreamer}`, `/addon_configs/{zigbee2mqtt,nodered}` | `/mnt/RED_2TB/backup/t610/` | 🔶 **план, вечер-14 (2026-09-14)** — см. `[[family/plans/t610-home-automation]]` §5-кватер-К |
|
||||||
|
|
||||||
|
**Как ходить с t610 на NAS (факт-проверка 2026-09-14):** `t610 → 192.168.2.197` **ping OK**, а вот **Mac → 192.168.2.197 ping FAIL** (прямого пути нет). То есть бэкап на сторону NAS делается от **t610**, а не от Mac.
|
||||||
|
|
||||||
|
⚠️ Запись в `/mnt/RED_2TB/backup/` требует **root**; у `truenas_admin` **нет passwordless sudo**. Варианты: root-ключ / отдельный share / стейджинг в `/tmp/` + подмена Alex'ом.
|
||||||
|
|
||||||
|
- **rclone remotes на Mac отсутствуют** (`rclone listremotes` пуст) — конфиг с `mailru-crypt` живёт **только на TrueNAS**. Бэкап проектировать на стороне NAS, не Mac.
|
||||||
|
- **Точки входа:** `ssh truenas_admin@mallexxx.duckdns.org` (внешний), `192.168.2.197` (LAN, только с t610).
|
||||||
|
|
||||||
## TODO — добавить в бэкап
|
## TODO — добавить в бэкап
|
||||||
|
|
||||||
Следующие папки из `/mnt/RED_2TB/storage/` не бэкапятся, но должны:
|
Следующие папки из `/mnt/RED_2TB/storage/` не бэкапятся, но должны:
|
||||||
|
|||||||
@@ -1377,6 +1377,7 @@ sensor.dining_air_summary = 31tvoc 3pm ← БЫЛ TemplateError → ож
|
|||||||
|
|
||||||
**Git-коммиты (репо `git_admin/HA-ZONT-Modbus`, ветка `main`):**
|
**Git-коммиты (репо `git_admin/HA-ZONT-Modbus`, ветка `main`):**
|
||||||
```
|
```
|
||||||
|
9d31118 Sync from t610 prod: automations device_ids, go2rtc camera, bridge relay ← СИНК вечер-14
|
||||||
3748feb Fix RTU frame assembly: T3.5 inter-frame delimiting + bad-buffer reset ← ФИКС
|
3748feb Fix RTU frame assembly: T3.5 inter-frame delimiting + bad-buffer reset ← ФИКС
|
||||||
ad6345a Add diagnostic raw-byte logging to modbus-bridge (temp diag)
|
ad6345a Add diagnostic raw-byte logging to modbus-bridge (temp diag)
|
||||||
6a8ca3f Sync bridge files from t610 prod: rename z2m entity_ids
|
6a8ca3f Sync bridge files from t610 prod: rename z2m entity_ids
|
||||||
@@ -1995,7 +1996,7 @@ curl -s -X POST -H "$HDR" -H "Content-Type: application/json" \
|
|||||||
- **📹 Поворот камеры 90°** — `#rotate=90` в `/config/go2rtc.yaml` (нативный параметр go2rtc, работает при транскодинге). Поток стал `480x640`, кадр проверен, CPU `load 0.20`. **Alex: «Все хорошо, в ту»** — направление подтверждено. Канон — §5-кватер-И-6 (КАНОН-2). Бэкап `/config/go2rtc.yaml.bak-rotate-20260914-202817`, скрипт `~/tmp-t610/relay/patch_rotate.py`.
|
- **📹 Поворот камеры 90°** — `#rotate=90` в `/config/go2rtc.yaml` (нативный параметр go2rtc, работает при транскодинге). Поток стал `480x640`, кадр проверен, CPU `load 0.20`. **Alex: «Все хорошо, в ту»** — направление подтверждено. Канон — §5-кватер-И-6 (КАНОН-2). Бэкап `/config/go2rtc.yaml.bak-rotate-20260914-202817`, скрипт `~/tmp-t610/relay/patch_rotate.py`.
|
||||||
- **📹 B3 / Этап 4 закрыт** — факт-проверка роутера: `firewall.@redirect[0]` (MQTT) и `@rule[3]` `dest_ip=192.168.2.176` (ZONT MQTT → t610). Отдельного «GPON-роутера» нет.
|
- **📹 B3 / Этап 4 закрыт** — факт-проверка роутера: `firewall.@redirect[0]` (MQTT) и `@rule[3]` `dest_ip=192.168.2.176` (ZONT MQTT → t610). Отдельного «GPON-роутера» нет.
|
||||||
- **📹 Caddy ПЕРЕСТРОЕН** — из `Caddyfile` убраны `cam.*` (камера на t610 по RTSP) и `nodered.*` (ingress HA); на t610 ведёт **только** `mallexxx.duckdns.org` → `192.168.2.176:80`. Обновлён [[family/how-to/truenas-infrastructure]].
|
- **📹 Caddy ПЕРЕСТРОЕН** — из `Caddyfile` убраны `cam.*` (камера на t610 по RTSP) и `nodered.*` (ingress HA); на t610 ведёт **только** `mallexxx.duckdns.org` → `192.168.2.176:80`. Обновлён [[family/how-to/truenas-infrastructure]].
|
||||||
- **⚠️ ОСТАЛОСЬ 2 пункта:** ① **п.8** — бэкап конфигов t610 (A3); ② **п.6** — погасить на TrueNAS стек автоматизации (`homeassistant`/`mbusd`/`mosquitto`/`nodered`) — **РАЗБЛОКИРОВАН** (5-мк закрыт), **Caddy не гасить**. Хвост: ротация токена из remote `nolvu-landing`; в роутере `redirect[1]` HA `8123`→`.197` помечен `enabled='0'` — мёртвый, можно удалить.
|
- **⚠️ ОСТАЛОСЬ 2 пункта:** ① **п.8** — бэкап конфигов t610 (A3) — 🔶 **в работе, ч.1 сделана, см. §5-кватер-К**; ② **п.6** — погасить на TrueNAS стек автоматизации (`homeassistant`/`mbusd`/`mosquitto`/`nodered`) — **РАЗБЛОКИРОВАН** (5-мк закрыт), **Caddy не гасить**. Хвост: ротация токена из remote `nolvu-landing`; в роутере `redirect[1]` HA `8123`→`.197` помечен `enabled='0'` — мёртвый, можно удалить.
|
||||||
|
|
||||||
**✅ Закрыто / установлено в этой сессии (2026-09-14, позднейшая, Modbus-диагностика):**
|
**✅ Закрыто / установлено в этой сессии (2026-09-14, позднейшая, Modbus-диагностика):**
|
||||||
- **Опции mbusd — откат подтверждён.** Аддон `started`, значения `timeout 1000 / retries 3 / maxconn 8` (как было). `maxconn` **не трогать** (питфолл в §5).
|
- **Опции mbusd — откат подтверждён.** Аддон `started`, значения `timeout 1000 / retries 3 / maxconn 8` (как было). `maxconn` **не трогать** (питфолл в §5).
|
||||||
@@ -2024,7 +2025,7 @@ curl -s -X POST -H "$HDR" -H "Content-Type: application/json" \
|
|||||||
| ~~**B2**~~ | ~~**Node-RED наружу** — выставить порт аддона и поправить Caddy~~ | — | **✅ СНЯТО (2026-09-14 вечер-7):** решение Alex — «оставляем так». Node-RED доступен через **ingress** HA (`http://192.168.2.176/api/hassio_ingress/<token>/`), наружу не выпускается. Домен `nodered.*` не используется. См. §5-кватер-Г и `[[family/how-to/nodered-ventilation]]` |
|
| ~~**B2**~~ | ~~**Node-RED наружу** — выставить порт аддона и поправить Caddy~~ | — | **✅ СНЯТО (2026-09-14 вечер-7):** решение Alex — «оставляем так». Node-RED доступен через **ingress** HA (`http://192.168.2.176/api/hassio_ingress/<token>/`), наружу не выпускается. Домен `nodered.*` не используется. См. §5-кватер-Г и `[[family/how-to/nodered-ventilation]]` |
|
||||||
| ~~**B3**~~ | ~~**Этап 4, остаток:** GPON-редирект → t610, ZONT MQTT → t610~~ | — | **✅ ВЫПОЛНЕНО (факт-проверка 2026-09-14):** роутер `192.168.2.2` — `firewall.@redirect[0]` (name=MQTT, src_dport=1883) `dest_ip=192.168.2.176`, `firewall.@rule[3]` (allow-1883) `dest_ip=192.168.2.176`. **Отдельного «GPON-роутера» нет** — `192.168.0.10` это `wan`-интерфейс самого роутера `192.168.2.2` (§5-кватер). Остаётся `redirect[1]` HomeAssistant `8123` → `.197` (проверить, нужен ли) |
|
| ~~**B3**~~ | ~~**Этап 4, остаток:** GPON-редирект → t610, ZONT MQTT → t610~~ | — | **✅ ВЫПОЛНЕНО (факт-проверка 2026-09-14):** роутер `192.168.2.2` — `firewall.@redirect[0]` (name=MQTT, src_dport=1883) `dest_ip=192.168.2.176`, `firewall.@rule[3]` (allow-1883) `dest_ip=192.168.2.176`. **Отдельного «GPON-роутера» нет** — `192.168.0.10` это `wan`-интерфейс самого роутера `192.168.2.2` (§5-кватер). Остаётся `redirect[1]` HomeAssistant `8123` → `.197` (проверить, нужен ли) |
|
||||||
| ~~A2~~ | ~~**№7**: Static IP для t610~~ | — | **✅ ВЫПОЛНЕНО 2026-09-14 (вечер-8, §5-кватер-И-1):** на роутере `192.168.2.2` создана static-привязка `dhcp.@host[1]` = `t610` / MAC `9c:8e:99:ef:3f:c5` / `192.168.2.176` → `uci commit dhcp` + `dnsmasq reload`. Проверено: `ping` OK, HA → HTTP 200. Бэкап `/root/dhcp.bak-20260914-104152` |
|
| ~~A2~~ | ~~**№7**: Static IP для t610~~ | — | **✅ ВЫПОЛНЕНО 2026-09-14 (вечер-8, §5-кватер-И-1):** на роутере `192.168.2.2` создана static-привязка `dhcp.@host[1]` = `t610` / MAC `9c:8e:99:ef:3f:c5` / `192.168.2.176` → `uci commit dhcp` + `dnsmasq reload`. Проверено: `ping` OK, HA → HTTP 200. Бэкап `/root/dhcp.bak-20260914-104152` |
|
||||||
| A3 | **№8**: Бэкап конфигов t610 | ✅ низкий | `tar` конфигов t610 (`/config`, **`.storage/http`**, Caddyfile) → Mac + TrueNAS + коммит в Gitea `git.mallexxx.duckdns.org` (репо `git_admin/HA-ZONT-Modbus` уже создан) |
|
| A3 | **№8**: Бэкап конфигов t610 | 🔶 в работе | **Часть 1 ✅ СДЕЛАНА 2026-09-14 (вечер-14): синк репо → прод-факт, коммит `9d31118` запушен в Gitea (SHA local == remote).** Осталось: **автобэкап на TrueNAS** — ждёт выбора Alex из 3 вариантов (A: крон на t610 → scp на TrueNAS; B: крон-задача на TrueNAS → pull с t610; C: rsync Mac → Gitea). Детали — §5-кватер-К. Прошлый `tar`-бэкап: `~/tmp-t610/backups/config-t610-20260914-115034.tar.gz` (88 КБ, **устарел** — до камеры/реле/rotate) |
|
||||||
| ~~A4~~ | ~~**Ночной свет душевой**: триггер на падение освещённости~~ | — | **✅ ВЫПОЛНЕНО 2026-09-14 (вечер-8, §5-кватер-И-2):** в automation `1771997851260` добавлен триггер `illuminance below:8` + условие `is_occupied`. Проверено через API: `triggers`=2, `conditions`=2 |
|
| ~~A4~~ | ~~**Ночной свет душевой**: триггер на падение освещённости~~ | — | **✅ ВЫПОЛНЕНО 2026-09-14 (вечер-8, §5-кватер-И-2):** в automation `1771997851260` добавлен триггер `illuminance below:8` + условие `is_occupied`. Проверено через API: `triggers`=2, `conditions`=2 |
|
||||||
| ~~**A5**~~ | ~~**Камера**: USB-вебка Logitech `046d:0825` на t610 → завести в HA~~ | — | **⚠️ ПЕРЕДЕЛАНО 2026-09-14 (вечер-11).** Сначала (вечер-9) завели через `camera: platform: ffmpeg` — **отвергнуто** (`Resource busy`, нет `unique_id`). **Итог вечер-11:** аддон `local_ustreamer` + Generic Camera → `camera.192_168_2_176`, зона `kotelnaia`, `unique_id` ✅. Детали — §5-кватер-И-5 |
|
| ~~**A5**~~ | ~~**Камера**: USB-вебка Logitech `046d:0825` на t610 → завести в HA~~ | — | **⚠️ ПЕРЕДЕЛАНО 2026-09-14 (вечер-11).** Сначала (вечер-9) завели через `camera: platform: ffmpeg` — **отвергнуто** (`Resource busy`, нет `unique_id`). **Итог вечер-11:** аддон `local_ustreamer` + Generic Camera → `camera.192_168_2_176`, зона `kotelnaia`, `unique_id` ✅. Детали — §5-кватер-И-5 |
|
||||||
| ~~**A6**~~ | ~~**Камера — вернуть схему «как на TrueNAS»** (решение Alex, вечер-10)~~ | — | **✅✅ ВЫПОЛНЕНО 2026-09-14 (вечер-11, §5-кватер-И-3/И-5).** Историч. upstream был `cam.mallexxx.duckdns.org → 192.168.2.197:8090` (контейнер утрачен при пересоздании пула, след — `Caddyfile.bak`). Реализовано **аддоном на t610** (вебка физически там, Docker в HA OS закрыт → аддон). Поднят `local_ustreamer` (`/addons/ustreamer/`, MJPEG :8090) → Generic Camera по URL → **`unique_id` + зона `kotelnaia` + имя «Камера котельной»**. Блок `camera: platform: ffmpeg` из `configuration.yaml` **снесён** (бэкап `.bak-rmcam-20260914-185240`). Осталось: удалить лишний `/config/go2rtc.yaml` |
|
| ~~**A6**~~ | ~~**Камера — вернуть схему «как на TrueNAS»** (решение Alex, вечер-10)~~ | — | **✅✅ ВЫПОЛНЕНО 2026-09-14 (вечер-11, §5-кватер-И-3/И-5).** Историч. upstream был `cam.mallexxx.duckdns.org → 192.168.2.197:8090` (контейнер утрачен при пересоздании пула, след — `Caddyfile.bak`). Реализовано **аддоном на t610** (вебка физически там, Docker в HA OS закрыт → аддон). Поднят `local_ustreamer` (`/addons/ustreamer/`, MJPEG :8090) → Generic Camera по URL → **`unique_id` + зона `kotelnaia` + имя «Камера котельной»**. Блок `camera: platform: ffmpeg` из `configuration.yaml` **снесён** (бэкап `.bak-rmcam-20260914-185240`). Осталось: удалить лишний `/config/go2rtc.yaml` |
|
||||||
@@ -2039,6 +2040,87 @@ curl -s -X POST -H "$HDR" -H "Content-Type: application/json" \
|
|||||||
3. ~~**«Замерзание» лога bridge**~~ → **✅ РЕШЕНО:** тот же баг сборки кадров (байты-сироты копились в буфере, `[BUF-LEFT 1] 00` ×20). Устранён фиксом `3748feb`.
|
3. ~~**«Замерзание» лога bridge**~~ → **✅ РЕШЕНО:** тот же баг сборки кадров (байты-сироты копились в буфере, `[BUF-LEFT 1] 00` ×20). Устранён фиксом `3748feb`.
|
||||||
4. **Этап 4 / погасить TrueNAS:** где живёт точка входа, если Caddy нельзя уносить с TrueNAS? (§5-кватер-Б) — **открыт**: Caddy оставлен на TrueNAS осознанно (17 из 20 доменов — сервисы TrueNAS).
|
4. **Этап 4 / погасить TrueNAS:** где живёт точка входа, если Caddy нельзя уносить с TrueNAS? (§5-кватер-Б) — **открыт**: Caddy оставлен на TrueNAS осознанно (17 из 20 доменов — сервисы TrueNAS).
|
||||||
|
|
||||||
|
### 5-кватер-К. 🔶 Бэкап конфигов t610 (п.8 / A3) — синк репо ✅ + план автобэкапа (2026-09-14, вечер-14)
|
||||||
|
|
||||||
|
**Триггер:** Alex — *«Поехали бэкап»*, затем уточнение — *«Нужно синкнуть в папку Automations то что изменилось по факту. Настроить автобэкап на truenas»*.
|
||||||
|
|
||||||
|
#### К-1. ✅ СИНК t610 → репо `~/Automation/HA-ZONT-Modbus` — СДЕЛАНО
|
||||||
|
|
||||||
|
**Метод:** `scp` боевых файлов с t610 в `/tmp/hasync/` → `diff` против репо → копирование в репо → коммит → push.
|
||||||
|
|
||||||
|
**Что реально изменилось (факт, подтверждено `diff`/`shasum`):**
|
||||||
|
|
||||||
|
| Файл | Изменение | Было в репо |
|
||||||
|
|---|---|---|
|
||||||
|
| `homeassistant/configuration.yaml` | `modbus.host` `192.168.2.197` → **`192.168.2.176`**; YAML-блок `http:` **удалён** (перенесён в UI `.storage/http`; комментарий: «HA 2027.2 уберёт поддержку»); убрана строка `localtuya: debug` | 1142 стр. → 1142 стр. |
|
||||||
|
| `homeassistant/automations.yaml` | перегенерированы **все** `device_id` (миграция на t610); `light.0xa4c13882a4b42db0` → **`light.bed_dimmer`**; + триггер `illuminance`; + условие `is_occupied` (ночной свет душевой) | 278 → 283 стр. |
|
||||||
|
| `homeassistant/go2rtc.yaml` | **НОВЫЙ файл** (в репо отсутствовал) — камера `go2rtc-hardware`, `ffmpeg:device?...mjpeg#video=h264#rotate=90` | — |
|
||||||
|
| `config.yml` (= прод `data/config.template.tmpl`) | + хвост **«Boiler controller power (Zigbee relay)»**: `slave_id: 104`, `register_address: 1`, `action: ha`, `value_map {0:0, 1:1, 256:0, 512:1}` | 3934 → 4630 б |
|
||||||
|
| `modbus_ha_bridge.py` | **уже идентичен** проду (sha256 совпал) — правок не потребовалось | 42296 б |
|
||||||
|
| `homeassistant/scripts.yaml` | **уже идентичен** проду (sha256 совпал) | 30728 б |
|
||||||
|
|
||||||
|
**Коммит:** `9d31118` — *«Sync from t610 prod: automations device_ids, go2rtc camera, bridge relay»*, 4 файла, +93/−37.
|
||||||
|
**Push:** `3748feb..9d31118 main -> main`. **Проверка:** `git rev-parse HEAD` == `git ls-remote origin refs/heads/main` → **`9d3111800d21f5652d92745630a5c2f01b153967`** ✅.
|
||||||
|
|
||||||
|
**Креды (проверено):** токен Gitea берётся из remote `nolvu-landing` (`sed -n 's#https://git_admin:\([^@]*\)@.*#\1#p'`), в `~/.git-credentials` (chmod 600) + `credential.helper store`. **`GET /api/v1/user` → HTTP 200, `git_admin`** — токен живой.
|
||||||
|
|
||||||
|
**Команды синка (эталон):**
|
||||||
|
```bash
|
||||||
|
# 1) забрать боевые файлы
|
||||||
|
for f in configuration.yaml automations.yaml scripts.yaml scenes.yaml; do
|
||||||
|
scp -q root@192.168.2.176:/config/$f /tmp/hasync/$f
|
||||||
|
done
|
||||||
|
scp -q root@192.168.2.176:/addons/modbus-bridge/data/config.template.tmpl /tmp/hasync/
|
||||||
|
scp -q root@192.168.2.176:/config/go2rtc.yaml /tmp/hasync/
|
||||||
|
|
||||||
|
# 2) сравнить, потом положить
|
||||||
|
diff -u ~/Automation/HA-ZONT-Modbus/homeassistant/configuration.yaml /tmp/hasync/configuration.yaml
|
||||||
|
cp /tmp/hasync/configuration.yaml ~/Automation/HA-ZONT-Modbus/homeassistant/
|
||||||
|
cp /tmp/hasync/automations.yaml ~/Automation/HA-ZONT-Modbus/homeassistant/
|
||||||
|
cp /tmp/hasync/go2rtc.yaml ~/Automation/HA-ZONT-Modbus/homeassistant/
|
||||||
|
cp /tmp/hasync/config.template.tmpl ~/Automation/HA-ZONT-Modbus/config.yml
|
||||||
|
|
||||||
|
# 3) коммит + push
|
||||||
|
cd ~/Automation/HA-ZONT-Modbus
|
||||||
|
git add config.yml homeassistant/{automations.yaml,configuration.yaml,go2rtc.yaml}
|
||||||
|
git commit -m "Sync from t610 prod: ..."
|
||||||
|
git push -u origin main
|
||||||
|
git ls-remote origin refs/heads/main # SHA должен == git rev-parse HEAD
|
||||||
|
```
|
||||||
|
|
||||||
|
#### К-2. 🔶 АВТОБЭКАП НА TRUENAS — план, ждёт выбора Alex
|
||||||
|
|
||||||
|
**Факт-проверка сетевых путей (2026-09-14):**
|
||||||
|
|
||||||
|
| Путь | Статус |
|
||||||
|
|---|---|
|
||||||
|
| **t610 → TrueNAS** (`192.168.2.176` → `192.168.2.197`) | ✅ **ping OK с t610** |
|
||||||
|
| **Mac → TrueNAS** (`192.168.2.197`) | ❌ **ping FAIL** — прямого пути Mac↔TrueNAS сейчас нет |
|
||||||
|
| **Mac → Gitea** (`git.mallexxx.duckdns.org`) | ✅ HTTP 200 (через DDNS/внешний путь) |
|
||||||
|
| **Mac → t610** SSH | ✅ работает (`ssh root@192.168.2.176`, аддон `core_ssh`) |
|
||||||
|
|
||||||
|
**Дополнительные факты:**
|
||||||
|
- `rclone` на Mac есть (`/opt/homebrew/bin/rclone`), но **`rclone listremotes` пуст** — конфиг с `mailru-crypt` живёт **только на TrueNAS**. Настраивать remotes на Mac не нужно, если бэкап делается на стороне NAS.
|
||||||
|
- Запись в `/mnt/RED_2TB/backup/` на TrueNAS требует **root**; у `truenas_admin` **нет passwordless sudo** (подтверждённый питфолл, §5-кватер-Б). Значит: либо root-ключ на TrueNAS, либо способ писать в share от непривилегированного юзера, либо стейджинг в `/tmp/` + ручная подмена Alex'ом.
|
||||||
|
- **Точки входа на TrueNAS:** `ssh truenas_admin@mallexxx.duckdns.org`; в LAN — `192.168.2.197`. На Mac прямого пути нет.
|
||||||
|
|
||||||
|
**Три варианта (ждём выбор Alex):**
|
||||||
|
|
||||||
|
| # | Схема | Плюсы | Минусы / что нужно |
|
||||||
|
|---|---|---|---|
|
||||||
|
| **A** | Крон **на t610**: `tar /config` → `scp` на TrueNAS в `/mnt/RED_2TB/backup/t610/` | Не зависит от Mac, работает всегда | Нужен способ записи под root на NAS (sudo нет) — root-ключ или отдельный share |
|
||||||
|
| **B** | Крон-задача **на TrueNAS**: раз в сутки pull `t610:/config` → `/mnt/RED_2TB/backup/t610/` | Права root на месте, rclone-crypt уже настроен | Нужен ssh-ключ с TrueNAS → t610 |
|
||||||
|
| **C** | Крон **на Mac**: `scp`/`rsync` t610 → коммит в `HA-ZONT-Modbus` + push в Gitea | Ничего нового на NAS не нужно | Mac может спать/быть выключен — как **единственный** бэкап ненадёжно |
|
||||||
|
|
||||||
|
**Рекомендация агента:** **B** (TrueNAS всегда включён, root есть, rclone-crypt уже уносит `/mnt/RED_2TB/backup/` в Mail.ru по воскресеньям 03:00 — см. [[family/how-to/truenas-rclone-backup]]). **Канон «положить файл в `/mnt/RED_2TB/backup/` — и он сам уедет в облако»** — использовать вместо изобретения отдельной rclone-задачи.
|
||||||
|
|
||||||
|
**Открытые вопросы к Alex (блокируют выполнение):**
|
||||||
|
1. Вариант — **A**, **B** или **C**?
|
||||||
|
2. Если **B**: разрешить создать ssh-ключ TrueNAS → t610 (или указать, что ключ уже есть).
|
||||||
|
3. Если **A**: как писать на TrueNAS — root-ключ, отдельный share, или стейджинг + ручная подмена?
|
||||||
|
|
||||||
|
> 📌 **Процессная заметка.** Первый заход сессии агент потратил на «пошаговый план» вместо немедленного **факт-дифа** прод↔репо — Alex осадил: *«Ты пошаговый план делаешь»*. **Правило: когда задача — «синкнуть то, что изменилось», первым действием идёт `diff`/`shasum` боевых файлов против репо, а не описание процесса.** План нужен там, где есть необратимые/рискованные изменения.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
**🔴 ПРОЦЕССНЫЙ УРОК СЕССИИ (для будущих сессий):**
|
**🔴 ПРОЦЕССНЫЙ УРОК СЕССИИ (для будущих сессий):**
|
||||||
@@ -3185,3 +3267,4 @@ ssh root@192.168.2.176 'ha apps rebuild local_modbus-bridge && ha apps restart l
|
|||||||
- [[Modbus/RTU_Framing_Source_Analysis]] — канон сборки RTU-кадров (pymodbus/libmodbus), обоснование фикса §5-кватер-З
|
- [[Modbus/RTU_Framing_Source_Analysis]] — канон сборки RTU-кадров (pymodbus/libmodbus), обоснование фикса §5-кватер-З
|
||||||
- [[family/how-to/nodered-ventilation]] — автоматика вентиляции в Node-RED (flows на t610)
|
- [[family/how-to/nodered-ventilation]] — автоматика вентиляции в Node-RED (flows на t610)
|
||||||
- [[family/how-to/truenas-sata-ports-and-zfs-pools]] — железо TrueNAS (диски/пулы, для контекста)
|
- [[family/how-to/truenas-sata-ports-and-zfs-pools]] — железо TrueNAS (диски/пулы, для контекста)
|
||||||
|
- [[family/how-to/truenas-rclone-backup]] — rclone-бэкап TrueNAS → Mail.ru (куда ложить бэкапы t610, §5-кватер-К)
|
||||||
|
|||||||
Reference in New Issue
Block a user