[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:
1 parent
6b119612c1
commit
e4dcbbdf4e
3 files changed
+188
-7
No files matched your search
@@ -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]]
|
||||
Reference in new issue
Block a user