[2026-09-24] eagle: family/how-to/arr-stack-kraken.md personal/tech/lampac-torrserver.md personal/tech/prowlarr-flaresolverr-cloudflare.md

This commit is contained in:
Alexey Martemyanov committed 2026-09-24 20:06:04 +06:00
1 parent 6b119612c1
commit e4dcbbdf4e
3 files changed
+188 -7

No files matched your search

+14
View File
@@ -369,6 +369,20 @@ Alex: **ожидаемое поведение**; если фильм нужен
- **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`. Детали и команды — в секции ниже.
- 🔴 **2026-09-24: РЕЦИДИВ — «6/6» больше не действует.** RuTracker (1), Kinozal (5), Kinozal (M) (6)
снова заблокированы, `EscalationLevel=9`, `disabledTill=2026-09-25T10:17Z` — то есть **сутки**.
Первопричина не Cloudflare и не теги (они на месте), а **FlareSolverr в crash-loop**:
Chrome не поднимается под chromedriver (`session not created: cannot connect to chrome at
127.0.0.1:PORT`), HTTP `:8191` не отвечает. Симптом в UI: `error IndexerProxyStatusCheck:
All indexer proxies are unavailable due to failures`. Диагноз и незавершённый фикс
(`shm_size: 1gb` + снятие `IndexerStatus`): [[personal/tech/prowlarr-flaresolverr-cloudflare]]
§«2026-09-24». ⚠️ Ни `GET /api/v1/health`, ни `/api/v1/indexerstatus` пустотой не отделались —
на этот раз они **показали** блокировки; но авторитет всё равно за `prowlarr.debug.txt`
и таблицей `IndexerStatus`.
- 🔴 **2026-09-24: swap на Кра́кене может быть МЁРТВ.** `/proc/swaps` пуст при живом
`/var/swap` (512 MB), `dphys-swapfile` не поднимает его автоматически, строки в `/etc/fstab`
нет. Лечение: `sudo swapon /var/swap` (⚠️ `swapoff -a && swapon -a` даёт `SwapFree: 0 kB`).
Без swap Chrome-контейнеры падают при пике старта. Проверка: `cat /proc/swaps`.
- **🔴 2026-09-04: 4K UHD Remux при Direct Play подтормаживает на ТВ (webOS).** Симптом у `Неистовый (Unhinged 2020)` — 60.9GB `...Remux.2160p.mkv` avg ~99 Мбит/с. После фикса eth0 Kraken → 1G (был 100M, см. [[kraken-network]]) торможение **сохранилось**. Подтверждено по логу Jellyfin `log_20260904.log`: сессия 10:18→10:28 «Jellyfin for WebOS 1.2.2», Stop at 400916ms (~6:40), **ни одной строки transcode → это Direct Play**, не CPU-рендер субтитров.
- **🔴🔴 2026-09-04 (вживую): тормозит Direct Play даже лёгкого 4K → пока шло по Wi-Fi, причина не сервер/диск.** В живом воспроизведении по Wi-Fi `Project Hail Mary (2026)` (`...2160p.iT.WEB-DL...mkv`, HEVC Main10 4K HDR10+, avg ~24.5-25.7 Мбит/с, 30.2GB, Direct Play) подёргивание было, при этом: транскода нет (0 ffmpeg, CPU Kraken load 0.1), сервер отдаёт всего ~21 Мбит/с, Wi-Fi ТВ «чист» по MAC-счётчикам (0 CRC/0 retries, -53 dBm), линки с запасом ×10+.
- ✅ **2026-09-04 РАЗРЕШЕНИЕ (проверено пользователем вживую):** после двух правок — (1) eth0 Kraken возвращён на **1G** (замена патч-корда) и (2) **ТВ переведён на проводной Ethernet** (100M downshift-линк) — и `Unhinged` (remux, ~89 Мбит/с), и `Project Hail Mary` (лёгкий 4K) **идут без тормозов**. Вывод: причиной были НЕ пропускная способность и НЕ декодер-клиента, а **нестабильный Wi-Fi-линк последней мили ТВ** (даже при чистых MAC-счётчиках — джиттер/переупорядочивание в зашумлённом эфире). Провод (даже 100M) стабильно отдаёт. Профиль `WEB-4K (no remux)` остаётся разумной страховкой, но не был обязательной причиной тормозов.
+22 -5
View File
@@ -1,6 +1,6 @@
# TorrServer на Кра́кене — диагностика
**Дата:** 2026-09-22 · **ОБНОВЛЕНО 2026-09-24 (вечер): исправлено расположение кэша**
**Дата:** 2026-09-22 · **ОБНОВЛЕНО 2026-09-24 (поздний вечер): «Мастерская сатаны» — раздач нет; ниже найден мёртвый FlareSolverr**
**Вывод:** ✅ **TorrServer исправен. ЗАДАЧА ЗАКРЫТА.** «Торренты» пусто было по причине
🔴 **`redapi` указывал на локальный lampac**, чей JacRed отдаёт формат БЕЗ
поля `info` → PidTor падал на `torrent.info.sizeName` → NPE → 500 → кэшировался
@@ -53,11 +53,28 @@ $H/lampac/cache/module/ → 76 файлов без расширений (OEdMn4
`$H/lampac/data/`, `redapi` переключать **только** после появления поля `info`;
(б) Prowlarr в обход PidTor — в плеере таких источников не будет.
### Статус
### Статус: ✅ ДИАГНОСТИКА ДОВЕДЕНА (2026-09-24, продолжение)
Диагностика **не доведена**: шаги 2–3 (curl к `jac.red` из Mac) ушли в **таймаут
апрува (BLOCKED ×2)**; шаг 1 (`docker stop lampac`) — зона Alex.
План из 4 шагов записан в [[personal/tech/lampac-deployment]] §«Мастерская сатаны».
Шаги 2–3 выполнены на Кра́кене (не из Mac — апрувы на curl к внешнему хосту истекали):
```
jac.red …results?title=Мастерская сатаны&year=2025 → 200, {"Results":[],"jacred":true}
jac.red …results?title=Матрица&year=1999 → 200, 132 раздачи (контроль)
jac.red …results?title=Devils Workshop → 200, 2 раздачи (фильм 2022, НЕ тот)
```
**Итог по фильму: раздач у него действительно нет** на 25 трекерах jac.red.
Механизм PidTor исправен — доказано контролем на «Матрице». Версия «сломан поиск» неверна.
🔴 **Второй, более важный слой нашёлся ниже:** 3 из 6 индексеров Prowlarr
(RuTracker, Kinozal, Kinozal M) заблокированы с `EscalationLevel=9` до 2026-09-25 10:17
из-за мёртвого 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`.
---
@@ -1,7 +1,7 @@
---
title: Prowlarr FlareSolverr — Cloudflare-обход и починка индексеров
created: '2026-09-20'
updated: '2026-09-20'
updated: '2026-09-24'
type: tech
namespace: personal
tags: [prowlarr, flaresolverr, cloudflare, rutracker, kinozal, torrent, arr, kraken, infra]
@@ -114,7 +114,157 @@ ssh kraken 'sudo docker start prowlarr'
```
По умолчанию до 100 результатов на индексер — «156 всего» ≠ «по 26 на каждый».
## 🔴 2026-09-24: FlareSolverr в crash-loop — Chrome не поднимается под chromedriver
**Повод:** Alex — «Мастерская сатаны: в торрентах ничего не нашлось, по каким трекерам
ищет и можно ли влиять через Prowlarr?» Симптом оказался двухслойным: сверху пустая
выдача PidTor, под ней — мёртвый FlareSolverr.
### Слой 1 (верхний): PidTor отдаёт 503 из кэша, jac.red — 0 результатов
```
GET /lite/pidtor?title=Мастерская сатаны&year=2025
→ HTTP 503, Content-Length: 0, X-Invoke-Cache: HIT, t=0.007s ← кэш
GET http://jac.red/api/v2.0/indexers/all/results?title=Мастерская сатаны&year=2025
→ HTTP 200, {"Results":[],"jacred":true} ← ЧЕСТНЫЙ ноль
GET …/results?title=Матрица&year=1999
→ HTTP 200, 132 раздачи ← контроль: живой
```
**jac.red знает 25 индексеров:** `anibelka anidub anifilm aniliberty animelayer anistar
baibako bitru kinozal korsars leproduction lostfilm mazepa megapeer nnmclub rudub rutor
rutracker selezen subsplease toloka torrentby ultradox viruseproject`.
🔴 **Список индексеров jac.red:** `GET http://jac.red/api/v2.0/indexers?configured=true`
→ 200, ~4 КБ, массив с `name`. Рабочий способ посмотреть, по каким трекерам реально
идёт поиск — не догадываться.
🔴 **jac.red отдаёт 429 при частых запросах** (nginx): пауза `sleep 2-3` между вызовами
обязательна. Формулировка ответа: nginx-страница `429 Too Many Requests`, НЕ JSON.
🔴 **`title=` должен быть URL-кодирован целиком.** `%20` в значении даёт **HTTP 400** —
использовать `curl -G --data-urlencode "title=Мастерская сатаны"`. Ручная сборка
query-строки с `%20` в середине ломается.
**Вывод по «Мастерская сатаны»:** у фильма реально нет раздач на 25 трекерах jac.red.
Механизм PidTor исправен (контроль на «Матрице» — 132 раздачи). Диагноз «сломан поиск»
был бы неверным.
⚠️ Одноимённый фильм 2022 года лежит там как **«Мастерская дьявола / Devil's Workshop»**
(`Devils Workshop` → 2 раздачи, bitru + kinozal, sid 0-1). Латиница в выдаче — не тот
фильм, следить за годом.
### Слой 2 (первопричина): FlareSolverr crash-loop ⇒ 3 индексера Prowlarr мертвы
```
RuTracker (id=1) disabledTill = 2026-09-25T10:17:51Z
Kinozal (id=5) disabledTill = 2026-09-25T10:17:50Z
Kinozal (M) (id=6) disabledTill = 2026-09-25T10:17:48Z
EscalationLevel = 9 (максимум — блокировка на 24 ч)
```
Проверка: `GET /prowlarr/1/api?t=search&q=…` → `429 Indexer is disabled till …`.
Прямой результат несмотря на то, что таблица `IndexerStatus` начиналась 20-го (начальные
падения) и докатилась до `EscalationLevel=9` именно **24-го в 10:17**.
**В логе FlareSolverr:**
```
Error starting Chrome: Message: session not created: cannot connect to chrome at
127.0.0.1:48249 from chrome not reachable
Exception: Error getting browser User-Agent. …
File "/app/flaresolverr.py", line 136, in <module>
flaresolverr_service.test_browser_installation()
```
Контейнер `flaresolverr` уходит в **crash-loop** (`Restarting (1)`), HTTP `:8191` не
отвечает (`Connection reset by peer`). Успешных решений челленджа в логе (`Challenge
solved`) нет — считать их число: `sudo docker logs flaresolverr 2>&1 | grep -c "Challenge solved"`.
### Что проверено и исключено (не тратить время повторно)
| Гипотеза | Проверка | Итог |
|---|---|---|
| Образ обновлён watchtower'ом и сломан | `image inspect` → v3.5.2, `Created=2026-09-12`; в логах watchtower нет строк про flaresolverr | ❌ не при чём |
| Нехватка RAM | `free`, суммарный RSS всех процессов = 1.9 GB при MemAvailable ~1.8 GB | ⚠️ фон, не корень |
| **swap мёртв** | `/proc/swaps` **пуст** при живом `/var/swap` (512 MB); `SwapFree` падал до 240 kB | ✅ **реальный баг хоста**, починен |
| IPv6: `/etc/hosts` отдаёт `::1 localhost` первым, Chrome на IPv6-петле | в контейнере `/etc/hosts` → `::1 localhost` первый; **добавлен `net.ipv6.conf.all.disable_ipv6=1`** (как у prowlarr) → `disable_ipv6=1`, hosts стал `127.0.0.1 localhost` | ❌ **НЕ помогло**, ошибка дословно та же |
| `/dev/shm` мал (64 MB) | `docker inspect` → `ShmSize=67108864`; в контейнере `df -h /dev/shm` → 64M | ⚠️ **подозреваемый №1 из оставшихся** |
🔴 **Chrome запускается вручную, но не под chromedriver.** Проверено:
`docker exec flaresolverr sh -c '/usr/lib/chromium/chromium --headless=new --no-sandbox
--disable-dev-shm-usage --disable-gpu --dump-dom about:blank'` → работает, отдаёт
verbose-лог компонентов; под управлением selenium — `cannot connect to chrome at 127.0.0.1:<port>`.
В образе **`chromedriver` не в PATH** (`which chromedriver` → not found) — selenium ≥ 4
использует собственный Selenium Manager.
🔴 **Вывод не делать по одной гипотезе.** IPv6 выглядел убедительно (симптом
«не видит chrome на 127.0.0.1» идеально ложится), но после применения ошибка
воспроизвелась дословно — то есть причина не в резолве адреса.
### ✅ Починено в этой сессии
**1. swap был мёртв — восстановлен.** `/proc/swaps` пуст, а `/var/swap` (512 MB) на диске
есть, ядро держало `SwapFree=256 kB` при нулевом активном swap. Без swap Chrome не
получает память при пике старта.
```bash
sudo swapon /var/swap # → /proc/swaps: /var/swap file 524272 -2
cat /proc/swaps # проверка
grep -E "^(SwapTotal|SwapFree)" /proc/meminfo
```
⚠️ **`swapoff -a && swapon -a` НЕ восстанавливает** — даёт `SwapFree: 0 kB`. Помогает
только явный `sudo swapon /var/swap`. В `/etc/fstab` строки для swap НЕТ
(комментарий `dphys-swapfile`), systemd swap-unit не поднят (`systemctl list-units
--type=swap --all` → 0 units). Автоподъём swap на этом хосте **не настроен** — после
ребута swap снова может пропасть.
**2. `disable_ipv6` добавлен сервису `flaresolverr`** (в `docker/prowlarr/docker-compose.yml`,
бэкап `docker-compose.yml.bak-20260924-193632`). **Эффекта не дало** — оставлено как
проверенная-неудачная попытка; при откате вернуть файл из бэкапа.
```yaml
flaresolverr:
image: ghcr.io/flaresolverr/flaresolverr:latest
environment:
- LOG_LEVEL=warning # ← не info: info пишет пароли трекеров
- BROWSER_TIMEOUT=60000
ports:
- 8191:8191
networks:
- media_net
sysctls:
- net.ipv6.conf.all.disable_ipv6=1 # 2026-09-24: не помогло, см. выше
shm_size: 1gb # ⏳ НЕ ПРИМЕНЕНО — кандидат на фикс
```
⏳ **Незавершённое:** добавить `shm_size: 1gb` и пересоздать
(`docker compose up -d --force-recreate flaresolverr`), затем снять блокировки
`IndexerStatus` для id 1/5/6 (см. секцию выше) и проверить
`POST http://localhost:8191/v1 {"cmd":"request.get","url":"https://kinozal.me/browse.php?c=0"}`
→ ожидается `status: ok`. После этого — поиск «Мастерская сатаны» по всем 6 трекерам.
### Дополнительные питфоллы сессии
1. 🔴 **`escape` из контейнера в crash-loop:** `docker exec` отдаёт
`OCI runtime exec failed: exec failed: unable to start container process` /
`cannot exec in a stopped container`. Это признак рестарт-петли, а не «неверный exec» —
сначала `docker ps -a --filter name=<c> --format "{{.Status}} R={{.RestartCount}}"`.
2. 🔴 **`sudo docker stats` показывает `0B / 0B` у всех контейнеров.** Метрика врёт
(недоступна на этом хосте) — считать память по контейнерам через
`/sys/fs/cgroup/system.slice/docker-<id>.scope/memory.current`, а по процессам — `ps -eo rss`.
3. 🔴 **`ps aux --sort=-rss | awk` с `%4`/`$6` даёт мусор** — формат `ps aux` на этом
хосте отдаёт 11 полей, `%MEM` и RSS нужно читать через `ps -eo user,pid,rss,comm,args`.
4. 🔴 **Долгие ssh-команды в crash-loop контейнера вешают терминал на 400+ с** — резать
диагностику на короткие скрипты и не ждать готовности контейнера дольше 240 с.
5. ⚠️ **`sudo` на Кра́кене требует TTY** — `ssh -t kraken '…'`. Без `-t`:
`sudo: a password is required`.
## Источники
- Скилл: `torrent-agent-pipeline` (§ Питфоллы)
- Скилл: `torrent-agent-pipeline` (§ Питфоллы), `lampac-kraken-deploy`
- Живой разбор: [[family/how-to/arr-stack-kraken]] — секции про починку индексера 2026-09-20
- Слой PidTor/кэш: [[personal/tech/lampac-torrserver]] §«2026-09-24»
- Каталог/конфиг lampac: [[personal/tech/lampac-deployment]]