Files
obsidian-vault/personal/tech/flaresolverr-taiga.md
T

137 lines
5.5 KiB
Markdown
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: FlareSolverr на TrueNAS Taiga
created: '2026-09-20'
updated: '2026-09-29'
type: tech
namespace: personal
tags: [flaresolverr, prowlarr, rutracker, taiga, truenas]
related:
- "[[family/how-to/arr-stack-taiga]]"
---
# FlareSolverr на TrueNAS Taiga
Рабочая документация FlareSolverr для arr-стека Taiga. Общая эксплуатация стека находится в [[family/how-to/arr-stack-taiga]]. Kraken здесь не описывается.
## Рабочая схема
```text
Prowlarr
└─ tags [proxy, flaresolverr]
└─ FlareSolverr :8191
└─ Chrome session prowlarr
└─ socks5://vless-proxy:1080
└─ RuTracker
```
Файлы на TrueNAS:
```text
/mnt/RED_2TB/docker/arr/docker-compose.yml
/mnt/RED_2TB/docker/arr/flaresolverr-entrypoint.sh
/mnt/RED_2TB/docker/arr/prowlarr/
```
## Почему нужен entrypoint
Одного `PROXY_URL` недостаточно. FlareSolverr применяет proxy при создании browser session. Если session создана до настройки proxy, последующие `request.get` с той же session продолжают работать без proxy.
Entrypoint при каждом старте:
1. ждёт FlareSolverr `/health`;
2. удаляет старую session `prowlarr`, если она есть;
3. создаёт `prowlarr` с `socks5://vless-proxy:1080`;
4. читает credentials RuTracker из `prowlarr.db` через SQLite URI `mode=ro&immutable=1`;
5. делает pre-login через FlareSolverr;
6. оставляет основной процесс FlareSolverr работать.
SQLite монтируется read-only. Обычный `sqlite3.connect('/prowlarr.db')` на read-only mount может упасть с `unable to open database file`; нужен именно `immutable=1`.
## Compose-настройки
Минимально необходимые параметры:
```yaml
environment:
- LOG_LEVEL=warning
- BROWSER_TIMEOUT=180000
- PROXY_URL=socks5://vless-proxy:1080
- TZ=Asia/Novosibirsk
shm_size: 1gb
restart: unless-stopped
```
Entrypoint и Prowlarr config directory подключаются read-only. Не хранить credentials или API keys в compose и Obsidian.
В Prowlarr для RuTracker:
```text
proxy tag = [1]
flaresolverr tag = [2]
RuTracker tags = [1,2]
FlareSolverr requestTimeout = 180 seconds
```
Один tag `[2]` не решает DNS-блок Taiga. Один tag `[1]` не решает browser challenge.
## Правильная проверка
Проверка session:
```bash
curl -fsS -H 'Content-Type: application/json' \
-d '{"cmd":"sessions.list"}' http://127.0.0.1:8191/v1
```
Должны быть `status=ok` и `prowlarr`.
Проверка login должна смотреть cookies, а не размер HTML:
```text
solution.cookies содержит bb_session
```
Большая HTML-страница может быть страницей ошибки Chromium и не означает login.
Функциональная приёмка — реальный search Prowlarr:
```bash
curl -H "X-Api-Key: $PROWLARR_KEY" \
'http://127.0.0.1:9696/api/v1/search?query=radiohead&type=search&indexerIds=1'
```
`POST /api/v1/indexer/test` не использовать как единственное доказательство: при передаче объекта из API password может быть `********`, что даёт ложный `Auth Failed`.
## Диагностика
1. `docker compose ps` — контейнеры живы.
2. `curl /health` — FlareSolverr отвечает.
3. `sessions.list` — session существует.
4. Проверить `bb_session` в `solution.cookies`.
5. Проверить логи `vless-proxy` на `rutracker.org:443`.
6. Выполнить одиночный реальный search, не `testall`.
Параллельный `testall` перегружает один Chrome и создаёт ложные timeout. Challenge может занимать больше минуты, поэтому timeout 60 секунд недостаточен.
## Перезапуск
```bash
ssh truenas_admin@mallexxx.duckdns.org \
'cd /mnt/RED_2TB/docker/arr && docker compose config -q && docker compose up -d --force-recreate flaresolverr'
```
После restart session должна восстановиться автоматически. Если она не появилась, смотреть `docker logs flaresolverr`; credentials не выводить в лог.
## Восстановление quarantine
Если Prowlarr показывает старый `IndexerStatus`, сначала сделать backup SQLite. Остановить только Prowlarr, удалить только записи `IndexerStatus`, проверить `PRAGMA quick_check`, запустить и выполнить реальный search. Не удалять `prowlarr.db` и не считать health единственным тестом.
## Итоговый рабочий результат
На 2026-09-29 после полного рестарта Taiga:
- FlareSolverr session `prowlarr` создаётся с proxy и pre-login.
- Прямой запрос через session получает `bb_session`.
- Реальный Prowlarr search RuTracker возвращает результаты.
- Ошибки Lidarr/SkyHook не относятся к FlareSolverr; их routing описан в [[family/how-to/arr-stack-taiga]].