Files
obsidian-vault/personal/tech/lampac-torrserver.md
T

254 lines
12 KiB
Markdown
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.
# TorrServer на Кра́кене — диагностика
**Дата:** 2026-09-22
**Вывод:** ✅ **TorrServer исправен.** Но «Торренты» пусто по ДВУМ причинам,
найденным после первой проверки: 🔴 **закэшированный 503** (`X-Invoke-Cache: HIT`)
и 🔴 **`min_sid: 15` режет выдачу**. Диагноз и фикс — [[personal/plans/lampac-pidtor-503-fix]].
**Связано:** [[personal/tech/lampac-deployment]], [[personal/plans/lampac-pidtor-503-fix]],
[[personal/plans/lampac-disable-1xbet-ads]]
---
## Вопрос Alex
> «по просмотру: у меня есть определенные сомнения что через torrserver идут,
> там только пункт "смотреть онлайн" работает и он добавляет вотермарк и рекламу
> 1xbet - это точно с торрентов? потому что если пункт "торренты" выбрать
> при просмотре - то там пусто.»
## Ответ: сомнения Alex верны по рекламе. Но TorrServer исправен.
### Реклама 1xbet — НЕ от TorrServer
| Пункт UI | Механизм | Источник потока | Реклама |
|---|---|---|---|
| **«Торренты»** | `PidTor` → `JacRed` → magnet → `TorrServer` | P2P-раздача | **НЕТ** |
| **«Смотреть онлайн»** | `Online` + `OnlineRUS` (20 балансеров) | чужой CDN сайта | **ЕСТЬ (1xbet)** |
TorrServer не вставляет рекламу. Баннеры рисует плеер-обёртка онлайн-источника.
## 🔴 Все проверки — сырьём, не догадкой
### 1. TorrServer жив и качает
```bash
# изнутри контейнера (снаружи порт 9085 закрыт!)
docker exec lampac sh -c 'curl -s http://127.0.0.1:9085/echo'
# -> MatriX.135
```
✅ **Раздача добавилась и пошла качаться** (тест магнитом Big Buck Bunny):
```json
{"title":"probe","name":"Big Buck Bunny","hash":"dd8255ec...","stat":3,
"stat_string":"Torrent working","total_peers":343,"active_peers":7,
"connected_seeders":5,"bytes_written":6918,"bytes_read":49072,
"torrent_size":276445467}
```
⚠️ Тестовая раздача **удалена** после проверки:
`POST /ts/torrents {"action":"rem","hash":"..."}` → HTTP 200.
### 2. JacRed находит раздачи
```bash
curl -s "http://127.0.0.1:9118/api/v1.0/torrents?search=Матрица"
# HTTP 200, 74 КБ
```
Трекеры в выдаче: `kinozal`, `torrentby`, `rutor`, `rutracker`.
Магниты на месте: `magnet:?xt=urn:btih:3A44F276AA59110B5765458EA013863CFD5BFBFA`
### 3. PidTor выдаёт торренты в UI
```bash
curl -s "http://127.0.0.1:9118/lite/pidtor?title=Матрица&year=1999"
# HTTP 200, 8435 байт, 12 раздач
```
Ответ содержит рабочий торрент:
`/lite/pidtor/s61065ea115b7cc3e8db9fb5ab1f6f327f08bd1c9?tr=...`
В `/lite/events` PidTor присутствует как источник: `"name":"Pid<s>T</s>or"`.
### 4. `jac.red` резолвится
```
getent hosts jac.red -> 144.31.3.10
curl http://jac.red -> HTTP 200
```
### 5. 🔴 НО: часть фильмов отдаёт 503 ИЗ КЭША
Массовая проверка 12 позиций каталога дала **11 × HTTP 503**, 1 × HTTP 200.
При этом JacRed по тем же фильмам отдаёт раздачи:
```
F1 (2025) -> /api/v2.0/indexers/all/results -> 200, 72 раздачи (sid=203,26,18…)
Гамнет (2025) -> 200, 14 раздач (max sid=79, 6 проходят min_sid=15)
А /lite/pidtor?title=F1 -> 503 с заголовком X-Invoke-Cache: HIT
```
**`X-Invoke-Cache: HIT` + время ответа 0.0016s = ответ из памяти, запроса к
JacRed НЕ было.** Один раз источник отказал → lampac закэшировал 503 на ~40 мин.
🔴 **Диагностический признак: смотреть заголовки, не только код.**
503 ≠ «раздач нет» (тогда был бы 200 с пустым списком). 503 = отказ источника,
закэшированный процессом. Сброс — `docker restart lampac`.
## 🔴 Роли в цепочке: поиск НАРУЖУ, качание локально
```
Lampa → lampac PidTor → jac.red (ПОИСК раздач — ЧУЖОЙ хост 144.31.3.10)
→ magnet → TorrServer Кра́кена (КАЧАЕТ, локально)
→ поток /lite/pidtor/s<id>
```
⚠️ Поиск раздач **не локален** — `PidTor.redapi = "http://jac.red"`. TorrServer
только качает то, что нашёл чужой сервер. Не путать эти роли при диагностике.
Рабочая альтернатива — локальный JacRed lampac:
`/api/v2.0/indexers/all/results?Query=…` отвечает за **0.12s** (внешний — 0.35s).
## 🔴 `min_sid: 15` — второй фильтр, режущий выдачу
Реальные сиды по свежим фильмам: **1–37**. Порог 15 отсекает большинство:
```
Гамнет: из 14 раздач проходят только 6
F1: отсекаются раздачи с sid=1, 4, 7 (рабочие)
```
Понижение `min_sid` — решение Alex (низкий sid = медленнее качает).
Варианты: `1` (показывать всё) · `3..5` (компромисс) · оставить `15`.
## 🔴 Маршруты — главный питфолл разбора
TorrServer **НЕ доступен по порту 9085 напрямую** — lampac проксирует его
под префиксом **`/ts/`** на порт **9118**:
```
http://127.0.0.1:9118/ts/echo -> MatriX.135 (кто ты)
http://127.0.0.1:9118/ts/{*suffix} -> прокси на TorrServer API
http://127.0.0.1:9118/ts/stream -> воспроизведение
http://127.0.0.1:9118/ts/playlist -> плейлист
http://127.0.0.1:9118/ts/download/ -> скачивание
```
Проверять **только изнутри контейнера** (`docker exec lampac`) — снаружи
порт 9085 даёт `Connection refused`.
### Метод запроса ВАЖЕН
```
POST /ts/torrents с телом [] -> [] ✅ список раздач
POST /ts/torrents с телом {} -> 400 (неверный формат)
GET /ts/torrents -> 404 (метода нет)
GET /ts/settings -> 403 (нужна авторизация ts:tspass)
```
**400 вместо 404 = маршрут существует.** Это ключевой признак при диагностике.
## 🔴 Конфиг: где что лежит
### `current.conf` (эффективный, слитый из base.conf + init.conf)
```json
"TorrServer": {
"releases": "MatriX.135",
"tsport": 9085,
"defaultPasswd": "ts",
"limit_map": [{ "pattern": "^/ts/", "map": { "limit": 50, "second": 1 } }]
},
"JacRed": {
"typesearch": "webapi",
"disableJackett": true,
"webApiHost": "http://ns3bg91xvuqfvq9h.cfhttp.top",
"Red": { "trackers": ["rutracker","rutor","kinozal","nnmclub",
"megapeer","bitru","toloka","lostfilm","baibako","torrentby",
"hdrezka","selezen","animelayer","anilibria","anifilm"] }
},
"PidTor": {
"enable": true,
"enabled": false,
"redapi": "http://jac.red",
"min_sid": 15,
"torrs": null, ← README: без этого список ПУСТОЙ
"auth_torrs": null ← ...но фактически /lite/pidtor работает
}
```
⚠️ **Расхождение с README PidTor:** README говорит «пункт появляется только
если заданы `torrs`/`auth_torrs`, иначе список пустой». Фактически при `null`
`/lite/pidtor` отдал 8435 байт с рабочей раздачей. README устарел для этой
сборки (`MatriX.135`).
### API JacRed
```
GET /api/v1.0/conf -> {"apikey":true}
GET /api/v1.0/torrents?search=... -> список раздач
GET /api/v2.0/indexers/{status}/results?Query= -> JacRed/Jackett-формат
```
⚠️ `/jacred`, `/jacred/api` → **404**. Не те пути.
### Секция `TorrServer.settings.json` (data/ts/)
```json
{"BitTorr": {"CacheSize": 100663296, "ConnectionsLimit": 25,
"DisableDHT": false, "DisablePEX": false, "DisableTCP": false,
"EnableIPv6": false, "PreloadCache": 0, "ReaderReadAHead": 83,
"TorrentDisconnectTimeout": 180, "TorrentsSavePath": "",
"UseDisk": false, "RetrackersMode": 1}}
```
## Питфоллы сессии
1. 🔴 **`/media/movies-radarr` — два разных каталога.** Снаружи `/media/movies-radarr`
это SD-пустышка (0 файлов). Реальный путь Radarr = монтируется ИЗ ДРУГОГО
диска: `/srv/dev-disk-by-uuid-49e8f586-…/media/movies-radarr` (17 каталогов).
Отдельный диск от lampac (`6194539b`). Проверять `docker inspect` маунты,
а не `find` по наружному пути.
2. 🔴 **`setsid nohup` НЕ спасает от ssh-обрыва.** Прогон генератора дважды
умирал (`client_loop: send disconnect: Broken pipe`). Рабочее решение —
`systemd-run --user --unit=<name> --scope <script>`: отвязывает от сессии.
3. 🔴 **`strings` в контейнере не даёт маршрутов TS** — пустой вывод. Смотреть
`README.md` модуля и **пробовать запросы** (404 vs 400), а не парсить бинарник.
4. 🔴 **`vast.js` и `modification.js` — НЕ источники рекламы.** VASTPlayer
не подключён в `sisi/index.html`; `modification.js` (22 КБ) даёт 0 совпадений
на `1xbet|vast|adTag`, домены только `w3.org`. Реклама от онлайн-источников.
## Итог: что реально делает «Смотреть онлайн» vs «Торренты»
```
«Смотреть онлайн» = 20 источников из /lite/events. Из них ТОРРЕНТНЫЙ — РОВНО ОДИН:
Pid<s>T</s>or http://127.0.0.1:9118/lite/pidtor balanser=pidtor
Остальные 19 — онлайн-балансеры (чужой CDN, реклама 1xbet):
Filmix · pizdatoehd · Kinobase · Phantom · Kinogo · AniDub · LeProduction ·
VeoVeo · Collaps · HDVB · Rutube · VK Видео · Kinoteatr.kg · Vibix ·
Kinotochka · Eneyida · UaKino · UAFilm · Geosaitebi
```
**Отдельного пункта «Торренты» в `/lite/events` НЕТ** — это не источник, а
интерфейс выбора раздачи внутри PidTor. Путь в UI:
карточка → «Смотреть онлайн» → **PidTor** → список раздач → выбор качества.
```bash
# проверка количества раздач на фильме из терминала
ssh kraken 'curl -s "http://127.0.0.1:9118/lite/pidtor?title=Матрица&year=1999" \
| grep -c data-json=' # -> 12
# пакетная проверка позиций каталога
python3 /tmp/probe_pidtor_batch.py
```
### Если пусто — порядок проверки
1. `curl -i "…/lite/pidtor?title=<название>&year=<год>"` — **смотреть заголовки**:
`X-Invoke-Cache: HIT` → это кэш, лечение `docker restart lampac`
2. Пришёл 503 → источник отказал, кэш держит ~40 мин
3. Пришёл 200, но 0 раздач → реально нет раздач у трекеров
4. `min_sid: 15` — сиды < 15 отсекаются (свежие фильмы часто 1–37)