[2026-09-20] eagle: family/how-to/arr-stack-kraken.md personal/tech/prowlarr-flaresolverr-cloudflare.md
This commit is contained in:
1 parent
62316dd252
commit
4e656430ac
2 files changed
+154
-42
No files matched your search
@@ -8,6 +8,7 @@ tags: [arr, radarr, sonarr, prowlarr, transmission, jellyfin, infra, kraken]
|
||||
related:
|
||||
- "[[tech/jellyfin-config]]"
|
||||
- "[[tech/arr-stack-taiga]]"
|
||||
- "[[tech/prowlarr-flaresolverr-cloudflare]]"
|
||||
- "[[concepts/kraken-media-stack]]"
|
||||
---
|
||||
|
||||
@@ -112,9 +113,9 @@ Prowlarr → Radarr + Sonarr → Transmission → Jellyfin
|
||||
|
||||
**Где менять:** `watchlist-sync/watchlist_sync/arr.py` строки `qualityProfileId: 7` (radarr_add ~L77, sonarr_add ~L112). НЕ редактировать профили вручную иначе watchlist-sync надо обновить на новый id. Создать/править профиль «WEB-4K (no remux)» — Radarr/Sonarr → Settings → Quality Profiles.
|
||||
|
||||
## Ports (default Docker network)
|
||||
## Ports (Docker network `media_net`)
|
||||
|
||||
All services accessible at `kraken:<port>`:
|
||||
All services in the shared external network `media_net` — доступны друг другу по имени контейнера (`radarr:7878`, `prowlarr:9696`, `transmission:9091`, `flaresolverr:8191`) и с хоста по `kraken:<port>`:
|
||||
|
||||
| Service | Port |
|
||||
|--------------|------|
|
||||
@@ -123,6 +124,10 @@ All services accessible at `kraken:<port>`:
|
||||
| Prowlarr | 9696 |
|
||||
| Transmission | 9091 |
|
||||
| Jellyfin | 8096 |
|
||||
| FlareSolverr | 8191 |
|
||||
|
||||
**Сеть (проверено 2026-09-20):** radarr, sonarr, prowlarr, transmission, flaresolverr — все в `media_net`. Пересечение сетей (radarr и transmission дополнительно ещё в `docker_default`) — нормально, роутинг по `media_net`.
|
||||
Порядок починки, если контейнер выпал из сети: `sudo docker network connect media_net <container>` (обратимо, без пересоздания) либо `docker compose up -d` из каталога сервиса.
|
||||
|
||||
## Jellyfin библиотеки
|
||||
|
||||
@@ -137,22 +142,23 @@ All services accessible at `kraken:<port>`:
|
||||
|
||||
> `movies-radarr` и `series-sonarr` НЕ добавлены в Jellyfin — router.py создаёт symlink'и из них в перечисленные пути.
|
||||
|
||||
## 🔴 Диагностика индексеров — «красные трекеры» (2026-09-20)
|
||||
## Индексера Prowlarr — диагностика и починка (2026-09-20)
|
||||
|
||||
Полная диагностика запрошена Alex: «что с torrent трекерами в arr, красные». Диагноз снят по логам Prowlarr, не по теории.
|
||||
> ✅ **Задача закрыта в тот же день.** Ниже — история диагностики (полезна как метод), а актуальное решение с командами — в секции «🔴 Индексера Prowlarr — починка Cloudflare (2026-09-20)».
|
||||
> **Итог: было 3 «красных» из 6, стало 6/6 рабочих. Radarr 4/4, Sonarr 5/5 зелёные.**
|
||||
|
||||
### Фактическое состояние индексеров Prowlarr (id / name / enable / privacy)
|
||||
Запрос Alex: «что с torrent трекерами в arr, красные». Диагноз снят по логам Prowlarr, не по теории.
|
||||
|
||||
| id | Индексер | enable | privacy | Реально работает? |
|
||||
|----|----------|--------|---------|-------------------|
|
||||
| 1 | RuTracker | true | semiPrivate | ❌ **красный** — Cloudflare |
|
||||
| 5 | Kinozal | true | semiPrivate | ❌ **красный** — Cloudflare |
|
||||
| 6 | Kinozal (M) | true | semiPrivate | ❌ **красный** — Cloudflare |
|
||||
| 2 | RuTor | true | public | ✅ 100 результатов на «matrix» |
|
||||
| 4 | NoNaMe Club | true | public | ✅ 50 результатов |
|
||||
| 3 | Byrutor | true | public | ✅ 6 результатов |
|
||||
### Что показывал UI на момент диагностики
|
||||
|
||||
`indexerstatus` пуст, и `health` показывает только warning про апдейт — то есть Prowlarr **сам себя маскирует**: он не пишет в health, а вместо этого помечает индексер «temporarily ignoring till <+24h>». Диагноз надо снимать из **debug-лога**, не из health API.
|
||||
| id | Индексер | privacy | Было | Стало |
|
||||
|----|----------|---------|------|-------|
|
||||
| 1 | RuTracker | semiPrivate | ❌ красный (Cloudflare) | ✅ 48 результатов на «matrix» |
|
||||
| 5 | Kinozal | semiPrivate | ❌ красный (Cloudflare) | ✅ 50 |
|
||||
| 6 | Kinozal (M) | semiPrivate | ❌ красный (Cloudflare) | ✅ 50 |
|
||||
| 2 | RuTor | public | ✅ 100 | ✅ 100 |
|
||||
| 4 | NoNaMe Club | public | ✅ 50 | ✅ 50 |
|
||||
| 3 | Byrutor | public | ✅ 6 | ✅ 6 |
|
||||
|
||||
### Root cause #1 — Cloudflare (RuTracker + Kinozal + Kinozal (M))
|
||||
|
||||
@@ -170,33 +176,22 @@ Debug|IndexerFactory|Temporarily ignoring indexer RuTracker till 09/21/2026 17:3
|
||||
|
||||
- RuTracker: CF **managed Turnstile** на `/forum/login.php` → Prowlarr не может залогиниться (нужен JS-челлендж). Аккаунт при этом может быть жив — падает именно логин.
|
||||
- Kinozal / Kinozal (M): kinozal.me тоже за Cloudflare, Prowlarr сам пишет «Flaresolverr may be required».
|
||||
- Версия Prowlarr на момент диагностики: **v2.5.2.5491**, доступен апдейт **v2.6.5.5623**.
|
||||
- Лечится FlareSolverr-прокси (см. решение). На момент диагностики версия была **v2.5.2.5491**.
|
||||
|
||||
### Root cause #2 — Docker network split (Radarr полностью без индексеров)
|
||||
|
||||
```
|
||||
radarr: docker_default 172.22.0.3 ← НЕ видит prowlarr
|
||||
radarr: docker_default 172.22.0.3 ← НЕ видел prowlarr
|
||||
sonarr: media_net 172.23.0.2
|
||||
prowlarr: media_net 172.23.0.3
|
||||
transmission: docker_default 172.22.0.2 ← НЕ виден сонаром
|
||||
transmission: docker_default 172.22.0.2 ← НЕ был виден сонаром
|
||||
```
|
||||
|
||||
Radarr `POST /api/v3/indexer/testall` → **все 4 индексера** `false`:
|
||||
`Unable to connect to indexer... Name does not resolve (prowlarr:9696)`
|
||||
|
||||
Sonarr `testall` (он в `media_net`, DNS резолвится) → доходит до Prowlarr и получает осмысленные ошибки:
|
||||
|
||||
| Sonarr indexer id | Имя | Результат testall |
|
||||
|---|---|---|
|
||||
| 1 | RuTracker | ❌ `[429:TooManyRequests]` через Prowlarr (это самоисключение Prowlarr отдаёт как 429) |
|
||||
| 2 | NoNaMe Club | ✅ `true` |
|
||||
| 6 | Kinozal (M) | ❌ 429 (тот же эффект) |
|
||||
| 8 | RuTor | ⚠️ `Query successful, but no results in the configured categories` — **не баг коннекта**: у Sonarr id=8 категории `[5000]`, а caps RuTor отдаёт `2000 5000 8000 100001 100002 100003`. tvsearch в Prowlarr живой: `t=tvsearch&q=lost` на `/prowlarr/2/api` → 100 `<item>`. Лечится расширением категорий на стороне Sonarr. |
|
||||
| 9 | Kinozal | ❌ 429 (тот же эффект) |
|
||||
|
||||
**Analog:** Sonarr `health` → `error DownloadClientCheck: Unable to communicate with Transmission. Name does not resolve (transmission:9091)`. Тот же network-split, отдельный симптом.
|
||||
|
||||
Вывод: **Radarr красный не из-за трекеров, а из-за сети.** У Sonarr красные = реальные трекеры (CF).
|
||||
Вывод: **Radarr был красный не из-за трекеров, а из-за сети.** У Sonarr красные = реальные трекеры (CF).
|
||||
Ключевой урок: compose-файлы уже содержали `media_net`, но контейнеры остались в старой сети — **проверять фактическое `docker inspect`, а не compose-файл**.
|
||||
|
||||
### ⚠️ Питфолл: `POST /api/v3/indexer/test` по одному id НЕ работает
|
||||
|
||||
@@ -221,26 +216,22 @@ curl -s -H "X-Api-Key: $PKEY" "http://localhost:9696/prowlarr/api/v1/search?quer
|
||||
| jq -r 'group_by(.indexer)[] | "\(.[0].indexer): \(length)"'
|
||||
```
|
||||
|
||||
(`Prowlarr /api/v1/indexer/test` тоже возвращает 400 на `{indexerId}` — см. § Питфоллы скилла `torrent-agent-pipeline`.)
|
||||
|
||||
Поиск через Prowlarr полезнее теста индексеров: `?query=X&type=search` по умолчанию возвращает **до 100 результатов на индексер** (был соблазн прочитать «156 всего» как «по 26 на каждый» — неверно; смотреть `group_by(.indexer)`).
|
||||
|
||||
### План лечения (составлен 2026-09-20, ждёт подтверждения Alex)
|
||||
### Итог и уроки
|
||||
|
||||
1. **FlareSolverr** — развернуть контейнер на Kraken (порт 8191), прописать его как прокси в Prowlarr Settings → Indexers. Без FlareSolverr CF-челлендж RuTracker/Kinozal не проходится.
|
||||
2. **Обновить Prowlarr** v2.5.2.5491 → v2.6.5.5623 (свежая интеграция FlareSolverr).
|
||||
3. **Починить сеть** — подключить Radarr и Transmission в `media_net` (обратимо, без пересоздания контейнеров):
|
||||
`sudo docker network connect media_net radarr` / `sudo docker network connect media_net transmission`
|
||||
4. **Раскрыть категории** Sonarr indexer id=8 (RuTor) — сейчас `[5000]`, добавить 2000/8000.
|
||||
5. **Проверка приёмки:** `testall` в Radarr и Sonarr → все `isValid=true`; поиск RuTracker с ненулевым результатом.
|
||||
Все три причины были независимы и требовали независимых фиксов:
|
||||
1. **Сеть** — `docker network connect media_net radarr|transmission` (обратимо, без пересоздания контейнеров).
|
||||
2. **FlareSolverr не применялся** — нужен одинаковый tag на прокси И на индексере (главная засада: при `tags=[]` молча не работает).
|
||||
3. **Блокировки в `IndexerStatus`** — рестарт контейнера их НЕ сбрасывает, чистить через `sqlite3` между stop/start.
|
||||
|
||||
**Честные границы:** FlareSolverr против CF Turnstile даёт ~70-80% на RuTracker (при жёстком managed-challenge может понадобиться cookie из браузера, вручную). Пароли трекеров у агента отсутствуют — если сессия RuTracker инвалидировалась, логин/пароль вводит Alex в UI Prowlarr. Гарантий на CF нет ни у кого: трекеры обновляют защиту.
|
||||
Плюс побочно: RuTor не фильтрует по категориям → ему нужна категория `8000(Other)`, не `5000`.
|
||||
|
||||
**Статус:** диагностика завершена, план не начат (ждёт апрува). Безопасный первый шаг — п.3 (сети), не требует паролей и полностью обратим.
|
||||
**⚠️ Безопасность:** FlareSolverr на `LOG_LEVEL=info` пишет логин и пароль RuTracker в plaintext в свои логи. Обязательно `warning`.
|
||||
|
||||
## Известные проблемы
|
||||
|
||||
- **⚠️ 2026-09-20: `jellyfin_default` в compose Radarr** — реально Radarr живёт в `docker_default`; при разборе сетей проверять фактическое `docker inspect`, а не docker-compose.yml.
|
||||
- **⚠️ 2026-09-20: compose-файл может ВРАТЬ про сеть.** Ранее в compose Radarr был указан `jellyfin_default`, а реально контейнер жил в `docker_default`; при починке выяснилось, что compose уже писал `media_net`, но контейнеры не были пересозданы. **Всегда проверять фактическое `docker inspect -f '{{range $k,$v := .NetworkSettings.Networks}}{{$k}} {{end}}' <container>`, а не docker-compose.yml.**
|
||||
- **17 фильмов в Radarr `hasFile=False`** — ждут подходящего релиза в Prowlarr. Scream (1996) в процессе загрузки.
|
||||
- **Prowlarr** — если долго не находит релизы, проверить статус индексеров (`/api/v1/health`). ⚠️ health врёт, реальную причину блокировки смотреть в `config/logs/prowlarr.debug.txt` — см. секцию «🔴 Индексера Prowlarr — починка Cloudflare (2026-09-20)» ниже.
|
||||
- ✅ **2026-09-20: все индексера Prowlarr починены (6/6), Radarr 4/4 и Sonarr 5/5 зелёные.** Причины были: сеть (`docker_default` вместо `media_net`), непривязанный tag у FlareSolverr-прокси, и блокировки в `IndexerStatus`. Детали и команды — в секции ниже.
|
||||
@@ -368,4 +359,5 @@ sudo docker start prowlarr
|
||||
|
||||
- See [[arr-stack-taiga]] for Taiga (secondary) arr stack
|
||||
- Media pipeline pitfalls: [[media-pipeline-pitfalls]]
|
||||
- FlareSolverr / Cloudflare / Prowlarr-питфоллы: [[prowlarr-flaresolverr-cloudflare]]
|
||||
- Синтез: [[concepts/kraken-media-stack]]
|
||||
Reference in new issue
Block a user