diff --git a/family/documents/vault-sync/2026-09-28-http402-balance-outage-3.md b/family/documents/vault-sync/2026-09-28-http402-balance-outage-3.md index 34df14f9..d01be5dd 100755 --- a/family/documents/vault-sync/2026-09-28-http402-balance-outage-3.md +++ b/family/documents/vault-sync/2026-09-28-http402-balance-outage-3.md @@ -31,7 +31,7 @@ RuntimeError: HTTP 402: Insufficient Balance (request_id: …) `personal/plans/balda-mm-pr8-review-fixes.md` — mode-flip), три фазы `Pushed ✓`. Второй тик (проверочный, 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-файла). Потерь нет — git-синк идемпотентен, всё доехало за два тика. diff --git a/family/how-to/jellyfin-config.md b/family/how-to/jellyfin-config.md index 018f02fd..b20d01e6 100755 --- a/family/how-to/jellyfin-config.md +++ b/family/how-to/jellyfin-config.md @@ -433,6 +433,6 @@ POST /Items//Refresh?Recursive=true&RefreshMode=FullRefresh - [[personal/tech/jellyfin-tags-cp1251-unreadable]] — 🔴 **КОРНЕВОЙ ДЕФЕКТ:** нет фрейма `TPE2` (albumartist); Jellyfin уходит в fallback на папки (имя файла легаси) - [[personal/tech/music-tags-repair-truenas]] — ремонт тегов (мойибаке/пустые), волна 38 - [[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/navidrome-truenas-android]] — альтернативный музыкальный сервер (Navidrome) на той же папке `Music` diff --git a/family/how-to/lampac-torrents.md b/family/how-to/lampac-torrents.md index 458be4df..98f94ae5 100755 --- a/family/how-to/lampac-torrents.md +++ b/family/how-to/lampac-torrents.md @@ -494,4 +494,3 @@ Chromium: Timeout 180000ms exceeded. - [[personal/tech/lampac-torrserver]] — детальная диагностика, маршруты `/ts/` - [[personal/tech/lampac-deployment]] — деплой, плагин каталога, разбор «Мастерская сатаны» 2026-09-24 - [[family/how-to/arr-stack-kraken]] — стек Prowlarr/Radarr/Sonarr (отдельная, не связанная ветка) -- [[personal/tech/prowlarr-flaresolverr-cloudflare]] — индексера Prowlarr diff --git a/family/how-to/navidrome-truenas-android.md b/family/how-to/navidrome-truenas-android.md index fc920202..58623c0d 100755 --- a/family/how-to/navidrome-truenas-android.md +++ b/family/how-to/navidrome-truenas-android.md @@ -684,7 +684,7 @@ Lidarr матчит по MusicBrainz release groups и пишет полные — закачанное Lidarr'ом подхватывается Navidrome автоматически. > 🆕 **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. > - 🔴 **`Write Metadata Tags` в Lidarr ОБЯЗАТЕЛЕН.** Без него Lidarr не пишет `Album Artist`, diff --git a/family/index.md b/family/index.md index dad5595b..cd23a1e8 100755 --- a/family/index.md +++ b/family/index.md @@ -45,7 +45,7 @@ Hub: [[family/how-to/truenas-infrastructure|TrueNAS Infrastructure]] - [[family/how-to/truenas-infrastructure|TrueNAS Infrastructure]] — Тайга NAS - [[family/how-to/truenas-access|TrueNAS Access]] - [[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]] — ✅ SkyHook, Transmission и RuTracker проверены после рестарта - [[family/plans/lidarr-artist-watchlist|Lidarr — список артистов]] — 🟡 **150 позиций в 3 тирах** + дельта: 195 артистов «слушаю много / на NAS мало-нет»; можно ставить diff --git a/family/plans/lidarr-artist-watchlist.md b/family/plans/lidarr-artist-watchlist.md index dee30227..26bf361f 100755 --- a/family/plans/lidarr-artist-watchlist.md +++ b/family/plans/lidarr-artist-watchlist.md @@ -3,10 +3,10 @@ **Дата:** 2026-09-28 **Статус:** ⏳ список готов — **SkyHook починен, можно ставить** (Lidarr: 1 артист, Radiohead) **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`); > 2. 🔴 Lidarr → Transmission `Failed to authenticate` (креды download-client пустые). diff --git a/family/plans/music-jellyfin-lidarr-taiga.md b/family/plans/music-jellyfin-lidarr-taiga.md index f7dd5a66..582d105f 100755 --- a/family/plans/music-jellyfin-lidarr-taiga.md +++ b/family/plans/music-jellyfin-lidarr-taiga.md @@ -731,7 +731,7 @@ TAG:ID3v1 Comment=ñêàçêà ← 🔑 ñêàçêà = "сказ ## ⚠️ КОНФЛИКТ С ПРЕДЫДУЩИМ РЕШЕНИЕМ ALEX — ТРЕБУЕТ ПОДТВЕРЖДЕНИЯ -В [[family/plans/lidarr-taiga-deploy]] (2026-09-26) зафиксировано решение Alex: +В [[family/how-to/arr-stack-taiga]] зафиксирована актуальная схема Taiga: | # | Вопрос | Решение 2026-09-26 | |---|---|---| @@ -765,7 +765,7 @@ TAG:ID3v1 Comment=ñêàçêà ← 🔑 ñêàçêà = "сказ `backup_conv40` прошёл успешно. > 🔑 **Вывод:** аргумент «сначала ремонт тегов, библиотеку не создавать» **устарел**. -> Именно он блокировал Фазу 3 в [[family/plans/lidarr-taiga-deploy]]. +> Подробная проверка — в [[family/how-to/arr-stack-taiga]]. > Остаточные дефекты — 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. 2. Health Radarr/Sonarr/Lidarr — без `RemotePathMappingCheck`. 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/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-broken-toload]] — 29 битых/DRM на перезагрузку (не удалены) - [[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/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-broken-toload]] — 29 битых/DRM на перезагрузку (не удалены) diff --git a/family/projects/media-toolbox-taiga.md b/family/projects/media-toolbox-taiga.md deleted file mode 100755 index ffcc78e3..00000000 --- a/family/projects/media-toolbox-taiga.md +++ /dev/null @@ -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// - 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...` -(+`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: \" 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 diff --git a/personal/tech/jellyfin-tags-cp1251-unreadable.md b/personal/tech/jellyfin-tags-cp1251-unreadable.md index fb9cefca..b366c522 100755 --- a/personal/tech/jellyfin-tags-cp1251-unreadable.md +++ b/personal/tech/jellyfin-tags-cp1251-unreadable.md @@ -653,4 +653,4 @@ POST /Items//Refresh?Recursive=true&RefreshMode=FullRefresh - [[personal/tech/music-tags-repair-truenas]] — ремонт тегов, волна 38 (мойибаке/пустые) - [[family/how-to/jellyfin-config]] — живой инстанс Jellyfin - [[personal/tech/music-broken-toload]] — 29 битых/DRM -- [[family/projects/media-toolbox-taiga]] — *arr стек +- [[family/how-to/arr-stack-taiga]] — *arr стек diff --git a/personal/tech/lampac-deployment.md b/personal/tech/lampac-deployment.md index a4f0a16d..6f42db8c 100755 --- a/personal/tech/lampac-deployment.md +++ b/personal/tech/lampac-deployment.md @@ -21,7 +21,6 @@ related: - '[[personal/tech/multistream-single-flow-limit]]' - '[[family/how-to/kraken-network]]' - '[[family/how-to/tv-luna-send]]' - - '[[personal/tech/prowlarr-flaresolverr-cloudflare]]' --- # Lampac — развёртывание и эксплуатация (Кра́кен) @@ -489,7 +488,7 @@ Lampa (TV) → «Торренты» → PidTor (модуль lampac) не повторять без явного согласия. **Связано:** [[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: генератор каталога признан вторым матчером — уходит в проект @@ -4340,4 +4339,3 @@ python3 probe_ui.py "$WS" Lampa создаёт `parts` заново на каждый вызов `partNext`. Флаги однократности держать **глобально** (`window.*`) и сбрасывать по событию смены экрана. Симптом нарушения: секции **дублируются** (13 заголовков вместо 9). - diff --git a/personal/tech/lampac-torrserver.md b/personal/tech/lampac-torrserver.md index 714a26cf..f952a74c 100755 --- a/personal/tech/lampac-torrserver.md +++ b/personal/tech/lampac-torrserver.md @@ -71,7 +71,6 @@ jac.red …results?title=Devils Workshop → 200, 2 раздачи из-за мёртвого FlareSolverr (Chrome не стартует). К пустой выдаче Lampa это прямого отношения не имеет (Prowlarr в цепочку PidTor не входит), но ломает **Radarr/Sonarr** — то есть автозакачку. Разбор и незавершённый фикс: -[[personal/tech/prowlarr-flaresolverr-cloudflare]] §«2026-09-24». **Список индексеров jac.red (25 шт.) — измеримо, не догадкой:** `GET http://jac.red/api/v2.0/indexers?configured=true` → массив с `name`. diff --git a/personal/tech/multistream-single-flow-limit.md b/personal/tech/multistream-single-flow-limit.md index 0ce96586..0b232f8b 100755 --- a/personal/tech/multistream-single-flow-limit.md +++ b/personal/tech/multistream-single-flow-limit.md @@ -206,4 +206,4 @@ Alex на неё ответил «Чё блядь». **Не требовать - [[personal/tech/xray-reverse-tunnel-kraken-truenas]] — reverse-туннель, замеры egress - [[personal/plans/lampac-kraken]] — план развёртывания Lampac + блокер «не библиотека» - [[family/how-to/kraken-network]] — линки ТВ, история торможения 4K -- [[family/projects/media-toolbox-taiga]] — медиа-стек TrueNAS +- [[family/how-to/arr-stack-taiga]] — медиа-стек TrueNAS diff --git a/personal/tech/music-tags-repair-truenas.md b/personal/tech/music-tags-repair-truenas.md index f77cc53f..48cdd1e9 100755 --- a/personal/tech/music-tags-repair-truenas.md +++ b/personal/tech/music-tags-repair-truenas.md @@ -34,7 +34,7 @@ tags: - encoding related: - '[[family/how-to/jellyfin-config]]' - - '[[family/projects/media-toolbox-taiga]]' + - '[[family/how-to/arr-stack-taiga]]' - '[[personal/tech/music-tags-rename-audit]]' - '[[personal/plans/music-tags-wave38-fixes]]' - '[[personal/plans/tagwriter-container]]' @@ -6752,5 +6752,5 @@ Alex трижды подряд получил вопрос там, где отв ## Связанные заметки - [[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]] — альтернативный музыкальный сервер на той же папке diff --git a/personal/tech/skill-arr-media-stack-setup-additions.md b/personal/tech/skill-arr-media-stack-setup-additions.md index e6bb5770..5daf8953 100755 --- a/personal/tech/skill-arr-media-stack-setup-additions.md +++ b/personal/tech/skill-arr-media-stack-setup-additions.md @@ -16,7 +16,7 @@ tags: - navidrome related: - '[[family/how-to/arr-stack-taiga]]' - - '[[family/projects/media-toolbox-taiga]]' + - '[[family/how-to/arr-stack-taiga]]' - '[[family/how-to/navidrome-truenas-android]]' --- # 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/projects/media-toolbox-taiga]] — состояние стека на Тайге +- [[family/how-to/arr-stack-taiga]] — состояние стека на Тайге