# TorrServer на Кра́кене — диагностика **Дата:** 2026-09-22 · **ОБНОВЛЕНО 2026-09-22 (вечер): подтверждено Alex в UI** **Вывод:** ✅ **TorrServer исправен. ЗАДАЧА ЗАКРЫТА.** «Торренты» пусто было по причине 🔴 **`redapi` указывал на локальный lampac**, чей JacRed отдаёт формат БЕЗ поля `info` → PidTor падал на `torrent.info.sizeName` → NPE → 500 → кэшировался как 503. **ИСПРАВЛЕНО**: `redapi` возвращён на `http://jac.red`. **Приёмка Alex:** «Во! теперь появились торренты. запустил F1..» — ✅ видно в UI. Диагноз и фикс — [[family/how-to/lampac-torrents]]. **Связано:** [[personal/tech/lampac-deployment]], [[family/how-to/lampac-torrents]], [[personal/plans/lampac-disable-1xbet-ads]], [[personal/plans/watchlist-tmdb-missing-marker]] --- ## ✅ Статус закрытия (2026-09-22 вечер) | Пункт | Статус | |---|---| | PidTor 500/503 | ✅ исправлено, `redapi=http://jac.red` | | Приёмка в UI | ✅ Alex запустил F1 в плеере | | Тестовая раздача `probe` | ✅ убрана сама (сброс при рестарте) | | `min_sid` | ✅ `min_sid: 3` убран → сток `15` | | Минус год у «Волшебный участок: Фильм» | ✅ ЗАКРЫТО — оставлено пусто (данных нет в TMDB, фильм в производстве) | | Документация | ✅ саммари → [[family/how-to/lampac-torrents]], план снесён | ### Итог задачи (2026-09-22) Задача про торренты **закрыта полностью**. Единственный дефект был внесён мной (переключение `redapi` на локальный JacRed) и откачен. Разбор → саммари-док `family/how-to/lampac-torrents.md`; детальный план `personal/plans/lampac-pidtor-503-fix.md` снесён по требованию Alex, 8 ссылок на него перебиты. **Онлайн НЕ гасим** — Alex запретил ([[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":"PidTor"`. ### 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 ``` ⚠️ Поиск раздач **не локален** — `PidTor.redapi = "http://jac.red"`. TorrServer только качает то, что нашёл чужой сервер. Не путать эти роли при диагностике. ### 🔴🔴 Локальный JacRed — НЕ альтернатива. Он ломает PidTor **Проверено 2026-09-22 (стоило полной поломки):** переключение `redapi` на `http://127.0.0.1:9118` (локальный JacRed lampac) роняет **ВСЕ** фильмы в HTTP 500. ``` НАШ JacRed отдаёт поля: Tracker, Details, Title, Size, PublishDate, Category, Seeders, Peers, MagnetUri ^^^ поля "info" НЕТ jac.red отдаёт ещё: info{quality, voices[], sizeName, name, originalname, relased}, ffprobe, languages, CategoryDesc PidTor/Controller.cs:97: string mediainfo = torrent.info.sizeName ?? string.Empty; ^^^^^^^^^^^^^^ info == null -> NullReferenceException -> 500 ``` Локальный JacRed быстрее (0.12s против 0.35s), но **несовместим по формату**. `redapi` обязан оставаться `http://jac.red`. Подробно: [[family/how-to/lampac-torrents]] ## 🔴 `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 -d '{"action":"list"}' -> 200, [] ✅ ТОЛЬКО ТАК POST /ts/torrents с телом [] -> 400 POST /ts/torrents без тела -> 400 POST /ts/torrents с телом {} -> 400 GET /ts/torrents -> 404 (метода нет) GET /ts/torrents/list -> 404 GET /ts/settings -> 403 (нужна авторизация ts:tspass) ``` **400 вместо 404 = маршрут существует.** Это ключевой признак при диагностике. 🔴 **Проверено 2026-09-22:** список раздач отдаёт ТОЛЬКО `-d '{"action":"list"}'` с заголовком `Content-Type: application/json`. Пустое тело, `[]` и `{}` → 400. Верный вызов: ```bash ssh kraken "curl -s -m 15 -X POST http://127.0.0.1:9118/ts/torrents \ -H 'Content-Type: application/json' -d '{\"action\":\"list\"}'" ``` ### Удаление раздачи ```bash ssh kraken "curl -s -X POST http://127.0.0.1:9118/ts/torrents \ -H 'Content-Type: application/json' \ -d '{\"action\":\"rem\",\"hash\":\"\"}'" ``` ⚠️ **Раздачи живут в памяти процесса TorrServer.** `docker restart lampac` их выгружает — тестовая раздача `probe` (Big Buck Bunny), добавленная 2026-09-22, после рестарта исчезла сама, список вернулся пустым. Убирать вручную не потребовалось. ## 🔴 Конфиг: где что лежит ### `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= --scope