[2026-09-26] eagle: family/index.md family/plans/lidarr-taiga-deploy.md family/projects/media-toolbox-taiga.md personal/plans/music-tags-review/1-needs-decision.md personal/plans/music-tags-review/2-medium-confidence.md personal/plans/music-tags-review/3-high-confidence.md personal/plans/music-tags-review/music-tags-review.md

This commit is contained in:
Alexey Martemyanov committed 2026-09-26 14:38:41 +06:00
1 parent 35dfecbe02
commit e200596c45
7 files changed
+5134 -5820

No files matched your search

+4
View File
@@ -45,6 +45,10 @@ Hub: [[family/how-to/truenas-infrastructure|TrueNAS Infrastructure]]
- [[family/how-to/truenas-infrastructure|TrueNAS Infrastructure]] — Тайга NAS - [[family/how-to/truenas-infrastructure|TrueNAS Infrastructure]] — Тайга NAS
- [[family/how-to/truenas-access|TrueNAS Access]] - [[family/how-to/truenas-access|TrueNAS Access]]
- [[family/how-to/truenas-rclone-backup|TrueNAS Rclone Backup]] - [[family/how-to/truenas-rclone-backup|TrueNAS Rclone Backup]]
- [[family/projects/media-toolbox-taiga|Media Toolbox (Taiga)]] — *arr стек на TrueNAS
- [[family/how-to/arr-stack-taiga|Arr Stack — Taiga]]
- [[family/plans/lidarr-taiga-deploy|Lidarr на Taiga]] — 🟡 в работе, прокси-обход
- [[family/how-to/jellyfin-config|Jellyfin Config]] — живой инстанс на Taiga
- [[family/documents/google-books-api-key|Google Books API Key]] — ключ для library-app - [[family/documents/google-books-api-key|Google Books API Key]] — ключ для library-app
- [[family/documents/home-access-codes|Коды доступа]] — коды замков, ключи активации, PIN-коды - [[family/documents/home-access-codes|Коды доступа]] — коды замков, ключи активации, PIN-коды
+16 -2
View File
@@ -291,11 +291,25 @@ https://kinozal.tv/ → 000
## Питфоллы (Taiga-специфика, проверено) ## Питфоллы (Taiga-специфика, проверено)
- **`dns: [8.8.8.8]` в compose НЕ обходит блокировку** — проверено, NXDOMAIN с 8.8.8.8 тоже. - **`dns: [8.8.8.8]` в compose НЕ обходит блокировку** — проверено, NXDOMAIN с 8.8.8.8 тоже.
Провайдерский DNS отдаёт NXDOMAIN и для внешнего резолвера, т.к. DNS-трафик идёт через провайдера.
- **На хосте TrueNAS нет `curl` и `python3`** в PATH (zsh). `wget` есть внутри контейнеров. - **На хосте TrueNAS нет `curl` и `python3`** в PATH (zsh). `wget` есть внутри контейнеров.
BusyBox `wget` **не поддерживает `-e`** (proxy options) — искать другой способ прокси-теста. BusyBox `wget` **не поддерживает `-e`** и **`--method=PUT`**.
- **`sqlite3` на хосте НЕ установлен** (вопреки старой доке). **В контейнерах linuxserver есть `/usr/bin/curl`** — использовать его для API-вызовов.
- **`sqlite3` на хосте НЕ установлен** (вопреки старой доке). Копировать `.db` на Mac через
`ssh ... "cat /path/db" > /tmp/db` и читать локальным `sqlite3`.
- **Caddyfile root-owned** — правка только через `docker run --rm -v /:/host alpine` (см. skill `truenas-caddy-service-deploy`). - **Caddyfile root-owned** — правка только через `docker run --rm -v /:/host alpine` (см. skill `truenas-caddy-service-deploy`).
Тот же приём работает для любого root-owned каталога (подтверждено на `/mnt/RED_2TB/docker/vless-proxy/` — `0:0 755`;
`cd` туда работает, запись — нет).
- **`docker network connect` теряется при пересоздании** — прописывать сети в compose. - **`docker network connect` теряется при пересоздании** — прописывать сети в compose.
- **Prowlarr API PUT возвращает 202, но кеш не сброшен** — `docker restart prowlarr` обязателен,
иначе `GET` покажет старое значение и БД останется прежней.
- **Prowlarr `?forceSave=true`** — обход валидации доступа к сайту при PUT индексеров
(`400 CloudFlare Protection` → `202`).
- **`DELETE /api/v1/indexerstatus` → HTTP 405.** Сброс статуса делать через `POST /api/v1/indexer/testall`
(он сбрасывает `disabledTill` сам).
- **`jq` с интерполяцией `\(...)` в inline SSH-строке ломается** — писать в файл-скрипт.
- **JSON-правка `awk`/`sed` ломается при `tags` последним полем** — обрезать `awk '/"tags":/ { exit }'`
и дописывать хвост через `printf`.
- `ls -la` на TrueNAS показывает `d---------` — норма для NFSv4 ACL; реальные права через `midclt call filesystem.getacl`. - `ls -la` на TrueNAS показывает `d---------` — норма для NFSv4 ACL; реальные права через `midclt call filesystem.getacl`.
- Папки медиа: uid 950 `drwxrwx---`, root `/mnt/RED_2TB/storage` — `drwxr-x--x` (traverse работает). - Папки медиа: uid 950 `drwxrwx---`, root `/mnt/RED_2TB/storage` — `drwxr-x--x` (traverse работает).
+45 -24
View File
@@ -75,15 +75,18 @@ Caddy: subdomain-based роутинг, без URL Base. Let's Encrypt автом
| radarr | media_net + caddy_default | | radarr | media_net + caddy_default |
| sonarr | media_net + caddy_default | | sonarr | media_net + caddy_default |
| jellyfin | caddy_default | | jellyfin | caddy_default |
| transmission | transmission_default + **media_net** (подключён вручную) | | transmission | transmission_default + **media_net** (персистентно в compose) |
| vless-proxy | hermes_taiga_net + **media_net** (подключён вручную) | | vless-proxy | hermes_taiga_net + **media_net** (персистентно в compose, добавлено 2026-09-26) |
> ✅ **ПОПРАВКА 2026-09-26 (проверено на живой машине):** строка про `vless-proxy` в `media_net` > ✅ **ПОПРАВКА 2026-09-26 (проверено на живой машине):** строка про `vless-proxy` в `media_net` была
> **НЕВЕРНА.** Факт: `docker inspect vless-proxy` → только `hermes_taiga_net` (172.16.15.2). > **НЕВЕРНА.** Факт на момент начала сессии: `docker inspect vless-proxy` → только `hermes_taiga_net`
> `docker network inspect media_net` → участники `prowlarr radarr transmission sonarr` > (172.16.15.2). `docker network inspect media_net` → участники `prowlarr radarr transmission sonarr`.
> (vless-proxy отсутствует). `docker exec prowlarr getent hosts vless-proxy` → NO DNS. > `docker exec prowlarr getent hosts vless-proxy` → NO DNS.
> Следствие: прокси-маршрут для индексеров, описанный в §«Prowlarr — прокси», **никогда не работал**. > Следствие: прокси-маршрут для индексеров, описанный в §«Prowlarr — прокси», **никогда не работал**.
> План починки — [[personal/plans/lidarr-taiga-and-indexer-unblock]] Фаза 0. >
> ✅ **ИСПРАВЛЕНО 2026-09-26:** `media_net` добавлена в `/mnt/RED_2TB/docker/vless-proxy/docker-compose.yml`
> (persistent) + контейнер пересоздан `--force-recreate`. Теперь `vless-proxy` = `172.16.17.6` в `media_net`,
> `getent hosts vless-proxy` из prowlarr/radarr резолвится. Полный разбор — [[family/plans/lidarr-taiga-deploy]] Фаза 0.
> >
> ⚠️ **ПОПРАВКА PUID/PGID:** `921/921` устарело (см. строку выше про PUID 921 — артефакт до > ⚠️ **ПОПРАВКА PUID/PGID:** `921/921` устарело (см. строку выше про PUID 921 — артефакт до
> restore-инцидента). Факт 2026-09-26: **все сервисы стека под uid 950**, `PUID=950 PGID=950` > restore-инцидента). Факт 2026-09-26: **все сервисы стека под uid 950**, `PUID=950 PGID=950`
@@ -149,7 +152,7 @@ Radarr/Sonarr монтируют `/mnt/RED_2TB/storage/` → `/storage/`
> "rpc-whitelist": "172.16.*.*"} > "rpc-whitelist": "172.16.*.*"}
> ``` > ```
> Radarr ОЖИДАЕТ подкаталог категории (`/storage/Downloads/radarr`) — его нет. > Radarr ОЖИДАЕТ подкаталог категории (`/storage/Downloads/radarr`) — его нет.
> Разбирать в Фазе 4 плана [[personal/plans/lidarr-taiga-and-indexer-unblock]]. > Разбирать в Фазе 4 плана [[family/plans/lidarr-taiga-deploy]].
Предполагаемый маппинг в каждом (задумано, но не выставлено): Предполагаемый маппинг в каждом (задумано, но не выставлено):
- host: `transmission` - host: `transmission`
@@ -188,30 +191,48 @@ nslookup google.com 192.168.2.2 # → OK
> Это **другой** класс, чем задокументированные «Cloudflare 403 на indexers.prowlarr.com» > Это **другой** класс, чем задокументированные «Cloudflare 403 на indexers.prowlarr.com»
> и «RuTracker Turnstile»: здесь DNS не отдаёт IP вообще. > и «RuTracker Turnstile»: здесь DNS не отдаёт IP вообще.
Прокси для обхода описан в §«Prowlarr — прокси», но **не работает** (см. поправку о сетях выше). Прокси для обхода описан в §«Prowlarr — прокси». **✅ 2026-09-26: прокси-маршрут починен** —
Полный план — [[personal/plans/lidarr-taiga-and-indexer-unblock]] Фаза 0. 3 из 6 индексеров работают. Полный разбор — [[family/plans/lidarr-taiga-deploy]] Фаза 0.
## Prowlarr — прокси для заблокированных индексеров ## Prowlarr — прокси для заблокированных индексеров
vless-proxy доступен в `media_net` как `vless-proxy:1080` (SOCKS5). `vless-proxy` доступен в `media_net` как `vless-proxy` (SOCKS5 **1080**, HTTP **1081**).
Настройка в Prowlarr: Settings → Indexers → Add Proxy: Настройка (фактическое состояние после 2026-09-26):
- Type: SOCKS5 - Прокси `vless-socks5` (id=1), Type `Socks5`, Host `vless-proxy`, Port `1080`
- Host: `vless-proxy`, Port: `1080` - Тег `proxy` (id=1) — создан; **все 6 индексеров** имеют tags `[1]`
- Tags: `[proxy]`
Индексеры с тегом `proxy`: RuTracker (заблокирован в РФ), остальные — по усмотрению. > ✅ **ИСПРАВЛЕНО 2026-09-26.** До этого таблица `Tags` в `prowlarr.db` была **ПУСТА**,
> а `Indexers.Tags` ссылался на висячий id `[1]`; `IndexerProxies.Tags` = `[]`.
> Прокси физически не был привязан ни к чему → все индексеры падали в NXDOMAIN.
>
> **Результат `POST /api/v1/indexer/testall` (2026-09-26):**
>
> | id | Индексер | Статус |
> |---|---|---|
> | 1 | RuTracker | ❌ `403 Cloudflare "Just a moment..."` на `/forum/login.php` |
> | 2 | RuTor | ✅ OK |
> | 3 | Byrutor | ✅ OK |
> | 4 | NoNaMe Club | ✅ OK |
> | 5 | Kinozal | ❌ `blocked by CloudFlare Protection` |
> | 6 | Kinozal (M) | ❌ `blocked by CloudFlare Protection` |
>
> RuTracker: `GET /forum/index.php` → **200**, `POST /forum/login.php` → **403 Cloudflare JS-challenge**.
> Остаточная проблема — Cloudflare, НЕ DNS. Решение — FlareSolverr (не установлен, ждём решение Alex).
>
> 🔴 **Важно для RuTracker/Kinozal: `kinozal.tv` МЁРТВ** (NXDOMAIN даже на выходной стороне прокси) —
> использовать `kinozal.me` (через прокси → 200).
## Индексеры (те же что на Кракене) ## Индексеры (те же что на Кракене)
| Имя | Примечание | | id | Имя | Примечание |
|-----|-----------| |-----|-----|-----------|
| RuTracker | через прокси | | 1 | RuTracker | через прокси; ⚠️ Cloudflare-челлендж на логине |
| RuTor | | | 2 | RuTor | через прокси; ✅ работает |
| Byrutor | enableRss: false | | 3 | Byrutor | через прокси; ✅ работает; `enableRss: false` |
| NoNaMe Club | | | 4 | NoNaMe Club | через прокси; ✅ работает |
| Kinozal | | | 5 | Kinozal | через прокси; ⚠️ Cloudflare Protection; URL должен быть `kinozal.me` |
| Kinozal (M) | магнет, без grab limit — предпочтительный | | 6 | Kinozal (M) | через прокси; ⚠️ Cloudflare Protection; магнет, без grab limit — предпочтительный |
`preferMagnetUrl: true` для всех → нет дневного лимита на .torrent. `preferMagnetUrl: true` для всех → нет дневного лимита на .torrent.
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
@@ -8,29 +8,13 @@ status: awaiting-approval
# Music Tags — проверка тегов # Music Tags — проверка тегов
**К правке:** 4961 файлов · **без изменений:** 2945 **К правке:** 4774 файлов · **без изменений:** 3132
> [!warning] Ничего не изменено > [!warning] Ничего не изменено
> Это план. Ставь галочки, что одобряешь. После «go» — бэкап в `Music/backup/` и применение. > Это план. Ставь галочки, что одобряешь. После «go» — бэкап в `Music/backup/` и применение.
| Блок | Файлов | | Блок | Файлов |
|---|---:| |---|---:|
| [[1-needs-decision\|Требует решения]] | 9 | | [[1-needs-decision\|Требует решения]] | 296 |
| [[2-medium-confidence\|Средняя уверенность]] | 2611 | | [[2-medium-confidence\|Средняя уверенность]] | 2031 |
| [[3-high-confidence\|Высокая уверенность]] | 2341 | | [[3-high-confidence\|Высокая уверенность]] | 2447 |
## Контекст
Сгенерировано из `~/Downloads/music-tags/tag-fix-plan.csv` скриптом
`render_grouped_doc.py` (в `~/Developer/personal-os/tools/music-tags/`).
- **Полный разбор проблемы, план и питфоллы:** [[personal/tech/music-tags-repair-truenas]]
- **Зачем это нужно:** Music-библиотеку Jellyfin нельзя создать на битых тегах
(Jellyfin раскладывает музыку по тегам, не по папкам) — [[family/how-to/jellyfin-config]]
- **Статус:** этап 3 плана ремонта (апрув Alex). Правки файлов ещё **не начаты**.
## Ограничения формата
Блоки 2 и 3 — по 730–780 КБ / 5000+ строк. Obsidian открывает, но скролл тяжёлый;
наверху каждого файла есть оглавление по папкам (клик → прыжок к разделу).
Дубли-папки в `!Детские/Сказки/` намеренно **не** включены — Alex разбирает их сам.