diff --git a/family/how-to/arr-stack-kraken.md b/family/how-to/arr-stack-kraken.md index e71633d1..4a455ffe 100644 --- a/family/how-to/arr-stack-kraken.md +++ b/family/how-to/arr-stack-kraken.md @@ -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)` остаётся разумной страховкой, но не был обязательной причиной тормозов. diff --git a/personal/tech/lampac-torrserver.md b/personal/tech/lampac-torrserver.md index 620e84b6..714a26cf 100644 --- a/personal/tech/lampac-torrserver.md +++ b/personal/tech/lampac-torrserver.md @@ -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`. --- diff --git a/personal/tech/prowlarr-flaresolverr-cloudflare.md b/personal/tech/prowlarr-flaresolverr-cloudflare.md index ceb57043..8b066ec0 100644 --- a/personal/tech/prowlarr-flaresolverr-cloudflare.md +++ b/personal/tech/prowlarr-flaresolverr-cloudflare.md @@ -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 + 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:`. +В образе **`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= --format "{{.Status}} R={{.RestartCount}}"`. +2. 🔴 **`sudo docker stats` показывает `0B / 0B` у всех контейнеров.** Метрика врёт + (недоступна на этом хосте) — считать память по контейнерам через + `/sys/fs/cgroup/system.slice/docker-.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]]