[2026-09-29] eagle: family/documents/vault-sync/2026-09-28-http402-balance-outage-3.md family/how-to/jellyfin-config.md family/how-to/lampac-torrents.md family/how-to/navidrome-truenas-android.md family/index.md family/plans/lidarr-artist-watchlist.md family/plans/music-jellyfin-lidarr-taiga.md family/projects/media-toolbox-taiga.md personal/tech/jellyfin-tags-cp1251-unreadable.md personal/tech/lampac-deployment.md
This commit is contained in:
1 parent
a32c0dbdae
commit
e224ac29c9
14 files changed
+20
-497
No files matched your search
@@ -31,7 +31,7 @@ RuntimeError: HTTP 402: Insufficient Balance (request_id: …)
|
|||||||
`personal/plans/balda-mm-pr8-review-fixes.md` — mode-flip), три фазы `Pushed ✓`.
|
`personal/plans/balda-mm-pr8-review-fixes.md` — mode-flip), три фазы `Pushed ✓`.
|
||||||
|
|
||||||
Второй тик (проверочный, Taiga, `07:30:03`) влил остаток бэклога `Updating 6dfedbc..0ac3efb`:
|
Второй тик (проверочный, Taiga, `07:30:03`) влил остаток бэклога `Updating 6dfedbc..0ac3efb`:
|
||||||
`family/projects/media-toolbox-taiga.md`, `personal/plans/flaresolverr-taiga-deploy.md`,
|
`family/how-to/arr-stack-taiga.md`, `personal/tech/flaresolverr-taiga.md`,
|
||||||
`personal/tech/flaresolverr-taiga.md` — 3 файла, +259/−265 (переписаны два flaresolverr-файла).
|
`personal/tech/flaresolverr-taiga.md` — 3 файла, +259/−265 (переписаны два flaresolverr-файла).
|
||||||
Потерь нет — git-синк идемпотентен, всё доехало за два тика.
|
Потерь нет — git-синк идемпотентен, всё доехало за два тика.
|
||||||
|
|
||||||
|
|||||||
@@ -433,6 +433,6 @@ POST /Items/<lib>/Refresh?Recursive=true&RefreshMode=FullRefresh
|
|||||||
- [[personal/tech/jellyfin-tags-cp1251-unreadable]] — 🔴 **КОРНЕВОЙ ДЕФЕКТ:** нет фрейма `TPE2` (albumartist); Jellyfin уходит в fallback на папки (имя файла легаси)
|
- [[personal/tech/jellyfin-tags-cp1251-unreadable]] — 🔴 **КОРНЕВОЙ ДЕФЕКТ:** нет фрейма `TPE2` (albumartist); Jellyfin уходит в fallback на папки (имя файла легаси)
|
||||||
- [[personal/tech/music-tags-repair-truenas]] — ремонт тегов (мойибаке/пустые), волна 38
|
- [[personal/tech/music-tags-repair-truenas]] — ремонт тегов (мойибаке/пустые), волна 38
|
||||||
- [[family/plans/music-jellyfin-lidarr-taiga]] — план Music → Jellyfin + Lidarr (Фаза 1 частично выполнена)
|
- [[family/plans/music-jellyfin-lidarr-taiga]] — план Music → Jellyfin + Lidarr (Фаза 1 частично выполнена)
|
||||||
- [[family/projects/media-toolbox-taiga]] — *arr стек на Taiga (Prowlarr/Radarr/Sonarr/Transmission/Jellyfin)
|
- [[family/how-to/arr-stack-taiga]] — *arr стек на Taiga (Prowlarr/Radarr/Sonarr/Transmission/Jellyfin)
|
||||||
- [[family/how-to/truenas-infrastructure]] — TrueNAS: контейнеры, доступ, структура пула
|
- [[family/how-to/truenas-infrastructure]] — TrueNAS: контейнеры, доступ, структура пула
|
||||||
- [[family/how-to/navidrome-truenas-android]] — альтернативный музыкальный сервер (Navidrome) на той же папке `Music`
|
- [[family/how-to/navidrome-truenas-android]] — альтернативный музыкальный сервер (Navidrome) на той же папке `Music`
|
||||||
@@ -494,4 +494,3 @@ Chromium: Timeout 180000ms exceeded.
|
|||||||
- [[personal/tech/lampac-torrserver]] — детальная диагностика, маршруты `/ts/`
|
- [[personal/tech/lampac-torrserver]] — детальная диагностика, маршруты `/ts/`
|
||||||
- [[personal/tech/lampac-deployment]] — деплой, плагин каталога, разбор «Мастерская сатаны» 2026-09-24
|
- [[personal/tech/lampac-deployment]] — деплой, плагин каталога, разбор «Мастерская сатаны» 2026-09-24
|
||||||
- [[family/how-to/arr-stack-kraken]] — стек Prowlarr/Radarr/Sonarr (отдельная, не связанная ветка)
|
- [[family/how-to/arr-stack-kraken]] — стек Prowlarr/Radarr/Sonarr (отдельная, не связанная ветка)
|
||||||
- [[personal/tech/prowlarr-flaresolverr-cloudflare]] — индексера Prowlarr
|
|
||||||
@@ -684,7 +684,7 @@ Lidarr матчит по MusicBrainz release groups и пишет полные
|
|||||||
— закачанное Lidarr'ом подхватывается Navidrome автоматически.
|
— закачанное Lidarr'ом подхватывается Navidrome автоматически.
|
||||||
|
|
||||||
> 🆕 **2026-09-28 — план деплоя Lidarr к Navidrome составлен, ждёт «go» Alex.**
|
> 🆕 **2026-09-28 — план деплоя Lidarr к Navidrome составлен, ждёт «go» Alex.**
|
||||||
> Полный план — [[family/plans/lidarr-taiga-deploy]] §2026-09-28.
|
> Актуальный runbook Taiga — [[family/how-to/arr-stack-taiga]].
|
||||||
> Ключевое для этой связки:
|
> Ключевое для этой связки:
|
||||||
> - **Root folder Lidarr = `/storage/Music`** — та же папка, что читает Navidrome.
|
> - **Root folder Lidarr = `/storage/Music`** — та же папка, что читает Navidrome.
|
||||||
> - 🔴 **`Write Metadata Tags` в Lidarr ОБЯЗАТЕЛЕН.** Без него Lidarr не пишет `Album Artist`,
|
> - 🔴 **`Write Metadata Tags` в Lidarr ОБЯЗАТЕЛЕН.** Без него Lidarr не пишет `Album Artist`,
|
||||||
|
|||||||
+1
-1
@@ -45,7 +45,7 @@ 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)]] — *arr стек на TrueNAS
|
||||||
- [[family/how-to/arr-stack-taiga|Arr Stack — Taiga]]
|
- [[family/how-to/arr-stack-taiga|Arr Stack — Taiga]]
|
||||||
- [[family/how-to/arr-stack-taiga|Arr stack на Taiga]] — ✅ SkyHook, Transmission и RuTracker проверены после рестарта
|
- [[family/how-to/arr-stack-taiga|Arr stack на Taiga]] — ✅ SkyHook, Transmission и RuTracker проверены после рестарта
|
||||||
- [[family/plans/lidarr-artist-watchlist|Lidarr — список артистов]] — 🟡 **150 позиций в 3 тирах** + дельта: 195 артистов «слушаю много / на NAS мало-нет»; можно ставить
|
- [[family/plans/lidarr-artist-watchlist|Lidarr — список артистов]] — 🟡 **150 позиций в 3 тирах** + дельта: 195 артистов «слушаю много / на NAS мало-нет»; можно ставить
|
||||||
|
|||||||
@@ -3,10 +3,10 @@
|
|||||||
**Дата:** 2026-09-28
|
**Дата:** 2026-09-28
|
||||||
**Статус:** ⏳ список готов — **SkyHook починен, можно ставить** (Lidarr: 1 артист, Radiohead)
|
**Статус:** ⏳ список готов — **SkyHook починен, можно ставить** (Lidarr: 1 артист, Radiohead)
|
||||||
**Namespace:** family
|
**Namespace:** family
|
||||||
**Связано:** [[family/plans/lidarr-taiga-deploy]] §«АУДИТ ВСЕГО СТЕКА» · [[personal/tech/music-library-gap-analysis]]
|
**Связано:** [[family/how-to/arr-stack-taiga]] · [[personal/tech/music-library-gap-analysis]]
|
||||||
|
|
||||||
> ⚠️ **Два дефекта стека открыты** — поставить артистов можно, но закачка не поедет,
|
> ⚠️ **Два дефекта стека открыты** — поставить артистов можно, но закачка не поедет,
|
||||||
> пока не закрыты (детали — в [[family/plans/lidarr-taiga-deploy]]):
|
> Проверять текущие ограничения и маршрутизацию в [[family/how-to/arr-stack-taiga]]:
|
||||||
> 1. 🔴 RuTracker/Kinozal/Kinozal(M) — таймаут в Prowlarr (FS-сессия без `--proxy-server`);
|
> 1. 🔴 RuTracker/Kinozal/Kinozal(M) — таймаут в Prowlarr (FS-сессия без `--proxy-server`);
|
||||||
> 2. 🔴 Lidarr → Transmission `Failed to authenticate` (креды download-client пустые).
|
> 2. 🔴 Lidarr → Transmission `Failed to authenticate` (креды download-client пустые).
|
||||||
|
|
||||||
|
|||||||
@@ -731,7 +731,7 @@ TAG:ID3v1 Comment=ñêàçêà ← 🔑 ñêàçêà = "сказ
|
|||||||
|
|
||||||
## ⚠️ КОНФЛИКТ С ПРЕДЫДУЩИМ РЕШЕНИЕМ ALEX — ТРЕБУЕТ ПОДТВЕРЖДЕНИЯ
|
## ⚠️ КОНФЛИКТ С ПРЕДЫДУЩИМ РЕШЕНИЕМ ALEX — ТРЕБУЕТ ПОДТВЕРЖДЕНИЯ
|
||||||
|
|
||||||
В [[family/plans/lidarr-taiga-deploy]] (2026-09-26) зафиксировано решение Alex:
|
В [[family/how-to/arr-stack-taiga]] зафиксирована актуальная схема Taiga:
|
||||||
|
|
||||||
| # | Вопрос | Решение 2026-09-26 |
|
| # | Вопрос | Решение 2026-09-26 |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
@@ -765,7 +765,7 @@ TAG:ID3v1 Comment=ñêàçêà ← 🔑 ñêàçêà = "сказ
|
|||||||
`backup_conv40` прошёл успешно.
|
`backup_conv40` прошёл успешно.
|
||||||
|
|
||||||
> 🔑 **Вывод:** аргумент «сначала ремонт тегов, библиотеку не создавать» **устарел**.
|
> 🔑 **Вывод:** аргумент «сначала ремонт тегов, библиотеку не создавать» **устарел**.
|
||||||
> Именно он блокировал Фазу 3 в [[family/plans/lidarr-taiga-deploy]].
|
> Подробная проверка — в [[family/how-to/arr-stack-taiga]].
|
||||||
> Остаточные дефекты — 29 файлов (16 битых + 13 DRM) из [[personal/tech/music-broken-toload]];
|
> Остаточные дефекты — 29 файлов (16 битых + 13 DRM) из [[personal/tech/music-broken-toload]];
|
||||||
> они и раньше объявлялись нерепарируемыми и ждут перезагрузки. **Это не блокер библиотеки.**
|
> они и раньше объявлялись нерепарируемыми и ждут перезагрузки. **Это не блокер библиотеки.**
|
||||||
|
|
||||||
@@ -999,7 +999,7 @@ lidarr.mallexxx.duckdns.org {
|
|||||||
1. `docker ps` — 6 сервисов + lidarr Up, uid 950.
|
1. `docker ps` — 6 сервисов + lidarr Up, uid 950.
|
||||||
2. Health Radarr/Sonarr/Lidarr — без `RemotePathMappingCheck`.
|
2. Health Radarr/Sonarr/Lidarr — без `RemotePathMappingCheck`.
|
||||||
3. Jellyfin Music — треки видны, бэкапы не проиндексированы.
|
3. Jellyfin Music — треки видны, бэкапы не проиндексированы.
|
||||||
4. Обновить доки: `jellyfin-config`, `media-toolbox-taiga`, `lidarr-taiga-deploy`.
|
4. Обновить доки: `jellyfin-config`, `arr-stack-taiga`.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -1154,9 +1154,9 @@ docker exec jellyfin /usr/lib/jellyfin-ffmpeg/ffprobe -v error \
|
|||||||
|
|
||||||
## Связанные заметки
|
## Связанные заметки
|
||||||
|
|
||||||
- [[family/plans/lidarr-taiga-deploy]] — Фаза 0 (прокси для индексеров) выполнена 2026-09-26
|
- [[family/how-to/arr-stack-taiga]] — актуальный arr runbook Taiga
|
||||||
- [[family/how-to/jellyfin-config]] — живой инстанс Jellyfin, Музыкальная библиотека
|
- [[family/how-to/jellyfin-config]] — живой инстанс Jellyfin, Музыкальная библиотека
|
||||||
- [[family/projects/media-toolbox-taiga]] — *arr стек на Taiga
|
- [[family/how-to/arr-stack-taiga]] — *arr стек на Taiga
|
||||||
- [[personal/tech/music-tags-repair-truenas]] — ремонт тегов (волна 38 закрыта для MP3)
|
- [[personal/tech/music-tags-repair-truenas]] — ремонт тегов (волна 38 закрыта для MP3)
|
||||||
- [[personal/tech/music-broken-toload]] — 29 битых/DRM на перезагрузку (не удалены)
|
- [[personal/tech/music-broken-toload]] — 29 битых/DRM на перезагрузку (не удалены)
|
||||||
- [[personal/tech/jellyfin-tags-cp1251-unreadable]] — **корневой дефект: нет фрейма `TPE2` (albumartist)** (имя файла легаси)
|
- [[personal/tech/jellyfin-tags-cp1251-unreadable]] — **корневой дефект: нет фрейма `TPE2` (albumartist)** (имя файла легаси)
|
||||||
@@ -1176,8 +1176,8 @@ docker exec jellyfin /usr/lib/jellyfin-ffmpeg/ffprobe -v error \
|
|||||||
|
|
||||||
## Связанные заметки
|
## Связанные заметки
|
||||||
|
|
||||||
- [[family/plans/lidarr-taiga-deploy]] — Фаза 0 (прокси для индексеров) выполнена 2026-09-26
|
- [[family/how-to/arr-stack-taiga]] — актуальный arr runbook Taiga
|
||||||
- [[family/how-to/jellyfin-config]] — живой инстанс Jellyfin, план Music-библиотеки
|
- [[family/how-to/jellyfin-config]] — живой инстанс Jellyfin, план Music-библиотеки
|
||||||
- [[family/projects/media-toolbox-taiga]] — *arr стек на Taiga
|
- [[family/how-to/arr-stack-taiga]] — *arr стек на Taiga
|
||||||
- [[personal/tech/music-tags-repair-truenas]] — ремонт тегов (волна 38 закрыта для MP3)
|
- [[personal/tech/music-tags-repair-truenas]] — ремонт тегов (волна 38 закрыта для MP3)
|
||||||
- [[personal/tech/music-broken-toload]] — 29 битых/DRM на перезагрузку (не удалены)
|
- [[personal/tech/music-broken-toload]] — 29 битых/DRM на перезагрузку (не удалены)
|
||||||
@@ -1,473 +0,0 @@
|
|||||||
---
|
|
||||||
title: '*arr Stack на Тайге — Setup & Config'
|
|
||||||
namespace: family
|
|
||||||
type: reference
|
|
||||||
tags:
|
|
||||||
- taiga
|
|
||||||
- radarr
|
|
||||||
- sonarr
|
|
||||||
- prowlarr
|
|
||||||
- jellyfin
|
|
||||||
- arr
|
|
||||||
- media
|
|
||||||
- lidarr
|
|
||||||
- dns
|
|
||||||
- flaresolverr
|
|
||||||
- cloudflare
|
|
||||||
created: '2026-05-20'
|
|
||||||
updated: '2026-09-28'
|
|
||||||
status: deployed
|
|
||||||
---
|
|
||||||
# *arr Stack на Тайге — Setup & Config
|
|
||||||
|
|
||||||
> ⚠️ **STATE 2026-09-28 (конец сессии, аудит): SkyHook ✅ РАБОТАЕТ, но 2 дефекта открыты.**
|
|
||||||
> Проверено живым `artist/lookup?term=Astrix` → **10 результатов** ⇒ блокер метаданных снят.
|
|
||||||
> Остальные факты: Prowlarr `health: []` + карантин пуст; Radarr `health: []`; Navidrome 1207
|
|
||||||
> артистов / 7791 трек; rootfolder `/storage/Music` accessible, 911 ГБ; 7 доменов отвечают.
|
|
||||||
> 🔴 **ДЕФЕКТ 1:** RuTracker(1) + Kinozal(5) + Kinozal(M)(6) — `indexer/test` → **пустой ответ даже
|
|
||||||
> при 90 с**; работают NoNaMe/RuTor/Byrutor. FS жив (3.5.2, `status: ok`, сессия `["prowlarr"]` есть),
|
|
||||||
> теги `[1,2]` верны, карантина нет. **Первый шаг диагностики:** `docker exec flaresolverr ps aux |
|
|
||||||
> grep chromium` → искать `--proxy-server=socks5://vless-proxy:1080`.
|
|
||||||
> 🔴 **ДЕФЕКТ 2:** Lidarr → Transmission `Failed to authenticate` (креды download-client пустые;
|
|
||||||
> Transmission требует логин). Побочно `musicCategory` читается пустой — проверить, не потерялась ли.
|
|
||||||
> **Артисты в Lidarr: 1 (Radiohead)** — 150 позиций из [[family/plans/lidarr-artist-watchlist]]
|
|
||||||
> **ещё не поставлены**.
|
|
||||||
> Полный разбор — [[family/plans/lidarr-taiga-deploy]] §«АУДИТ ВСЕГО СТЕКА 2026-09-28».
|
|
||||||
|
|
||||||
> ✅ **STATE 2026-09-28 (вечер, финал): LIDARR РАБОЧИЙ — приёмка закрыта.**
|
|
||||||
> Live: **`https://lidarr.mallexxx.duckdns.org`** → HTTP 200, TLS Let's Encrypt, `health` → `[]`.
|
|
||||||
> Контейнер `lidarr` **v3.1.0.4875-ls42**, порт 8686, uid 950, `media_net` + `caddy_default`.
|
|
||||||
> API-ключ `166654ac3f054096ae0e8393fb1bf940`. Compose — в общем `/mnt/RED_2TB/docker/arr/docker-compose.yml`.
|
|
||||||
> Root folder `/storage/Music` (accessible) — **та же папка, что читает Navidrome**.
|
|
||||||
> Download client Transmission (тест связи 200), naming: `{Artist Name}/{Album Title}/{track:00} - {Track Title}`.
|
|
||||||
> Prowlarr: Application `Lidarr` id=3 `fullSync`, `syncCategories=[3000…3060]`.
|
|
||||||
> Проброшен `NoNaMe Club (Prowlarr)`.
|
|
||||||
> 🔴 **`health: []` ≠ «работает»** — проверять поиск. Проверено end-to-end:
|
|
||||||
> `artist/lookup?term=radiohead` → **10 результатов**, артист **Radiohead добавлен** (id=1),
|
|
||||||
> `/release?artistId=1` → **23 раздачи** FLAC (seeders 3–7).
|
|
||||||
> 🔑 **Как снят SkyHook-блокер (главный вывод):** `api.lidarr.audio` за Cloudflare →
|
|
||||||
> прямой запрос с IP Тайги **403**, через `vless-proxy` **200**. FlareSolverr тут НЕ помогает
|
|
||||||
> (Lidarr ходит в SkyHook сам). ⚠️ **env `HTTP_PROXY`/`HTTPS_PROXY` Lidarr НЕ ЧИТАЕТ** —
|
|
||||||
> .NET-клиент SkyHook их игнорирует. Рабочий фикс — **встроенный прокси-конфиг**:
|
|
||||||
> `PUT /api/v1/config/host/1` c `proxyEnabled=true`, `proxyType=http`,
|
|
||||||
> `proxyHostname=vless-proxy`, `proxyPort=1081`, bypass `localhost,127.0.0.1,vless-proxy`.
|
|
||||||
> Скрипт `/tmp/lidarr_set_proxy.py`. ⚠️ Порт **1081** (HTTP), не 1080 (SOCKS5).
|
|
||||||
> 🔴 **Индексеры для музыки (проверено 2026-09-28):** аудио отдают только **RuTracker(1)**,
|
|
||||||
> **NoNaMe(4)**, **Kinozal(5,6)**. **RuTor и Byrutor — `music-search available="no"`, музыки НЕТ.**
|
|
||||||
> ✅ Все 4 аудио-индексера разблокированы 2026-09-28 (FlareSolverr) — [[personal/tech/flaresolverr-taiga]].
|
|
||||||
> Полный разбор, питфоллы и креды Transmission — [[family/plans/lidarr-taiga-deploy]] §ФАКТИЧЕСКОЕ СОСТОЯНИЕ.
|
|
||||||
> ⏳ **Остаток (не блокирует Lidarr): пароль RuTracker неверен** (`Auth Failed`, форма логина
|
|
||||||
> возвращается) → нужен верный пароль от Alex; Radarr/Sonarr `RemotePathMappingCheck` —
|
|
||||||
> каталоги `Downloads/{radarr,sonarr}` созданы, нужен рестарт Radarr/Sonarr.
|
|
||||||
|
|
||||||
> ✅ **STATE 2026-09-28 (вечер): ИНДЕКСЕРЫ 6/6 РАБОЧИЕ — FlareSolverr развёрнут.**
|
|
||||||
> Все блокеры сняты. Было 3/6, стало 6/6, `health` и `indexerstatus` → `[]` (пусто).
|
|
||||||
> Поиск «matrix» → **256 результатов** (RuTor 100, RuTracker 50, NoNaMe 50, Kinozal 50, Byrutor 6).
|
|
||||||
> **RuTracker впервые `valid` за всё время стека (с 2026-05-20).** Карантины id 1/5/6 сняты.
|
|
||||||
> Схема: два прокси-элемента в Prowlarr — `vless-socks5` (DNS-блок) + `flaresolverr` (Cloudflare),
|
|
||||||
> теги `[1,2]` на CF-индексеры. FlareSolverr сам ходит через `vless-proxy` (`PROXY_URL`).
|
|
||||||
> Контейнер `flaresolverr` в `arr/docker-compose.yml`, `8191`, `shm_size: 1gb`, `LOG_LEVEL=warning`.
|
|
||||||
> 🔴 Главный питфолл: FS-сессия `prowlarr`, созданная ДО появления `PROXY_URL`, навсегда
|
|
||||||
> остаётся без прокси → `ERR_NAME_NOT_RESOLVED` → ложное «blocked by CloudFlare».
|
|
||||||
> Лечится `sessions.destroy`. Swap НЕ нужен (RAM 21 GB) — Alex отклонил.
|
|
||||||
> Полный разбор, все питфоллы и команды — [[personal/tech/flaresolverr-taiga]].
|
|
||||||
|
|
||||||
> 🔴 **ПИТФОЛЛ 2026-09-28: `429 TooManyRequests` от Prowlarr ≠ rate limit.** Это **карантин**
|
|
||||||
> (`disabledTill`) — Prowlarr отдаёт 429 на ЛЮБОЙ запрос к индексеру, пока тот в карантине.
|
|
||||||
> Лечится `POST /api/v1/indexer/testall` (сбрасывает `disabledTill`), **не ожиданием**.
|
|
||||||
> Проверять `GET /api/v1/indexerstatus`. Тот же симптом сбил диагностику синка Prowlarr→Lidarr.
|
|
||||||
>
|
|
||||||
> 🔴 **ПИТФОЛЛ 2026-09-28: Transmission требует логин/пароль.** `rpc-authentication-required: true`,
|
|
||||||
> юзер `transmission_admin`. Креды — в env `/mnt/RED_2TB/docker/transmission/docker-compose.yml`
|
|
||||||
> (`USER`/`PASS`). Без них любой новый download client даёт `400 Authentication failure`.
|
|
||||||
>
|
|
||||||
> 🔴 **ПИТФОЛЛ 2026-09-28: запись в root-owned Caddyfile.** `docker cp` на bind-mounted файле
|
|
||||||
> падает `device or resource busy`; `docker run alpine -v /:/host:rw` блокируется апрувом.
|
|
||||||
> РАБОЧИЙ путь: `docker exec -i caddy sh -c 'cat > /etc/caddy/Caddyfile' < /tmp/new.txt`.
|
|
||||||
|
|
||||||
> ✅ **STATE 2026-09-27 (v6, ночь): NAVIDROME РАЗВЁРНУТ — музыкальный сервер для `Music/`.**
|
|
||||||
> Контейнер **`navidrome`** (v0.64.2) на порту **4533**, домен **`https://music.mallexxx.duckdns.org`**
|
|
||||||
> (Caddy, Let's Encrypt). Compose — `/mnt/RED_2TB/docker/navidrome/docker-compose.yml`.
|
|
||||||
> Музыка смонтирована **`rw`** (`/mnt/RED_2TB/storage/Music` → `/music`) по явному решению Alex.
|
|
||||||
> **Скан завершён: 8043 трека.** Бэкап-папки исключены через `/storage/Music/.ndignore`.
|
|
||||||
> ✅ **Главное: Navidrome читает ТЕГИ, папки игнорирует** — артисты `ДДТ`, `Красная Плесень`
|
|
||||||
> из тегов, а не `!Rock&Folk` / `z Другое`. Баг Jellyfin #18162 здесь отсутствует.
|
|
||||||
> План и все питфоллы деплоя — [[family/how-to/navidrome-truenas-android]] §v4.
|
|
||||||
> **Jellyfin остаётся для ВИДЕО** (6 библиотек, музыка там не создаётся).
|
|
||||||
|
|
||||||
> ⚠️ **Jellyfin-библиотека музыки НЕ создаётся:** попытка 2026-09-27 провалена (баг #18162,
|
|
||||||
> навигация по папкам) → полный откат, БД восстановлена. Музыка → только Navidrome.
|
|
||||||
|
|
||||||
> ✅ **STATE 2026-09-27 (v5, вечер): Music-библиотека УДАЛЕНА, БД Jellyfin ВОССТАНОВЛЕНА.**
|
|
||||||
> Контейнеры **живы** (prowlarr/radarr/sonarr/jellyfin/transmission, uid 950, media_net на месте).
|
|
||||||
> **Индексеры: 3/6 рабочих** (RuTor/Byrutor/NoNaMe ✅; RuTracker/Kinozal — Cloudflare).
|
|
||||||
> Итог по Music: библиотека создавалась, скан прошёл (7826 треков, бэкап-папки исключены через
|
|
||||||
> `.ignore`), **приёмка Alex в UI провалена** (навигация по папкам) → **полный откат**:
|
|
||||||
> `DELETE /Library/VirtualFolders` + восстановление БД из
|
|
||||||
> `/home/truenas_admin/jellyfin-config-bak-20260926-203007.tar.gz` (MD5 `b71b5d659a1262fa98b85a6ab0003f24`).
|
|
||||||
> **Сейчас: 6 библиотек, Audio=0, MusicArtist=0.**
|
|
||||||
> 🔴 **ПРИЧИНА провала: в файлах ОТСУТСТВУЕТ фрейм `TPE2` (albumartist)** — Jellyfin в music-библиотеке
|
|
||||||
> строит иерархию по `TPE2`, при его отсутствии уходит в fallback на папки и не читает `TPE1`.
|
|
||||||
> Теги **уже в UTF-16 с BOM**, диагноз «CP1251» **опровергнут**. См. [[personal/tech/jellyfin-tags-cp1251-unreadable]].
|
|
||||||
> Ремонт (простановка `TPE2` = `TPE1` по 7826 файлам) НЕ начат.
|
|
||||||
> **Lidarr НЕ установлен.** План — [[family/plans/music-jellyfin-lidarr-taiga]] (v5).
|
|
||||||
|
|
||||||
## Архитектура
|
|
||||||
|
|
||||||
Prowlarr (9696) → Radarr (7878) + Sonarr (8989) → Transmission (9091) → Jellyfin (8096)
|
|
||||||
Navidrome (4533) ← `/storage/Music` — ✅ развёрнут 2026-09-27, читает ТЕГИ (не папки)
|
|
||||||
⏳ Lidarr (8686) — план составлен 2026-09-28, ждёт «go». Связка с NAVIDROME.
|
|
||||||
→ [[family/plans/lidarr-taiga-deploy]] §2026-09-28
|
|
||||||
|
|
||||||
Staging папки (`radarr/`, `sonarr/`) невидимы в Jellyfin.
|
|
||||||
Router скрипт создаёт симлинки из staging → категоризированные библиотеки по NFO (genre + mpaa).
|
|
||||||
|
|
||||||
```
|
|
||||||
Transmission → /mnt/storage/Downloads
|
|
||||||
Radarr импортирует → /storage/radarr/<Title>/
|
|
||||||
Sonarr импортирует → /storage/sonarr/<Title>/
|
|
||||||
router.py (--apply)
|
|
||||||
movies/ cartoons/ series/
|
|
||||||
cartoons-series/ documentaries/ documentaries-series/
|
|
||||||
↓
|
|
||||||
Jellyfin
|
|
||||||
```
|
|
||||||
|
|
||||||
## Web UI (HTTPS через Caddy)
|
|
||||||
|
|
||||||
| Сервис | URL |
|
|
||||||
|--------|-----|
|
|
||||||
| Radarr | https://radarr.mallexxx.duckdns.org |
|
|
||||||
| Sonarr | https://sonarr.mallexxx.duckdns.org |
|
|
||||||
| Prowlarr | https://prowlarr.mallexxx.duckdns.org |
|
|
||||||
| Jellyfin | https://jellyfin.mallexxx.duckdns.org |
|
|
||||||
| **Navidrome** | **https://music.mallexxx.duckdns.org** — ✅ **развёрнут 2026-09-27** (музыка) |
|
|
||||||
| Transmission | https://transmission.mallexxx.duckdns.org (уже был) |
|
|
||||||
|
|
||||||
| Lidarr | https://lidarr.mallexxx.duckdns.org — ⏳ **НЕ установлен**; план составлен 2026-09-28, ждёт «go» ([[family/plans/lidarr-taiga-deploy]] §2026-09-28) |
|
|
||||||
|
|
||||||
Caddy: subdomain-based роутинг, без URL Base. Let's Encrypt автоматически.
|
|
||||||
|
|
||||||
> Правка Caddyfile — **только через alpine-контейнер** (Caddyfile root-owned, `truenas_admin`
|
|
||||||
> писать не может). Отправлять **весь файл**, не патч. См. skill `truenas-caddy-service-deploy`.
|
|
||||||
|
|
||||||
## Docker
|
|
||||||
|
|
||||||
**Compose:** `/mnt/RED_2TB/docker/arr/docker-compose.yml`
|
|
||||||
**Config dirs:** `/mnt/RED_2TB/docker/arr/{prowlarr,radarr,sonarr,jellyfin}/`
|
|
||||||
**PUID/PGID:** 921/921 (user `transmission`, тот же что владеет `/storage/`)
|
|
||||||
|
|
||||||
### Сети
|
|
||||||
|
|
||||||
| Контейнер | Сети |
|
|
||||||
|-----------|------|
|
|
||||||
| prowlarr | media_net + caddy_default |
|
|
||||||
| radarr | media_net + caddy_default |
|
|
||||||
| sonarr | media_net + caddy_default |
|
|
||||||
| jellyfin | caddy_default |
|
|
||||||
| transmission | transmission_default + **media_net** (персистентно в compose) |
|
|
||||||
| vless-proxy | hermes_taiga_net + **media_net** (персистентно в compose, добавлено 2026-09-26) |
|
|
||||||
|
|
||||||
> ✅ **ПОПРАВКА 2026-09-26 (проверено на живой машине):** строка про `vless-proxy` в `media_net` была
|
|
||||||
> **НЕВЕРНА.** Факт на момент начала сессии: `docker inspect vless-proxy` → только `hermes_taiga_net`
|
|
||||||
> (172.16.15.2). `docker network inspect media_net` → участники `prowlarr radarr transmission sonarr`.
|
|
||||||
> `docker exec prowlarr getent hosts vless-proxy` → NO DNS.
|
|
||||||
> Следствие: прокси-маршрут для индексеров, описанный в §«Prowlarr — прокси», **никогда не работал**.
|
|
||||||
>
|
|
||||||
> ✅ **ИСПРАВЛЕНО 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 — артефакт до
|
|
||||||
> restore-инцидента). Факт 2026-09-26: **все сервисы стека под uid 950**, `PUID=950 PGID=950`
|
|
||||||
> в compose. `921` — старый uid transmission, не используется.
|
|
||||||
|
|
||||||
`media_net` — внешняя сеть, создана вручную: `docker network create media_net`
|
|
||||||
|
|
||||||
## Хранилище
|
|
||||||
|
|
||||||
**Host:** `/mnt/RED_2TB/storage/` → внутри контейнеров: `/storage/`
|
|
||||||
**Transmission mount:** `/mnt/RED_2TB/storage/` → `/mnt/storage/`
|
|
||||||
|
|
||||||
### Папки
|
|
||||||
|
|
||||||
| Папка | Назначение | Jellyfin |
|
|
||||||
|-------|-----------|----------|
|
|
||||||
| `radarr/` | Radarr root (staging) | ❌ |
|
|
||||||
| `sonarr/` | Sonarr root (staging) | ❌ |
|
|
||||||
| `Movies/` | Фильмы (симлинки + старый контент) | ✅ Movies |
|
|
||||||
| `Cartoons/` | Мультики (симлинки + старый контент) | ✅ Cartoons |
|
|
||||||
| `series/` | Сериалы | ✅ Series |
|
|
||||||
| `cartoons-series/` | Мультсериалы | ✅ Cartoon Series |
|
|
||||||
| `documentaries/` | Документалки | ✅ Documentaries |
|
|
||||||
| `documentaries-series/` | Документальные сериалы | ✅ Documentary Series |
|
|
||||||
| `Music/` | Музыка (8043 трека в Navidrome, 9 категорий) | ✅ **Navidrome** (не Jellyfin!) |
|
|
||||||
| `Downloads/` | Торренты (Transmission) | ❌ |
|
|
||||||
|
|
||||||
Все папки: uid=921, gid=921, NFSv4 ACL через midclt.
|
|
||||||
|
|
||||||
> 📌 **`Music/` на 2026-09-26:** файлы лежат, `/storage` уже смонтирован в контейнер (ro), но виртуальной папки Music в Jellyfin **нет**. Разведка + 6-шаговый план (бэкап → `POST /Library/VirtualFolders` → скан → приёмка) — [[family/how-to/jellyfin-config]] §«Taiga (TrueNAS)». Доп. монтирование НЕ требуется.
|
|
||||||
> ⚠️ Структура `Music/` — плоские категории (`!Rock&Folk`, `!Retro`, `!Классика`), НЕ `Artist/Album` → для `collectionType=music` Jellyfin раскладывает по тегам, риск «Unknown Artist».
|
|
||||||
|
|
||||||
## API ключи
|
|
||||||
|
|
||||||
| Сервис | Prefix |
|
|
||||||
|--------|--------|
|
|
||||||
| Radarr | `51e201f2` |
|
|
||||||
| Sonarr | `b1eb9cdd` |
|
|
||||||
| Prowlarr | `35c8b3f4` |
|
|
||||||
| Jellyfin | `eaglesetup2026taiga` |
|
|
||||||
|
|
||||||
Получить полный ключ: `docker exec <svc> grep ApiKey /config/config.xml`
|
|
||||||
Jellyfin token создан вручную через sqlite — хранится в `/mnt/RED_2TB/docker/arr/jellyfin/data/data/jellyfin.db`.
|
|
||||||
|
|
||||||
## Remote Path Mapping (Radarr + Sonarr) — ⚠️ НЕ ПРИМЕНЁН, health жалуется
|
|
||||||
|
|
||||||
Transmission монтирует `/mnt/RED_2TB/storage/` → `/mnt/storage/`
|
|
||||||
Radarr/Sonarr монтируют `/mnt/RED_2TB/storage/` → `/storage/`
|
|
||||||
|
|
||||||
> 🔴 **ФАКТ 2026-09-26: этого маппинга в API Radarr/Sonarr НЕТ.** Health обоих даёт:
|
|
||||||
> ```
|
|
||||||
> RemotePathMappingCheck error
|
|
||||||
> "download client Transmission places downloads in /storage/Downloads/radarr
|
|
||||||
> but this directory does not appear to exist inside the container"
|
|
||||||
> ```
|
|
||||||
>
|
|
||||||
> **Фактическая причина (опровергает предположение ниже):** Transmission **не раскладывает** по
|
|
||||||
> `Downloads/radarr` — download-dir плоский:
|
|
||||||
> ```json
|
|
||||||
> {"download-dir": "/mnt/storage/Downloads",
|
|
||||||
> "incomplete-dir": "/mnt/storage/Downloads/transmission/incomplete",
|
|
||||||
> "script-torrent-done-enabled": false, "rpc-url": "/transmission/",
|
|
||||||
> "rpc-whitelist": "172.16.*.*"}
|
|
||||||
> ```
|
|
||||||
> Radarr ОЖИДАЕТ подкаталог категории (`/storage/Downloads/radarr`) — его нет.
|
|
||||||
> Разбирать в Фазе 4 плана [[family/plans/lidarr-taiga-deploy]].
|
|
||||||
|
|
||||||
Предполагаемый маппинг в каждом (задумано, но не выставлено):
|
|
||||||
- host: `transmission`
|
|
||||||
- remotePath: `/mnt/storage/Downloads/`
|
|
||||||
- localPath: `/storage/Downloads/`
|
|
||||||
|
|
||||||
## 🔴 Индексеры НЕ РАБОТАЮТ: DNS-фильтр провайдера (найдено 2026-09-26)
|
|
||||||
|
|
||||||
**Все 6 индексеров в карантине (`disabledTill` = +24 ч), `initialFailure = 2026-05-20`**
|
|
||||||
(дата первоначального деплоя) → **не работали ни одного дня.**
|
|
||||||
|
|
||||||
```
|
|
||||||
GET /api/v1/health (prowlarr) →
|
|
||||||
"Indexers unavailable due to failures for more than 6 hours:
|
|
||||||
RuTracker, RuTor, NoNaMe Club, Kinozal, Kinozal (M)"
|
|
||||||
```
|
|
||||||
|
|
||||||
**Корень — NXDOMAIN на трекеры, и с роутера, и с 8.8.8.8:**
|
|
||||||
|
|
||||||
```bash
|
|
||||||
nslookup rutracker.org 192.168.2.2 # роутер → NXDOMAIN
|
|
||||||
nslookup rutracker.org 8.8.8.8 # Google → NXDOMAIN
|
|
||||||
nslookup google.com 192.168.2.2 # → OK
|
|
||||||
```
|
|
||||||
|
|
||||||
| Домен | DNS |
|
|
||||||
|---|---|
|
|
||||||
| `rutracker.org` | ❌ NXDOMAIN |
|
|
||||||
| `rutor.info` | ❌ NXDOMAIN |
|
|
||||||
| `kinozal.tv` | ❌ NXDOMAIN |
|
|
||||||
| `nnmclub.to` | ❌ NXDOMAIN |
|
|
||||||
| `byrutgame.org` | ✅ 185.200.198.230 |
|
|
||||||
| `google.com` | ✅ |
|
|
||||||
|
|
||||||
> Это **не Pi-hole и не роутер** (8.8.8.8 тоже NXDOMAIN) — блок на стороне аплинка Тайги.
|
|
||||||
> Это **другой** класс, чем задокументированные «Cloudflare 403 на indexers.prowlarr.com»
|
|
||||||
> и «RuTracker Turnstile»: здесь DNS не отдаёт IP вообще.
|
|
||||||
|
|
||||||
Прокси для обхода описан в §«Prowlarr — прокси». **✅ 2026-09-26: прокси-маршрут починен** —
|
|
||||||
3 из 6 индексеров работают. Полный разбор — [[family/plans/lidarr-taiga-deploy]] Фаза 0.
|
|
||||||
|
|
||||||
### ✅ Перепроверено 2026-09-28 (важно: часть «блокеров» закрыта)
|
|
||||||
|
|
||||||
| Проверка | Результат |
|
|
||||||
|---|---|
|
|
||||||
| `vless-proxy` в `media_net` | ✅ `172.16.17.6`, `getent hosts vless-proxy` из prowlarr OK |
|
|
||||||
| `curl -x socks5h://vless-proxy:1080 https://rutracker.org/` | ✅ **301** |
|
|
||||||
| `… https://nnmclub.to/` | ✅ **200** |
|
|
||||||
| `… https://kinozal.me/` | ✅ **200** |
|
|
||||||
| `… https://kinozal.tv/` | ❌ **000** (домен мёртв — подтверждено) |
|
|
||||||
| `GET /api/v1/indexerproxy` | `vless-socks5` id=1, Socks5, host `vless-proxy`, port 1080, tags=[1] |
|
|
||||||
| `GET /api/v1/tag` | `proxy` id=1 (таблица Tags **не пуста** — поправка к записи 2026-09-26) |
|
|
||||||
| `GET /api/v1/indexer` | все 6 `enable=true`, **tags=[1]** (до правки 2026-09-28) |
|
|
||||||
| `GET /api/v1/search?query=matrix` | RuTor **100**, Byrutor **6** (до FS) |
|
|
||||||
| `GET /api/v1/indexerstatus` | карантин: id **1, 5, 6** (`disabledTill` +24 ч); 2/3/4 чисты |
|
|
||||||
| `docker ps -a` grep flare | **NONE** — FlareSolverr отсутствовал до 2026-09-28 |
|
|
||||||
|
|
||||||
**Итог на тот момент: остаточная проблема — ТОЛЬКО Cloudflare**, DNS-блок снят прокси-маршрутом.
|
|
||||||
`GET rutracker.org/forum/login.php` через прокси → `<title>Just a moment...</title>`
|
|
||||||
(+`challenges.cloudflare.com`) = JS-челлендж, который Prowlarr сам не проходит.
|
|
||||||
|
|
||||||
✅ **ЗАКРЫТО 2026-09-28:** FlareSolverr развёрнут → **6/6 индексеров valid**, карантины сняты,
|
|
||||||
поиск 256. Полный разбор — [[personal/tech/flaresolverr-taiga]].
|
|
||||||
|
|
||||||
🔴 **`429 TooManyRequests` от Prowlarr = карантин, не rate-limit.** Снимается
|
|
||||||
`POST /api/v1/indexer/testall` (или одиночными тестами), НЕ ожиданием.
|
|
||||||
Проверять `GET /api/v1/indexerstatus`.
|
|
||||||
|
|
||||||
⚠️ **Питфолл API на Тайге (проверено 2026-09-28):** передача `X-Api-Key` через вложенный
|
|
||||||
`docker exec … sh -c 'curl -H "X-Api-Key: …"'` съедает кавычки → **401 Unauthorized**,
|
|
||||||
хотя ключ верный. 🔴 **Рабочий приём — файл-заголовок:**
|
|
||||||
```bash
|
|
||||||
docker exec prowlarr sh -c 'printf "X-Api-Key: 35c8b3f497114076a6150ea0d9504845" > /tmp/h.txt; \
|
|
||||||
curl -s -H @/tmp/h.txt http://localhost:9696/api/v1/indexer'
|
|
||||||
```
|
|
||||||
Внутри контейнера `python3` НЕТ (только `curl` есть в linuxserver-образах) — JSON разбирать
|
|
||||||
хостовым `python3` через файл: `docker exec … > /tmp/ix.json` → `python3 -c "…"`.
|
|
||||||
Также `wget` из busybox не умеет `-H` с кавычками — предпочитать `curl -H @file`.
|
|
||||||
|
|
||||||
## Prowlarr — прокси для заблокированных индексеров
|
|
||||||
|
|
||||||
`vless-proxy` доступен в `media_net` как `vless-proxy` (SOCKS5 **1080**, HTTP **1081**).
|
|
||||||
|
|
||||||
Настройка (финал 2026-09-28):
|
|
||||||
- Прокси `vless-socks5` (id=1), Type `Socks5`, Host `vless-proxy`, Port `1080` — тег `proxy` (id=1)
|
|
||||||
- Прокси `flaresolverr` (id=2), Type `FlareSolverr`, Host `http://flaresolverr:8191/`,
|
|
||||||
**`requestTimeout=180`** — тег `flaresolverr` (id=2)
|
|
||||||
- **Индексерам за CF нужны ОБА тега `[1,2]`**: id 1, 4, 5, 6. id 2, 3 → `[1]`.
|
|
||||||
|
|
||||||
> ✅ **ИСПРАВЛЕНО 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.
|
|
||||||
>
|
|
||||||
> ✅ **РЕШЕНО 2026-09-28: FlareSolverr развёрнут, все 6 индексеров valid.**
|
|
||||||
> Прокси-элемент `flaresolverr` (id=2, host `http://flaresolverr:8191/`, `requestTimeout=180`),
|
|
||||||
> теги `[1,2]` на RuTracker/NoNaMe/Kinozal/Kinozal(M).
|
|
||||||
> FS ходит через `vless-proxy` через env **`PROXY_URL=socks5://vless-proxy:1080`**.
|
|
||||||
> Пруф: `rutracker.org/forum/login.php` → `Challenge solved!` 200.
|
|
||||||
> `health` → `[]`, `indexerstatus` → `[]`, поиск «matrix» → **256 результатов**.
|
|
||||||
> Полный разбор, 5 питфоллов и команды — [[personal/tech/flaresolverr-taiga]].
|
|
||||||
>
|
|
||||||
> 🔴 **Важно для RuTracker/Kinozal: `kinozal.tv` МЁРТВ** (NXDOMAIN даже на выходной стороне прокси) —
|
|
||||||
> использовать `kinozal.me` (через прокси → 200).
|
|
||||||
|
|
||||||
## Индексеры (те же что на Кракене)
|
|
||||||
|
|
||||||
| id | Имя | Примечание |
|
|
||||||
|-----|-----|-----------|
|
|
||||||
| 1 | RuTracker | через прокси **+ FlareSolverr**; ✅ работает (2026-09-28) |
|
|
||||||
| 2 | RuTor | через прокси; ✅ работает |
|
|
||||||
| 3 | Byrutor | через прокси; ✅ работает; `enableRss: false` |
|
|
||||||
| 4 | NoNaMe Club | через прокси; ✅ работает (FS-тег не навешен — не требуется) |
|
|
||||||
| 5 | Kinozal | через прокси **+ FlareSolverr**; ✅ `Challenge solved!` на `kinozal.me/browse.php` |
|
|
||||||
| 6 | Kinozal (M) | через прокси **+ FlareSolverr**; ✅ из 6/6 ключевое — `isValid=true` |
|
|
||||||
|
|
||||||
`preferMagnetUrl: true` для всех → нет дневного лимита на .torrent.
|
|
||||||
|
|
||||||
## router.py
|
|
||||||
|
|
||||||
**Скрипт:** `/mnt/RED_2TB/docker/arr/media-pipeline/router.py`
|
|
||||||
Адаптация kraken-версии с изменёнными путями:
|
|
||||||
|
|
||||||
```python
|
|
||||||
MEDIA_BASE = Path("/mnt/RED_2TB/storage")
|
|
||||||
SOURCES = [
|
|
||||||
("movie", MEDIA_BASE / "radarr"),
|
|
||||||
("series", MEDIA_BASE / "sonarr"),
|
|
||||||
]
|
|
||||||
TARGETS = {
|
|
||||||
"movies": MEDIA_BASE / "Movies",
|
|
||||||
"series": MEDIA_BASE / "series",
|
|
||||||
"cartoons": MEDIA_BASE / "Cartoons",
|
|
||||||
"cartoons-series": MEDIA_BASE / "cartoons-series",
|
|
||||||
"documentaries": MEDIA_BASE / "documentaries",
|
|
||||||
"documentaries-series": MEDIA_BASE / "documentaries-series",
|
|
||||||
}
|
|
||||||
JELLYFIN_URL = "http://jellyfin:8096" # или по IP
|
|
||||||
```
|
|
||||||
|
|
||||||
Запуск вручную (авто-хука нет):
|
|
||||||
```bash
|
|
||||||
ssh truenas_admin@mallexxx.duckdns.org "python3 /mnt/RED_2TB/docker/arr/media-pipeline/router.py"
|
|
||||||
# проверить, затем:
|
|
||||||
ssh truenas_admin@mallexxx.duckdns.org "python3 /mnt/RED_2TB/docker/arr/media-pipeline/router.py --apply"
|
|
||||||
```
|
|
||||||
|
|
||||||
## Отличия от Кракена
|
|
||||||
|
|
||||||
| | Kraken | Taiga |
|
|
||||||
|--|--------|-------|
|
|
||||||
| Reverse proxy | nginx path-based (`/sonarr`) | Caddy subdomain-based |
|
|
||||||
| HTTPS | нет | автоматически (Let's Encrypt) |
|
|
||||||
| PUID/PGID | 1000/1000 | 921/921 (transmission) |
|
|
||||||
| Staging папки | `movies-radarr/`, `series-sonarr/` | `radarr/`, `sonarr/` |
|
|
||||||
| Прокси для индексеров | нет | vless-proxy SOCKS5 (hermes_taiga_net) |
|
|
||||||
| Авто-синк (watchlist) | ❌ (был, убрали) | ❌ нет |
|
|
||||||
| Jellyfin users | alex + lisa | только alex |
|
|
||||||
| PGS→SRT | pgsrip + cron | TBD (при необходимости) |
|
|
||||||
|
|
||||||
## Pitfalls (задокументировано при деплое)
|
|
||||||
|
|
||||||
- `d---------` на папках в ls — это норма для NFSv4 ACL на TrueNAS. Реальные права через `midclt call filesystem.getacl`
|
|
||||||
- Не трогать ACL существующих папок (Movies, Cartoons, Downloads) — только новые
|
|
||||||
- После alpine `chown` NFSv4 ACE слетают — нужно повторно применять через midclt `filesystem.setacl`
|
|
||||||
- `indexers.prowlarr.com` отдаёт 403 Cloudflare с IP Тайги → Prowlarr не может скачать Cardigann definitions. Решение: скопировать `/config/Definitions/` с Кракена (549 yml-файлов)
|
|
||||||
- После старта Prowlarr `/indexer/schema` недоступен ~2-3 мин (HTTP timeout к indexers.prowlarr.com). Ждать
|
|
||||||
- POST /indexer зависает при добавлении Cardigann через API (capability check). Решение: import через SQLite напрямую с Кракена
|
|
||||||
- Jellyfin 10.11: `name` в POST `/Library/VirtualFolders` должен быть в **query string** (`?name=Movies&collectionType=movies`), не в body
|
|
||||||
- Transmission whitelist задаётся через env var `WHITELIST` в compose — settings.json перезаписывается при старте
|
|
||||||
- Transmission compose location: `/mnt/RED_2TB/docker/transmission/docker-compose.yml`
|
|
||||||
- ⚠️ **УТОЧНЕНО 2026-09-26: `python3` на хосте Тайги ЕСТЬ** (использовался для разбора JSON).
|
|
||||||
Не хватает **`curl`** и **`sqlite3`**. Рабочий паттерн API-вызовов — **`wget` внутри контейнера
|
|
||||||
+ хостовый `python3` для разбора**:
|
|
||||||
```bash
|
|
||||||
ssh truenas_admin@mallexxx.duckdns.org \
|
|
||||||
"docker exec prowlarr sh -c 'wget -qO- --header=\"X-Api-Key: <KEY>\" http://localhost:9696/api/v1/health'"
|
|
||||||
```
|
|
||||||
busybox-`wget` умеет только `-qO-` / `--header` / `--timeout`; **`-e use_proxy=yes` НЕ поддерживает
|
|
||||||
(GNU-опция)** → прокси-тесты внутри контейнера этим способом невозможны.
|
|
||||||
- ⚠️ **Shell-экранирование JSON через ssh** — кавычки в `--header` ломаются на нескольких уровнях.
|
|
||||||
Рабочий приём: писать результат **в файл** внутри контейнера/на хосте, разбирать отдельно.
|
|
||||||
- ⚠️ **`/etc/resolv.conf` контейнеров** = `nameserver 127.0.0.11` (Docker embedded DNS) →
|
|
||||||
в контейнерах нет `getent`; для проверки DNS использовать `nslookup`/`wget`.
|
|
||||||
|
|
||||||
## История
|
|
||||||
|
|
||||||
- **2026-09-28 (вечер)** — ✅ **ВЫПОЛНЕНО: FlareSolverr развёрнут → индексеры 6/6.**
|
|
||||||
Контейнер `flaresolverr` добавлен в `arr/docker-compose.yml` (`8191`, `media_net`,
|
|
||||||
`shm_size: 1gb`, `LOG_LEVEL=warning`, `PROXY_URL=socks5://vless-proxy:1080`).
|
|
||||||
Прокси-элемент `flaresolverr` (id=2, `requestTimeout=180`) + теги `[1,2]` на CF-индексеры.
|
|
||||||
`health` → `[]`, `indexerstatus` → `[]`, поиск «matrix» → **256**.
|
|
||||||
Главный питфолл — FS-сессия `prowlarr` не наследует `PROXY_URL` (лечится `sessions.destroy`).
|
|
||||||
Swap не трогали (RAM хватает) — Alex отклонил идею.
|
|
||||||
Полный разбор — [[personal/tech/flaresolverr-taiga]].
|
|
||||||
- **2026-09-28 (утро)** — разведка под задачу «поставить FlareSolverr как на Кра́кене».
|
|
||||||
Подтверждено, что **DNS-блокер уже закрыт** (прокси-маршрут от 2026-09-26: rutracker 301 /
|
|
||||||
nnmclub 200 / kinozal.me 200; поиск RuTor 100 + Byrutor 6). Остаточная проблема —
|
|
||||||
**Cloudflare JS-челлендж** на RuTracker/Kinozal/Kinozal(M). План —
|
|
||||||
[[personal/plans/flaresolverr-taiga-deploy]].
|
|
||||||
- **2026-09-26** — разведка под задачу «Lidarr + музыка + синк с Jellyfin». Стек жив, но
|
|
||||||
**индексеры не работали с дня деплоя** (DNS-фильтр провайдера: NXDOMAIN на rutracker.org /
|
|
||||||
rutor.info / kinozal.tv / nnmclub.to с 8.8.8.8 и роутера; `byrutgame.org` резолвится).
|
|
||||||
Обнаружено, что **vless-proxy НЕ подключён к media_net** — прокси-обход никогда не работал.
|
|
||||||
Исправлено в тот же день (3/6 индексеров).
|
|
||||||
- **2026-05-20** — первоначальный деплой
|
|
||||||
|
|
||||||
## Связанные заметки
|
|
||||||
|
|
||||||
- [[personal/tech/flaresolverr-taiga]] — ✅ **FlareSolverr на Тайге: 6/6 индексеров, все 5 питфоллов** (2026-09-28)
|
|
||||||
- [[personal/plans/flaresolverr-taiga-deploy]] — ✅ **выполненный план** FlareSolverr на Тайге + снятие карантина индексера
|
|
||||||
- [[personal/plans/lidarr-taiga-and-indexer-unblock]] — ⏳ **план 2026-09-26:** Lidarr на Тайге + разблокировка индексеров (DNS-фильтр ✅ закрыт 2026-09-28)
|
|
||||||
- [[personal/tech/music-tags-repair-truenas]] — ремонт 7906 битых тегов (блокирует Music-библиотеку)
|
|
||||||
- [[family/how-to/jellyfin-config]] — живой инстанс Jellyfin на Тайге
|
|
||||||
- [[personal/tech/truenas-nfs4-acl-and-arrmultiuser]] — NFSv4 ACL и uid 950
|
|
||||||
@@ -653,4 +653,4 @@ POST /Items/<lib>/Refresh?Recursive=true&RefreshMode=FullRefresh
|
|||||||
- [[personal/tech/music-tags-repair-truenas]] — ремонт тегов, волна 38 (мойибаке/пустые)
|
- [[personal/tech/music-tags-repair-truenas]] — ремонт тегов, волна 38 (мойибаке/пустые)
|
||||||
- [[family/how-to/jellyfin-config]] — живой инстанс Jellyfin
|
- [[family/how-to/jellyfin-config]] — живой инстанс Jellyfin
|
||||||
- [[personal/tech/music-broken-toload]] — 29 битых/DRM
|
- [[personal/tech/music-broken-toload]] — 29 битых/DRM
|
||||||
- [[family/projects/media-toolbox-taiga]] — *arr стек
|
- [[family/how-to/arr-stack-taiga]] — *arr стек
|
||||||
@@ -21,7 +21,6 @@ related:
|
|||||||
- '[[personal/tech/multistream-single-flow-limit]]'
|
- '[[personal/tech/multistream-single-flow-limit]]'
|
||||||
- '[[family/how-to/kraken-network]]'
|
- '[[family/how-to/kraken-network]]'
|
||||||
- '[[family/how-to/tv-luna-send]]'
|
- '[[family/how-to/tv-luna-send]]'
|
||||||
- '[[personal/tech/prowlarr-flaresolverr-cloudflare]]'
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# Lampac — развёртывание и эксплуатация (Кра́кен)
|
# Lampac — развёртывание и эксплуатация (Кра́кен)
|
||||||
@@ -489,7 +488,7 @@ Lampa (TV) → «Торренты» → PidTor (модуль lampac)
|
|||||||
не повторять без явного согласия.
|
не повторять без явного согласия.
|
||||||
|
|
||||||
**Связано:** [[family/how-to/lampac-torrents]] · [[personal/tech/lampac-torrserver]] ·
|
**Связано:** [[family/how-to/lampac-torrents]] · [[personal/tech/lampac-torrserver]] ·
|
||||||
[[family/how-to/arr-stack-kraken]] · [[personal/tech/prowlarr-flaresolverr-cloudflare]]
|
[[family/how-to/arr-stack-kraken]]
|
||||||
|
|
||||||
## 🔴 2026-09-24: генератор каталога признан вторым матчером — уходит в проект
|
## 🔴 2026-09-24: генератор каталога признан вторым матчером — уходит в проект
|
||||||
|
|
||||||
@@ -4340,4 +4339,3 @@ python3 probe_ui.py "$WS"
|
|||||||
Lampa создаёт `parts` заново на каждый вызов `partNext`. Флаги однократности
|
Lampa создаёт `parts` заново на каждый вызов `partNext`. Флаги однократности
|
||||||
держать **глобально** (`window.*`) и сбрасывать по событию смены экрана.
|
держать **глобально** (`window.*`) и сбрасывать по событию смены экрана.
|
||||||
Симптом нарушения: секции **дублируются** (13 заголовков вместо 9).
|
Симптом нарушения: секции **дублируются** (13 заголовков вместо 9).
|
||||||
|
|
||||||
@@ -71,7 +71,6 @@ jac.red …results?title=Devils Workshop → 200, 2 раздачи
|
|||||||
из-за мёртвого FlareSolverr (Chrome не стартует). К пустой выдаче Lampa это прямого
|
из-за мёртвого FlareSolverr (Chrome не стартует). К пустой выдаче Lampa это прямого
|
||||||
отношения не имеет (Prowlarr в цепочку PidTor не входит), но ломает **Radarr/Sonarr** —
|
отношения не имеет (Prowlarr в цепочку PidTor не входит), но ломает **Radarr/Sonarr** —
|
||||||
то есть автозакачку. Разбор и незавершённый фикс:
|
то есть автозакачку. Разбор и незавершённый фикс:
|
||||||
[[personal/tech/prowlarr-flaresolverr-cloudflare]] §«2026-09-24».
|
|
||||||
|
|
||||||
**Список индексеров jac.red (25 шт.) — измеримо, не догадкой:**
|
**Список индексеров jac.red (25 шт.) — измеримо, не догадкой:**
|
||||||
`GET http://jac.red/api/v2.0/indexers?configured=true` → массив с `name`.
|
`GET http://jac.red/api/v2.0/indexers?configured=true` → массив с `name`.
|
||||||
|
|||||||
@@ -206,4 +206,4 @@ Alex на неё ответил «Чё блядь». **Не требовать
|
|||||||
- [[personal/tech/xray-reverse-tunnel-kraken-truenas]] — reverse-туннель, замеры egress
|
- [[personal/tech/xray-reverse-tunnel-kraken-truenas]] — reverse-туннель, замеры egress
|
||||||
- [[personal/plans/lampac-kraken]] — план развёртывания Lampac + блокер «не библиотека»
|
- [[personal/plans/lampac-kraken]] — план развёртывания Lampac + блокер «не библиотека»
|
||||||
- [[family/how-to/kraken-network]] — линки ТВ, история торможения 4K
|
- [[family/how-to/kraken-network]] — линки ТВ, история торможения 4K
|
||||||
- [[family/projects/media-toolbox-taiga]] — медиа-стек TrueNAS
|
- [[family/how-to/arr-stack-taiga]] — медиа-стек TrueNAS
|
||||||
@@ -34,7 +34,7 @@ tags:
|
|||||||
- encoding
|
- encoding
|
||||||
related:
|
related:
|
||||||
- '[[family/how-to/jellyfin-config]]'
|
- '[[family/how-to/jellyfin-config]]'
|
||||||
- '[[family/projects/media-toolbox-taiga]]'
|
- '[[family/how-to/arr-stack-taiga]]'
|
||||||
- '[[personal/tech/music-tags-rename-audit]]'
|
- '[[personal/tech/music-tags-rename-audit]]'
|
||||||
- '[[personal/plans/music-tags-wave38-fixes]]'
|
- '[[personal/plans/music-tags-wave38-fixes]]'
|
||||||
- '[[personal/plans/tagwriter-container]]'
|
- '[[personal/plans/tagwriter-container]]'
|
||||||
@@ -6752,5 +6752,5 @@ Alex трижды подряд получил вопрос там, где отв
|
|||||||
## Связанные заметки
|
## Связанные заметки
|
||||||
|
|
||||||
- [[family/how-to/jellyfin-config]] — живой инстанс Jellyfin на Taiga, план добавления Music-библиотеки
|
- [[family/how-to/jellyfin-config]] — живой инстанс Jellyfin на Taiga, план добавления Music-библиотеки
|
||||||
- [[family/projects/media-toolbox-taiga]] — *arr стек
|
- [[family/how-to/arr-stack-taiga]] — *arr стек
|
||||||
- [[family/how-to/navidrome-truenas-android]] — альтернативный музыкальный сервер на той же папке
|
- [[family/how-to/navidrome-truenas-android]] — альтернативный музыкальный сервер на той же папке
|
||||||
@@ -16,7 +16,7 @@ tags:
|
|||||||
- navidrome
|
- navidrome
|
||||||
related:
|
related:
|
||||||
- '[[family/how-to/arr-stack-taiga]]'
|
- '[[family/how-to/arr-stack-taiga]]'
|
||||||
- '[[family/projects/media-toolbox-taiga]]'
|
- '[[family/how-to/arr-stack-taiga]]'
|
||||||
- '[[family/how-to/navidrome-truenas-android]]'
|
- '[[family/how-to/navidrome-truenas-android]]'
|
||||||
---
|
---
|
||||||
# Skill `arr-media-stack-setup` — дополнения 2026-09-26
|
# Skill `arr-media-stack-setup` — дополнения 2026-09-26
|
||||||
@@ -176,4 +176,4 @@ docker logs lidarr 2>&1 | grep -i proxy # ProxyCheck failed ⇒ НЕ исп
|
|||||||
## Связанные заметки
|
## Связанные заметки
|
||||||
|
|
||||||
- [[family/how-to/arr-stack-taiga]] — актуальная реализация на Taiga
|
- [[family/how-to/arr-stack-taiga]] — актуальная реализация на Taiga
|
||||||
- [[family/projects/media-toolbox-taiga]] — состояние стека на Тайге
|
- [[family/how-to/arr-stack-taiga]] — состояние стека на Тайге
|
||||||
Reference in new issue
Block a user