[2026-09-02] eagle: family/documents/vault-sync/2026-08-31-syncthing-truenas-incident.md family/documents/vault-sync/2026-09-02-restore-privilege-scope.md family/how-to/arr-stack-taiga.md family/how-to/syncthing-truenas-android.md family/how-to/vault-git-sync.md
This commit is contained in:
@@ -1,11 +1,13 @@
|
||||
---
|
||||
tags: [syncthing, truenas, debug, incident]
|
||||
created: 2026-08-31
|
||||
status: diagnosed
|
||||
status: resolved-syncthing (see 2026-09-02 for cascade)
|
||||
---
|
||||
|
||||
# Incident: Syncthing не синкается с TrueNAS (после restore)
|
||||
|
||||
> **UPDATE 2026-09-02:** Syncthing-фикс подтверждён рабочим (см. ниже «Резолюция 2026-09-02»). НО выяснилось, что та же поломка прав ред 921/0000 поразила и `storage/git/` (bare repo obsidian → git-sync на маке стоит, ahead 55) и все медиа-папки (`storage/{Movies,Cartoons,Downloads,Music,series,shared}`) → arr/jellyfin-стек на TrueNAS неработоспособен. См. `family/documents/vault-sync/2026-09-02-restore-privilege-scope.md`.
|
||||
|
||||
**Дата диагностики:** 2026-08-31
|
||||
**Симптом:** "Syncthing не конектится к TrueNAS; TrueNAS не в нашей сети, доступен через внешний адрес". В UI папка не синкается / процентов нет.
|
||||
|
||||
@@ -53,6 +55,31 @@ getent passwd 921 → transmission:x:921:921
|
||||
3. Рестарт контейнера: `docker compose -f /mnt/RED_2TB/docker/syncthing/docker-compose.yml restart`
|
||||
4. Дождаться `Completed scan`, проверить статус папки через REST.
|
||||
|
||||
## Резолюция 2026-09-02 (Syncthing — подтверждено рабочим)
|
||||
|
||||
**Факт (проверка read-only с хоста TrueNAS):** синхронизация obsidian починена и работает.
|
||||
|
||||
Критически важная деталь диагностики 31-08: **в compose-файле контейнера mount указывает на ДРУГУЮ папку, не ту, что в оригинальной доке:**
|
||||
|
||||
```yaml
|
||||
volumes:
|
||||
- /mnt/RED_2TB/storage/obsidian-syncthing:/var/syncthing/obsidian-vault # актуальный mount
|
||||
```
|
||||
|
||||
(в `family/how-to/syncthing-truenas-android.md` и исходном compose стоит `/storage/obsidian` без `-syncthing` — УСТАРЕЛО).
|
||||
|
||||
**Какие папки есть и рабочая ли состояния:**
|
||||
```
|
||||
/mnt/RED_2TB/storage/obsidian drwxrwx--- truenas_admin (950) Jul 23
|
||||
/mnt/RED_2TB/storage/obsidian-syncthing drwxrwx--- truenas_admin (950) Aug 31 ← рабочий mount
|
||||
/mnt/RED_2TB/storage/obsidian/.stfolder → НЕТ (не нужен, это не sync target)
|
||||
/mnt/RED_2TB/storage/obsidian-syncthing/.stfolder → ЕСТЬ (маркер syncthing, uid 950)
|
||||
```
|
||||
|
||||
Права обеих папок починены на `950:950 truenas_admin` (были `d--------- 921:921`). `.stfolder` есть в `obsidian-syncthing` — это активная sync-копия vault. Папка после фикса в `Completed scan`, телефон подтянул зависшие файлы.
|
||||
|
||||
**Итог:** рабочий mount в compose — `obsidian-syncthing`, никакой rename папки не требуется. Док `syncthing-truenas-android.md` требует обновления своего `volumes:` блока до `obsidian-syncthing`.
|
||||
|
||||
## Затрагиваемые файлы (лог телефона)
|
||||
- `family/how-to/truenas-access.md`
|
||||
- `family/how-to/truenas-sata-ports-and-zfs-pools.md`
|
||||
|
||||
@@ -0,0 +1,107 @@
|
||||
---
|
||||
tags: [truenas, restore, incident, git, media, arr, permission]
|
||||
created: 2026-09-02
|
||||
status: diagnosed
|
||||
---
|
||||
|
||||
# Incident 2026-09-02: Поломка прав uid 921/0000 после restore — масштаб и влияния
|
||||
|
||||
**Сводный инцидент-документ.** Родитель: `2026-08-31-syncthing-truenas-incident.md` (Syncthing). Здесь документируем подтверждённый масштаб той же поломки прав и её воздействие на git-sync (мак/Eagle) и медиа/arr-стек на TrueNAS.
|
||||
|
||||
**Корень (общий для всех):** после восстановления из бэкапа `/mnt/RED_2TB/storage/*` стал принадлежать **uid 921 = `transmission`** с правами `----------`/`d---------` (0000), вместо `truenas_admin` (950). Контейнеры, пользователи и git, работающие под другими uid, теряют доступ.
|
||||
|
||||
---
|
||||
|
||||
## 1. Git-sync obsidian на маке (Eagle) — СТОИТ (ahead 55)
|
||||
|
||||
**Симптом на `~/obsidian`:**
|
||||
```
|
||||
git status → ## main...nas/main [ahead 55]
|
||||
git fetch/push → fatal: '/mnt/RED_2TB/storage/git/obsidian-vault.git' does not appear to be a git repository
|
||||
```
|
||||
|
||||
**Причина (read-only проверка TrueNAS):**
|
||||
```
|
||||
/mnt/RED_2TB/storage/git d--------- 4 921 921
|
||||
/mnt/RED_2TB/storage/git/obsidian-vault.git (permission denied — вложено в storage/git)
|
||||
```
|
||||
Папка `storage/git/` (внутри — bare repo `obsidian-vault.git`) с правами 0000 / owner 921. Git на маке (SSH-ключ жив, `CONN_OK` ✅) не может открыть bare repo → fetch/push падают → локальные 55 коммитов не уходят.
|
||||
|
||||
**Важно про механизм cron — НЕ Hermes cron, а launchd:**
|
||||
- Агент: `~/Library/LaunchAgents/com.sync-vault.plist`
|
||||
- Программа: `/Users/admin/scripts/sync-vault.sh`, `StartInterval = 300` сек (5 мин)
|
||||
- Состояние: **активен** (`launchctl list` → `com.sync-vault`), `runs = 3762`, `last exit code = 0`
|
||||
- `sync-vault-lib.sh` **умышленно глушит** недоступность remote: если `git fetch` падает → логирует и `exit 0`. Поэтому launchd показывает exit code 0 при фактически сломанном sync (`ahead 55`). Это **не** сбой cron — это корректное поведение скрипта, скрывающее dead remote.
|
||||
- Системный crontab на маке пуст (`crontab -l` нет), `/etc/crontab` нет. Запуск — только через launchd `${LABEL}`.
|
||||
|
||||
**Связанные доки:** `family/how-to/vault-git-sync.md`, `family/how-to/obsidian-sync.md`.
|
||||
|
||||
---
|
||||
|
||||
## 2. Медиа-папки TrueNAS — сломаны (uid 921, d---------/drwx------)
|
||||
|
||||
Read-only проверка `ls -ld /mnt/RED_2TB/storage/`:
|
||||
```
|
||||
d--------- transmission transmission storage/Cartoons
|
||||
d--------- transmission transmission storage/Downloads
|
||||
d--------- transmission transmission storage/Movies
|
||||
d--------- transmission transmission storage/Music
|
||||
drwx------ transmission transmission storage/series
|
||||
d--------- transmission transmission storage/shared
|
||||
```
|
||||
(отображается как `transmission` = uid 921 — тот же, что и в инциденте; права 0000/700 сломаны для внешних сервисов.) `Movies-Radarr`, `Series-Sonarr` — не существуют (старая схема, на TrueNAS актуальны только `storage/`-медиа).
|
||||
|
||||
Медиа-папки починки не проходили (в отличие от `obsidian`/`obsidian-syncthing`).
|
||||
|
||||
---
|
||||
|
||||
## 3. Arr/Jellyfin-стек на TrueNAS — выключен + не сможет работать из-за прав
|
||||
|
||||
**Факты:**
|
||||
- В `docker ps -a` НЕТ ни radarr/sonarr/prowlarr/jellyfin контейнеров (ни запущенных, ни остановленных). Стек не пересоздавался после проблемного периода.
|
||||
- Composes живут в `/mnt/RED_2TB/docker/arr/`: `docker-compose.yml` (prowlarr/radarr/sonarr/jellyfin), подпапки `prowlarr/ radarr/ sonarr/ jellyfin/ media-pipeline/`.
|
||||
- `docker/arr/docker-compose.yml` монтирует `/mnt/RED_2TB/storage` в radarr/sonarr (rw) и jellyfin (`:ro`). При сломанных правах медиа-папок контейнеры не смогут читать/импортировать → пустая библиотека.
|
||||
- **Работает только `transmission`** (Up 8 days), его compose отдельный: `/mnt/RED_2TB/docker/transmission/`. config владелец `transdamon`/911. RPC `transmission-remote` вернул `403 Forbidden` — auth вкл., статус торрентов извне без токена не читается.
|
||||
|
||||
**Чтобы запустить стек:** восстановить права медиа-папок `storage/` (150 и выше 950/нужный сервисный uid, rwX) → `cd /mnt/RED_2TB/docker/arr && docker compose up -d`.
|
||||
|
||||
**Дексо стек** — разделение ролей (см. `family/how-to/arr-stack-taiga.md`):
|
||||
- Taiga (TrueNAS) = acquisition (transmission качает, arr добавляет)
|
||||
- Kraken = serving (jellyfin на план-сервире). Jellyfin на TrueNAS — acquisition-side media storage, не primary serving.
|
||||
|
||||
---
|
||||
|
||||
## 4. Несвязанные находки (не трогала диагностика, для контекста)
|
||||
|
||||
- Контейнер `library-app` (`library`) в restart-loop: `FileNotFoundError: '/library/flibusta_fb2_local.inpx'` — это приложение полки книг Flibusta, монтирует `/mnt/RED_2TB/storage/Downloads/fb2.Flibusta.Net → /library`; INPX-файла на пути нет. Не связано с поломкой прав; ручной фикс только по запросу.
|
||||
|
||||
---
|
||||
|
||||
## Общий план (НЕ выполнен — требует подтверждения + бэкап ACL, единый по всем каталогам)
|
||||
|
||||
```bash
|
||||
# 1. Бэкап текущих ACL всех затронутых
|
||||
getfacl -R /mnt/RED_2TB/storage > /mnt/RED_2TB/backup/_acl_storage_$(date +%F).facl
|
||||
|
||||
# 2а. bare git repo (восстановить git-sync на маке)
|
||||
sudo chown -R 950:950 /mnt/RED_2TB/storage/git
|
||||
sudo chmod -R u+rwX,g+rwX /mnt/RED_2TB/storage/git
|
||||
# → на маке: bash ~/scripts/sync-vault.sh (55 коммитов уедут)
|
||||
|
||||
# 2б. медиа-папки (чтобы arr/jellyfin заработал)
|
||||
sudo chown -R 950:950 /mnt/RED_2TB/storage/{Movies,Cartoons,Downloads,Music,series,shared,...}
|
||||
sudo chmod -R u+rwX,g+rwX /mnt/RED_2TB/storage/{Movies,Cartoons,Downloads,Music,series,shared,...}
|
||||
|
||||
# 3. Запуск arr-стека
|
||||
cd /mnt/RED_2TB/docker/arr && docker compose up -d
|
||||
```
|
||||
|
||||
> ⚠️ Перед выполнением сверить фактического владельца/права у каждого пути и какие uid-сервисы должны читать. Не менять вслепую — сначала уточнить exact mount/service scopes.
|
||||
|
||||
## Связанные заметки
|
||||
- [[2026-08-31-syncthing-truenas-incident]] — вызвавший инцидент + фикс syncthing
|
||||
- [[arr-stack-taiga]] — acquisition-стек на TrueNAS
|
||||
- [[arr-stack-kraken]] — serving-стек (Kraken)
|
||||
- [[vault-git-sync]] — git-sync алгоритм и скрипты
|
||||
- [[obsidian-sync]] — общая схема Eagle↔Taiga↔Kraken
|
||||
- [[syncthing-truenas-android]] — syncthing схема (требует обновления volumes → `obsidian-syncthing`)
|
||||
Reference in New Issue
Block a user