From d599a8bf724bc3c427fe96edafff39f5609a5606 Mon Sep 17 00:00:00 2001 From: Alexey Martemyanov Date: Mon, 28 Sep 2026 14:27:53 +0600 Subject: [PATCH] [2026-09-28] eagle: family/plans/lidarr-taiga-deploy.md family/projects/media-toolbox-taiga.md personal/plans/flaresolverr-taiga-deploy.md personal/tech/flaresolverr-taiga.md --- family/plans/lidarr-taiga-deploy.md | 68 ++++++++++-- family/projects/media-toolbox-taiga.md | 26 +++-- personal/plans/flaresolverr-taiga-deploy.md | 19 +++- personal/tech/flaresolverr-taiga.md | 113 ++++++++++++++++---- 4 files changed, 189 insertions(+), 37 deletions(-) diff --git a/family/plans/lidarr-taiga-deploy.md b/family/plans/lidarr-taiga-deploy.md index 134e92af..f7d28a10 100755 --- a/family/plans/lidarr-taiga-deploy.md +++ b/family/plans/lidarr-taiga-deploy.md @@ -1,10 +1,18 @@ # Lidarr на Taiga — деплой в связке с arr-стеком и Navidrome **Дата:** 2026-09-28 -**Статус:** 🟡 ДЕПЛОЙ ВЫПОЛНЕН, контейнер жив, `health` ЧИСТЫЙ (`[]`) — **НО ФУНКЦИОНАЛЬНО -НЕ РАБОЧИЙ**. ⏳ Приёмка не закрыта: SkyHook (`api.lidarr.audio`) → **403 Cloudflare**, -в библиотеке **0 артистов**, добавить артиста невозможно. Решение — прокси, скрипт готов, -не применён. Перепроверено 2026-09-28 вечером — блокер в силе. +**Статус:** ✅ **РАБОЧИЙ — приёмка закрыта 2026-09-28 (вечер).** SkyHook-блокер снят, +проверено end-to-end: lookup → добавление артиста → поиск релизов. Бал: 0 артистов → 1, +0 релизов → 23. +**Что было причиной и как починено (главный вывод сессии):** +`api.lidarr.audio` действительно за Cloudflare, прямой запрос с IP Тайги → **403**, через +`socks5h://vless-proxy:1080` → **200**. НО **env-переменные `HTTP_PROXY`/`HTTPS_PROXY` Lidarr +НЕ ЧИТАЕТ** — .NET-клиент SkyHook их игнорирует, поэтому первая попытка починки через compose-env +дала тот же 403. Рабочий фикс — **встроенный прокси-конфиг самого Lidarr**: +`GET /api/v1/config/host` → `proxyEnabled: false` → выставить `true`, `proxyType: "http"`, +`proxyHostname: "vless-proxy"`, `proxyPort: 1081`, `proxyBypassFilter: "localhost,127.0.0.1,vless-proxy"`, +затем `PUT /api/v1/config/host/1`. Применяется **без перезапуска контейнера**. +Скрипт: `/tmp/lidarr_set_proxy.py` (на хосте Тайги; там есть `python3`). **Namespace:** family **Решения Alex:** (1) переименование — **вариант A**: `Rename Tracks=ON`, `Rename Folders=ON`, раскладка `Music/// - `, `Write Metadata Tags=ON`; @@ -27,13 +35,61 @@ | Индексер в Lidarr | `NoNaMe Club (Prowlarr)` (id=2) — `rss=true`, `auto=true` | | RemotePathMapping | host `transmission`, remote `/mnt/storage/Downloads/`, local `/storage/Downloads/` (id=2) | | **health Lidarr** | **`[]` — ЧИСТО** | -| health Prowlarr | `IndexerLongTermStatusCheck` ушёл (осталось только Kinozal/RuTracker) | +| health Prowlarr | `[]` — ЧИСТО (см. [[personal/tech/flaresolverr-taiga]]) | +| **SkyHook (метаданные)** | ✅ `lookup?term=radiohead` → **10 результатов**, 15 397 байт реальных метаданных | +| **Библиотека** | ✅ **1 артист** (`Radiohead`, id=1, monitored=false) | +| **Поиск релизов** | ✅ `/release?artistId=1` → **23 раздачи** FLAC (seeders 3–7) через `NoNaMe Club (Prowlarr)` | +| **Прокси-конфиг Lidarr** | ✅ `proxyEnabled=true`, `proxyType=http`, `vless-proxy:1081`, bypass `localhost,127.0.0.1,vless-proxy` | +| health Radarr/Sonarr | ⚠️ `RemotePathMappingCheck` + indexer-warnings — см. «Остаток» ниже | + +### 🔴 ПИТФОЛЛ: env `HTTP_PROXY` НЕ работает в Lidarr — только встроенный конфиг + +Проверено экспериментально, две попытки: + +| Способ | Результат | +|---|---| +| `curl -x socks5h://vless-proxy:1080` из контейнера lidarr | ✅ 200 | +| compose-env `HTTP_PROXY`+`HTTPS_PROXY`+`NO_PROXY`, рестарт | ❌ **403** — .NET-клиент SkyHook env игнорирует | +| env убран, `proxyEnabled=true` в `/api/v1/config/host` | ✅ **200**, метаданные пошли | + +⚠️ Откат env-варианта сделан (compose вернулся к чистому виду, бэкап +`~truenas_admin/docker-compose.yml.bak-20260928-lidarr-proxy`). +⚠️ **Ложный след при диагностике:** `api.lidarr.audio` отдаёт 403 **не всегда** — при +исчерпанном CF-лимите 403 бывает и у `curl`, что сбивает с толку. Различать по заголовкам: +`x-rate-limit-remaining` есть только при живом ответе; и сравнивать **прямой** запрос +vs **через прокси** в одном ходе. +⚠️ **Порт прокси:** `vless-proxy` слушает SOCKS5 на **1080** и HTTP на **1081**. +Встроенный конфиг Lidarr (`proxyType=http`) требует **1081**; `1080` там не подойдёт. + +### ⚠️ Остаток на конец сессии (не блокирует Lidarr) + +1. **Пароль RuTracker неверен.** Проверено POST-логином через FlareSolverr: + `Challenge solved!`, но форма логина возвращается + текст «неверные данные» + капча. + Юзер `mallexxx`, пароль 8 символов. Это даёт `RuTracker Auth Failed` в Prowlarr + `testall` и warning в Radarr/Sonarr. **Нужен верный пароль от Alex.** + Поиск при этом работал анонимно (50 результатов), поэтому дефект был незаметен. +2. **Radarr/Sonarr ждут каталоги** `/storage/Downloads/radarr` и `/storage/Downloads/sonarr` + (Transmission пишет плоско в `/mnt/storage/Downloads`). Каталоги **созданы** + (`/mnt/RED_2TB/storage/Downloads/{radarr,sonarr}`, видны в контейнерах как `abc:abc`), + но ошибка `RemotePathMappingCheck` в health **осталась** — Radarr/Sonarr кэшируют + результат проверки, нужен `docker restart radarr sonarr`. ⏳ Не выполнен (апрув истёк). +3. Indexer-warnings (`RuTor`, `Kinozal`, `Kinozal M`) в Radarr/Sonarr — их собственные + копии индексеров в карантине, снимаются `POST /api/v3/indexer/testall`. + ⚠️ Эндпоинт отдаёт **400**, но это НЕ ошибка: тело содержит массив с `isValid` по каждому + индексеру — парсить тело, а не HTTP-код. `GET /indexer/testall` → 404 (метод только POST). + ⚠️ `/indexerstatus` есть **только в Prowlarr**; в Radarr/Sonarr → 404. +4. RuTor в Radarr: «Query successful, but no results in the configured categories» — + не блокировка, а категории (RuTor не фильтрует по категориям — см. питфолл в + [[personal/tech/prowlarr-flaresolverr-cloudflare]]). ### Изменённые файлы | Файл | Что | Бэкап | |---|---|---| -| `/mnt/RED_2TB/docker/arr/docker-compose.yml` | + сервис `lidarr` (md5 `667f68f23b17a8c899c5a82a453fc754`) | `/home/truenas_admin/arr-compose.bak-20260927-125755` (md5 `9454a987f05af5efc93a51ada9dc585e`) | +| `/mnt/RED_2TB/docker/arr/docker-compose.yml` | + сервис `lidarr` (md5 `667f68f23b17a8c899c5a82a453fc754`); env-прокси добавлялся и **откачен** | `/home/truenas_admin/arr-compose.bak-20260927-125755`, `~/docker-compose.yml.bak-20260928-lidarr-proxy` | +| `/mnt/RED_2TB/storage/Downloads/radarr` | каталог создан 2026-09-28 (Radarr ждал его) | — | +| `/mnt/RED_2TB/storage/Downloads/sonarr` | каталог создан 2026-09-28 (Sonarr ждал его) | — | +| Lidarr `config/host` (БД) | `proxyEnabled`/`proxyType`/`proxyHostname`/`proxyPort`/`proxyBypassFilter` | скрипт `/tmp/lidarr_set_proxy.py` идемпотентен | | `/mnt/RED_2TB/docker/caddy/Caddyfile` | + блок `lidarr.mallexxx.duckdns.org` (96 строк) | `/home/truenas_admin/Caddyfile.bak-*` | | `/mnt/RED_2TB/storage/Downloads/lidarr` | каталог создан | — | | `/mnt/RED_2TB/docker/arr/lidarr/` | конфиг + `lidarr.db` | — | diff --git a/family/projects/media-toolbox-taiga.md b/family/projects/media-toolbox-taiga.md index 04536184..75202bb3 100755 --- a/family/projects/media-toolbox-taiga.md +++ b/family/projects/media-toolbox-taiga.md @@ -20,25 +20,31 @@ status: deployed --- # *arr Stack на Тайге — Setup & Config -> 🟡 **STATE 2026-09-28: LIDARR ДЕПЛОЙ ЕСТЬ, НО ФУНКЦИОНАЛЬНО НЕ РАБОЧИЙ.** +> ✅ **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]`. -> 🔴 **`health: []` ≠ «работает»** — проверять поиск. Факт: `GET /api/v1/artist` → **`[]`, -> 0 артистов**; `artist/lookup?term=radiohead` → **403**. Артиста добавить невозможно. -> ⏳ **Приёмка НЕ закрыта:** `api.lidarr.audio` (метаданные SkyHook) → **403 Cloudflare** -> прямым запросом, через `vless-proxy` → **200**. Заготовка `/tmp/add_proxy_env.py` (HTTP_PROXY/ -> HTTPS_PROXY + NO_PROXY) — НЕ применена. ⚠️ FlareSolverr тут НЕ помогает: Lidarr ходит -> в SkyHook сам, не через FS → нужен именно `HTTP(S)_PROXY`-подход. Домен при этом -> **резолвится** (это не DNS-блок) — план фикса в [[personal/tech/flaresolverr-taiga]] §Открытые пункты. +> Проброшен `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]]. -> В Lidarr проброшен `NoNaMe Club (Prowlarr)`. Полный разбор, 7 питфоллов и креды Transmission — -> [[family/plans/lidarr-taiga-deploy]] §ФАКТИЧЕСКОЕ СОСТОЯНИЕ. +> Полный разбор, питфоллы и креды 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` → `[]` (пусто). diff --git a/personal/plans/flaresolverr-taiga-deploy.md b/personal/plans/flaresolverr-taiga-deploy.md index ac536b60..dbbfc640 100755 --- a/personal/plans/flaresolverr-taiga-deploy.md +++ b/personal/plans/flaresolverr-taiga-deploy.md @@ -227,4 +227,21 @@ GET https://rutracker.org/forum/login.php через socks5h://vless-proxy:1080 - **2026-09-28 (тот же день, после «Го»)** — **ВЫПОЛНЕНО.** FlareSolverr развёрнут, 6/6 индексеров, health `[]`, поиск 256. Питфоллы: `requestTimeout` 60→180, `?forceSave=true`, гонка `testall`, и главный — **смена `PROXY_URL` не обновляет существующую FS-сессию**. - Открытый вопрос по swap закрыт Alex (не нужен). +- **2026-09-28 (вечер, тот же день)** — **Lidarr дозакрыт до прод-уровня.** SkyHook-блокер снят: + `api.lidarr.audio` → 403 прямым, 200 через прокси; **env `HTTP_PROXY` Lidarr НЕ читает**, + рабочий фикс — встроенный `config/host.proxyEnabled` → `vless-proxy:1081`. Проверено + end-to-end: lookup → артист → **23 раздачи**. Попутно: созданы каталоги + `Downloads/{radarr,sonarr}` (Radarr/Sonarr их ждали), выявлен **неверный пароль RuTracker**. + Детали — [[family/plans/lidarr-taiga-deploy]], [[personal/tech/flaresolverr-taiga]]. + +## Остаток после сессии 2026-09-28 (не блокирует Prowlarr/FlareSolverr) + +1. 🔴 **Пароль RuTracker неверен** — POST-логин через FS возвращает форму логина + «неверные + данные» + капча. Нужен верный пароль от Alex. Даёт `Auth Failed` в `testall` Prowlarr. +2. **Radarr/Sonarr:** каталоги `Downloads/{radarr,sonarr}` созданы, но `RemotePathMappingCheck` + в health держится — нужен `docker restart radarr sonarr` (кэш проверки). ⏳ не выполнен. +3. Indexer-warnings в Radarr/Sonarr снимаются `POST /api/v3/indexer/testall` + (отдаёт **400** с телом-массивом по индексеру — парсить тело, не код). +4. Приёмка Alex в UI: `https://prowlarr.mallexxx.duckdns.org` → 6 зелёных; + `https://lidarr.mallexxx.duckdns.org` → поиск артиста работает. + Открытый вопрос по swap закрыт Alex (не нужен — RAM 21 GB). diff --git a/personal/tech/flaresolverr-taiga.md b/personal/tech/flaresolverr-taiga.md index 264454be..a424e500 100755 --- a/personal/tech/flaresolverr-taiga.md +++ b/personal/tech/flaresolverr-taiga.md @@ -215,27 +215,100 @@ CPU 0.68%); канал прокси нормальный (kinozal через soc Итог: **6/6 индексеров, health `[]`, поиск 256 результатов.** RuTracker впервые `valid` за всё время существования стека (с 2026-05-20). +## ✅ ЗАКРЫТО: пароль RuTracker — рабочий (первый диагноз был НЕВЕРЕН) + +**Итог 2026-09-28 (позже в тот же вечер):** сохранённая в Prowlarr пара +(`mallexxx` / 8 символов) **логинится успешно**. Проверено `request.post` через FlareSolverr +на `/forum/login.php`: +``` +final_url = https://rutracker.org/forum/login.php ← НО форма не вернулась +len = 251 792 ← полная страница форума (~250 KB) +login_form_back = False ← форма логина НЕ переоткрылась +``` +`login_form_back=False` + страница 251 KB = **сессия установлена**, это залогиненный форум. +Скрипт проверки: `/tmp/rt_login.py` (копия на Тайге; `python3 /tmp/rt_login.py "$U" "$P"`). + +🔴 **Почему первый диагноз был ложным.** Ранее вывод «пароль неверен» сделан по признаку +`login_username` в HTML, но эта строка присутствует **и на залогиненной странице** (скрытая +форма быстрого входа / HTML-шаблон). Признак «форма вернулась» надо проверять по +**`final_url` + длине страницы**, а не по наличию подстроки `login_username` — +это дало ложное «Auth Failed». + +> ⚠️ **Урок:** `Auth Failed` в `indexer/testall` Prowlarr **не означает неверный пароль**. +> Прежде чем требовать новый пароль у Alex — проверить логин отдельным `request.post` +> с `final_url` + `len` в ответе. Признак-подстрока ненадёжен. + +⚠️ **Если Alex всё-таки сменил пароль на самом rutracker.org** — в Prowlarr лежит СТАРЫЙ +(проверено: `username len=8`, `password len=8` через `/api/v1/indexer/1`), его надо +обновить в `Indexers → RuTracker`, иначе после смены на трекере логин отвалится. + +## ✅ ЗАКРЫТО: Radarr/Sonarr — каталоги категорий созданы + +Radarr/Sonarr ждали `/storage/Downloads/radarr` и `/storage/Downloads/sonarr` +(Transmission пишет **плоско** в `/mnt/storage/Downloads`). Каталоги созданы: +```bash +mkdir -p /mnt/RED_2TB/storage/Downloads/radarr /mnt/RED_2TB/storage/Downloads/sonarr +``` +В контейнерах видны как `/storage/Downloads/{radarr,sonarr}`, владелец `abc:abc`. +⚠️ `RemotePathMappingCheck` в health **кэшируется** — после создания каталогов ошибка +осталась, нужен `docker restart radarr sonarr` для перепроверки. См. +[[family/plans/lidarr-taiga-deploy]]. + ## Открытые пункты - **Приёмка Alex в UI:** `https://prowlarr.mallexxx.duckdns.org` → Indexers → 6 зелёных без карантинов. -- Проверить, что RuTracker реально **логинится** (не только челлендж на login.php) — - выдача 50 результатов намекает, что да. -- Lidarr: метаданные `api.lidarr.audio` → 403 CF прямым, 200 через `vless-proxy`. - Заготовка `/tmp/add_proxy_env.py` (HTTP_PROXY/HTTPS_PROXY) — **не применена**; - Lidarr ходит в SkyHook сам, НЕ через FS. Разбирать отдельно — - [[family/plans/lidarr-taiga-deploy]]. - 🔴 **Проверено 2026-09-28:** домен `api.lidarr.audio` **резолвится** из контейнера - (`2606:4700:3031::ac43:df35`) — значит это **чисто Cloudflare, НЕ DNS** (в отличие от - трекеров, где был NXDOMAIN). Следствие важное: **`PROXY_URL`/FlareSolverr здесь бесполезны** — - FS обслуживает только Prowlarr, а SkyHook зовёт сам Lidarr. Нужен отдельный прокси - на уровне процесса Lidarr (env `HTTP_PROXY`/`HTTPS_PROXY` в `arr/docker-compose.yml` + - `NO_PROXY` для внутренних имён, иначе сломается связь с Transmission/Prowlarr). - Состояние: в библиотеке **0 артистов** (`GET /api/v1/artist` → `[]`), приёмка не закрыта. +- ⏳ **`docker restart radarr sonarr`** — применить создание каталогов (апрув истёк 2026-09-28). +- ⏳ **`POST /api/v3/indexer/testall`** в Radarr/Sonarr — снять карантин с их собственных + копий индексеров (`RuTor`, `Kinozal`, `Kinozal M`). ⚠️ Отдаёт **400**, но это не ошибка: + парсить тело (массив с `isValid`), а не HTTP-код. - **План фикса (2 шага, ~5 мин, ждёт «go» Alex):** - 1. `HTTP_PROXY=socks5h://vless-proxy:1080`, `HTTPS_PROXY=socks5h://vless-proxy:1080`, - `NO_PROXY=localhost,127.0.0.1,lidarr,prowlarr,radarr,sonarr,transmission,jellyfin,navidrome,caddy` - → бэкап compose → правка **локально** → `scp` → `docker compose up -d lidarr` (конфиг в - `/config` не трогается). - 2. Проверка: `GET /api/v1/artist/lookup?term=radiohead` → должен вернуть массив, не 403. - - Fallback, если .NET Lidarr не поймёт `socks5h`: `socks5://` либо HTTP-прокси `vless-proxy:1081`. +## ✅ Lidarr ↔ SkyHook: решено 2026-09-28 (встроенный прокси, НЕ env) + +Смежная задача, решена в этой же сессии. Полный разбор — [[family/plans/lidarr-taiga-deploy]]. + +`api.lidarr.audio` (метаданные SkyHook) за Cloudflare: +- прямой запрос из контейнера → **403**; +- через `socks5h://vless-proxy:1080` → **200**; +- домен **резолвится** (`2606:4700:3031::ac43:df35`) — это **чисто CF, НЕ DNS-блок**. + +⚠️ **FlareSolverr здесь бесполезен** — он обслуживает Prowlarr, а SkyHook зовёт сам Lidarr. + +🔴 **ГЛАВНЫЙ ПИТФОЛЛ: env `HTTP_PROXY`/`HTTPS_PROXY` Lidarr НЕ ЧИТАЕТ.** Проверено: +compose-env + рестарт → всё тот же **403**. .NET-клиент SkyHook игнорирует env. + +**Рабочее решение — встроенный прокси-конфиг Lidarr** (применяется без рестарта): +```bash +# GET /api/v1/config/host -> proxyEnabled:false +# PUT /api/v1/config/host/1 c полями: +# proxyEnabled: true +# proxyType: "http" +# proxyHostname: "vless-proxy" +# proxyPort: 1081 # ← HTTP-порт, НЕ 1080 (SOCKS5) +# proxyBypassFilter: "localhost,127.0.0.1,vless-proxy" +# proxyBypassLocalAddresses: true +``` +Скрипт: `/tmp/lidarr_set_proxy.py` (на хосте Тайги; там `python3` **есть**, `curl` — нет). + +**Результат:** `lookup?term=radiohead` → 10 результатов; артист добавлен; поиск релизов → +23 раздачи FLAC. Библиотека: 0 артистов → 1. + +⚠️ **Ложный след при диагностике:** `api.lidarr.audio` отдаёт 403 **не всегда** — при +исчерпанном CF-лимите 403 бывает и у `curl`, что выглядит как «прокси не работает». +Различать: заголовок `x-rate-limit-remaining` присутствует только при живом ответе; +и сравнивать **прямой** vs **через прокси** запрос в одном ходе. + +⚠️ Откат: env-вариант убран из compose (бэкап +`~truenas_admin/docker-compose.yml.bak-20260928-lidarr-proxy`). + +## Общий вывод по прокси на Тайге (три разных механизма!) + +На одном хосте понадобились **три независимых способа** прокинуть трафик через `vless-proxy`: + +| Кто | Механизм | Ключ | +|---|---|---| +| Prowlarr (индексеры) | SOCKS5-прокси в Prowlarr + FlareSolverr | теги `[1,2]`, `PROXY_URL` у FS | +| FlareSolverr (Chrome) | глобальный прокси образа | env `PROXY_URL=socks5://...` (**НЕ** HTTP_PROXY) | +| Lidarr (SkyHook) | встроенный конфиг приложения | `config/host.proxyEnabled` (**env НЕ работает**) | + +⚠️ **Не переносить рецепт одного сервиса на другой.** `arr`-сервисы внешне похожи, но +механизм прокси у каждого свой; проверять фактическим запросом, а не по аналогии.