From 3ae2f056d4fbcdd20c0aa4aaa42f246e3e99b223 Mon Sep 17 00:00:00 2001 From: Alexey Martemyanov Date: Mon, 28 Sep 2026 20:28:59 +0600 Subject: [PATCH] [2026-09-28] eagle: family/how-to/truenas-infrastructure.md personal/plans/flaresolverr-taiga-deploy.md personal/tech/flaresolverr-taiga.md personal/tech/prowlarr-flaresolverr-cloudflare.md --- family/how-to/truenas-infrastructure.md | 2 +- personal/plans/flaresolverr-taiga-deploy.md | 9 ++- personal/tech/flaresolverr-taiga.md | 59 +++++++++++++++++++ .../tech/prowlarr-flaresolverr-cloudflare.md | 57 +++++++++++++++++- 4 files changed, 122 insertions(+), 5 deletions(-) diff --git a/family/how-to/truenas-infrastructure.md b/family/how-to/truenas-infrastructure.md index 0b3737d5..c37838ae 100755 --- a/family/how-to/truenas-infrastructure.md +++ b/family/how-to/truenas-infrastructure.md @@ -602,7 +602,7 @@ docker run --rm -v :/database filebrowser/filebrowser:latest config set | ~~cam.mallexxx.duckdns.org~~ | **❌ УБРАН из Caddyfile (2026-09-14).** Исторический upstream: `192.168.2.197:8090` — отдельный HTTP-MJPEG-сервис (`ustreamer`), контейнер утрачен при пересоздании пула. **Камера теперь на t610:** аддон **`a889bffc_go2rtc-hardware`** → RTSP H.264 `rtsp://192.168.2.176:8554/usb_camera_h264` → `camera.192_168_2_176` (зона Котельная, **WebRTC работает**, поворот `#rotate=90`). Домен не нужен. Подробно [[family/how-to/home-automation]] §5-кватер-И-6 | | **vpn-panel.mallexxx.duckdns.org** | **3x-ui панель :2053** (добавлен 2026-09-01) | | **vpn.mallexxx.duckdns.org** | **Xray VLESS-WS (путь /vless) → xray-admin:10095** (добавлен 2026-09-01) | -| ~~vnc.mallexxx.duckdns.org~~ | **❌ УБРАН из Caddyfile (2026-09-29).** Был noVNC-роут на `flaresolverr:6080` для ручного решения капчи RuTracker. Гипотеза оказалась **ложной** (капча = симптом неверного пароля, Prowlarr логинится сам) → образ `flaresolverr-vnc`, порт 6080, volume и роут снесены. Caddy отключён от `media_net`. Подробно [[personal/tech/flaresolverr-taiga]] §Откат | +| ~~~~vnc.mallexxx.duckdns.org~~ (убран 2026-09-29)~~ | **❌ УБРАН из Caddyfile (2026-09-29).** Был noVNC-роут на `flaresolverr:6080` для ручного решения капчи RuTracker. Гипотеза оказалась **ложной** (капча = симптом неверного пароля, Prowlarr логинится сам) → образ `flaresolverr-vnc`, порт 6080, volume и роут снесены. Caddy отключён от `media_net`. Подробно [[personal/tech/flaresolverr-taiga]] §Откат | > ### ✅ SUBSCRIPTION-КАНАЛ (auto-обновление клиентов) — работает, проверено 2026-09-15 > diff --git a/personal/plans/flaresolverr-taiga-deploy.md b/personal/plans/flaresolverr-taiga-deploy.md index ea8b7da9..1d36083d 100755 --- a/personal/plans/flaresolverr-taiga-deploy.md +++ b/personal/plans/flaresolverr-taiga-deploy.md @@ -4,14 +4,17 @@ > поиск отдаёт CF-индексеры. Приёмка: `search?query=radiohead&indexerIds=1` → **50 результатов**. > `IndexerStatus` → `[]`, `health` → `[]`, 6/6 индексеров enabled. > 🔴 **Истинная причина «не логинится»:** в Prowlarr хранится пара `mallexxx` / -> `m@n*w$uperP@$$w0rD`, а все диагностические тесты шли **другим аккаунтом** (`keropjan_88`). +> `m@n*w$uperP@$w0rD`, а все диагностические тесты шли **другим аккаунтом** (`keropjan_88`). > Капча RuTracker — **симптом неверного пароля**, а не блокер: с верной парой логин проходит > автоматически и без капчи. Кука авторизации — **`bb_session`** (не `bb_data`). > 🔴 **Откат:** эксперимент с образом `flaresolverr-vnc` + noVNC (порт 6080, роут > `vnc.mallexxx.duckdns.org`, Caddy в `media_net`) **снесён как ненужный** — гипотеза > «капчу решает человек» оказалась ложной. FS вернулся на штатный образ. -> ⚠️ Открыто: **RuTor** — нет результатов в категориях фильмов/сериалов (дефект трекера, не блок). -> Полный разбор, питфоллы и команды — [[personal/tech/flaresolverr-taiga]]. +> ⚠️ **Пункты 6 и 7 в разделе «Остаток» ниже — УСТАРЕЛИ.** Логин RuTracker работает +> (проверено: `search?indexerIds=1` → **50 результатов**); капча-гипотеза снята. +> 🔧 **Журнал отката** (что снесено, питфоллы `docker rm`/bind-mount/root-каталог) — +> [[personal/tech/flaresolverr-taiga]] §«ЖУРНАЛ ОТКАТА». +> Полный разбор и питфоллы — [[personal/tech/flaresolverr-taiga]]. > Связано: [[personal/plans/lidarr-taiga-and-indexer-unblock]], > [[family/projects/media-toolbox-taiga]], [[family/how-to/arr-stack-kraken]], > [[personal/tech/prowlarr-flaresolverr-cloudflare]], [[family/plans/lidarr-taiga-deploy]]. diff --git a/personal/tech/flaresolverr-taiga.md b/personal/tech/flaresolverr-taiga.md index 8ab7c93f..afe9cc84 100755 --- a/personal/tech/flaresolverr-taiga.md +++ b/personal/tech/flaresolverr-taiga.md @@ -212,3 +212,62 @@ CF-индексеры получают **оба** тега: `tags=[1,2]`. RuTor/ > 🔴 **Не строить план на посылке «на Кра́кене работает».** На 2026-09-29 у Кра́кена в БД > тот же карантин `EscalationLevel=9` (RuTracker/Kinozal/Kinozal M, с 27 сен) и **нет** капча-солвера. > «Как на Кра́кене» ≠ «починить». + +## 📋 ЖУРНАЛ ОТКАТА (2026-09-29) — что снесено и как вернуть + +Эксперимент «ручная капча через VNC» построен под ложную гипотезу и полностью откачен. +Записано, чтобы не воссоздавать и чтобы понимать, что удалено. + +| Артефакт | Было | Стало | +|---|---|---| +| Compose `image:` | `flaresolverr-vnc:latest` (свой образ) | `ghcr.io/flaresolverr/flaresolverr:latest` | +| Compose порт | `8191:8191` + `6080:6080` | только `8191:8191` | +| Compose volume | `/mnt/RED_2TB/docker/arr/flaresolverr-config:/config` | убран | +| Каталог сборки | `/mnt/RED_2TB/docker/arr/fs-vnc/{Dockerfile,supervisord.conf,entrypoint-vnc.sh}` | удалён | +| Образ | `flaresolverr-vnc:latest` | удалён (`docker rmi`) | +| Отладочный контейнер | `fs-debug` | удалён (`docker rm -f`) | +| Caddyfile | блок `vnc.mallexxx.duckdns.org` (basic_auth + reverse_proxy) | блок убран, config валиден | +| Сеть Caddy | подключён к `media_net` | `docker network disconnect media_net caddy` | +| Каталог профиля | `/mnt/RED_2TB/docker/arr/flaresolverr-config/` | удалён | + +### ⚠️ ПИТФОЛЛЫ отката (стоили времени) + +1. **`docker compose up -d --force-recreate` падает**, если bind-source уже удалён: + `invalid mount config for type "bind": bind source path does not exist`. + Контейнер держит старый маунт в памяти → нужно **`docker rm -f flaresolverr`**, потом up. +2. **Каталог профиля от root не удаляется по ssh-пользователем** — `Operation not permitted` + (внутренний `chromium/` создан root'ом внутри контейнера). Обход: + ```bash + docker run --rm -v /mnt/RED_2TB/docker/arr:/work alpine sh -c "rm -rf /work/flaresolverr-config" + ``` +3. **`docker rmi` конфликтует**, пока образ держит любой контейнер (`fs-debug` из отладки): + `conflict: unable to remove repository reference (must force) - container ... is using`. + Сначала `docker rm -f fs-debug`, потом `rmi`. +4. **Имя каталога бэкапа рядом с оригиналом** → `Permission denied` (каталог root) — бэкап класть в `~`. + (Здесь не применялось: Alex запретил лишние бэкапы.) + +### Порядок отката, который сработал + +```bash +# 1. Caddyfile — убрать блок vnc, залить, проверить, перезагрузить +scp Caddyfile.clean truenas_admin@...:/mnt/RED_2TB/docker/caddy/Caddyfile +docker exec caddy caddy validate --config /etc/caddy/Caddyfile # → Valid configuration +docker exec caddy caddy reload --config /etc/caddy/Caddyfile +docker network disconnect media_net caddy +# 2. compose — вернуть штатный образ, убрать порт 6080 и volume +# править ЛОКАЛЬНО → scp → docker compose config -q → up -d +# 3. снести образ/каталог/контейнеры (см. питфоллы выше) +# 4. ПРИЁМКА: логин + поиск (не caps!) +``` + +### ✅ Приёмка после отката (факты) + +``` +API FS: {"status":"ok","version":"3.5.2"} +Логин (session=prowlarr): len=251792 (залогиненный форум ~250KB), wrong_password=0 +indexerstatus: [] +search: idx1=50 idx2=33 idx4=47 idx5=EMPTY idx6=0 +``` + +**Вывод сессии:** FS корректно работает на штатном образе с `PROXY_URL`. Persistent-профиль, +noVNC и капча-солвер — **не нужны**. Prowlarr логинится сам. diff --git a/personal/tech/prowlarr-flaresolverr-cloudflare.md b/personal/tech/prowlarr-flaresolverr-cloudflare.md index c4289c21..b0b73609 100755 --- 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-28' +updated: '2026-09-29' type: tech namespace: personal tags: ["prowlarr", "flaresolverr", "cloudflare", "rutracker", "kinozal", "torrent", "arr", "kraken", "taiga", "infra"] @@ -17,6 +17,61 @@ related: Зеркало ключевых питфоллов скилла `torrent-agent-pipeline` (§ Питфоллы). Контекст: 2026-09-20, Kraken. RuTracker / Kinozal / Kinozal (M) были «красными» в Prowlarr. +## 🔴🔴 2026-09-29: «Auth Failed» = СНАЧАЛА ДАННЫЕ, ПОТОМ ИНФРАСТРУКТУРА + +**Самый дорогой урок.** Долгая диагностика «капча RuTracker», собран образ с noVNC — всё зря. +Причина: **диагностические тесты шли НЕ ТЕМ аккаунтом.** + +``` +Prowlarr хранит: username = mallexxx password = m@n*w$uperP@$$w0rD +Тесты шли: username = keropjan_88 password = I70aj7Igpr +``` + +RuTracker на неверный пароль отвечает **формой логина + капчей** — отсюда ложный вывод +«трекер требует капчу от человека». С верной парой логин проходит **автоматически, без капчи**. + +🔴 **ПЕРВЫЙ ШАГ при `Auth Failed` — сверить пару из БД, до любых гипотез:** +```bash +DB=/mnt/RED_2TB/docker/arr/prowlarr/prowlarr.db # Кра́кен: /srv/*/docker/prowlarr/config/prowlarr.db +python3 -c " +import json,sqlite3,shutil +shutil.copy('$DB','/tmp/o.db') +c=sqlite3.connect('/tmp/o.db') +for r in c.execute('SELECT Name,Settings FROM Indexers'): + s=json.loads(r[1]) + print(r[0], {k:v for k,v in s.items() if 'user' in k.lower() or 'pass' in k.lower()}) +" +``` +Тестировать надо **ровно той парой**, что лежит в Prowlarr. Иначе тест измеряет не то. + +### Признак «залогинен» — РАЗМЕР HTML, не подстрока + +| `len` HTML | Что это | +|---|---| +| **~250 KB** | залогиненный форум ✅ | +| **~13 KB** | форма логина вернулась ❌ | + +⚠️ Подстрока `login_username` есть **в обоих** случаях (HTML-шаблон + скрытая форма быстрого +входа) — по ней диагноз ставить НЕЛЬЗЯ. +Кука авторизации RuTracker — **`bb_session`** (не `bb_data`; в сессии также `cf_clearance`, +`bb_guid`, `bb_ssl`). Отсутствие `bb_session` = логина нет. + +### Что НЕ работает (проверено, не повторять) + +| Идея | Почему нет | +|---|---| +| Капча-солвер (`CAPTCHA_SOLVER`) | **Официально non-functional** (DeepWiki FS, issue #1452 закрыт). Адаптеры удалены из образа | +| Вписать cookies в Prowlarr вручную | Индексер принимает только `username`/`password` — поля для cookie нет | +| noVNC + свой образ FS для ручного входа | Строилось под ложную гипотезу. **Снесено 2026-09-29.** Журнал отката — [[personal/tech/flaresolverr-taiga]] | +| Свой браузер через 3x-ui «по тому же туннелю» | `vless-proxy` — **клиент** xray, не сервер; `cf_clearance` привязан к IP+UA+TLS-fingerprint | +| Persistent-профиль Chrome у FS | Не решает ничего: FS логинится сам при каждом старте | + +> 🔴 **Не строить план на посылке «на Кра́кене работает».** На 2026-09-29 у Кра́кена в БД +> тот же карантин `EscalationLevel=9` (RuTracker/Kinozal/Kinozal M, с 27 сен) и **нет** капча-солвера. + +> 🔴 **Приёмка — `search`, а НЕ `caps` и НЕ `health`.** `caps` 200 + пустой `indexerstatus` + +> `health []` не доказывают, что поиск работает. Разбивка по индексеру обязательна. + ## Схема ```