[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

This commit is contained in:
Alexey Martemyanov committed 2026-09-28 14:27:53 +06:00
1 parent bbdc3c3785
commit d599a8bf72
4 files changed
+189 -37

No files matched your search

+62 -6
View File
@@ -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/<Artist>/<Album>/<track> - <title>`, `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` | — |
+16 -10
View File
@@ -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` → `[]` (пусто).
+18 -1
View File
@@ -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).
+93 -20
View File
@@ -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`-сервисы внешне похожи, но
механизм прокси у каждого свой; проверять фактическим запросом, а не по аналогии.