diff --git a/personal/plans/lampac-kraken.md b/personal/plans/lampac-kraken.md new file mode 100644 index 00000000..9a7b299f --- /dev/null +++ b/personal/plans/lampac-kraken.md @@ -0,0 +1,165 @@ +--- +title: Lampac на Кра́кене — развёртывание +created: '2026-09-21' +updated: '2026-09-22' +type: plan +namespace: personal +status: proposed +tags: + - lampac + - torrserver + - jellyfin + - webos + - streaming + - kraken +related: + - '[[personal/tech/multistream-single-flow-limit]]' + - '[[personal/tech/inter-site-throughput-taiga-to-mac]]' + - '[[personal/tech/xray-reverse-tunnel-kraken-truenas]]' + - '[[family/how-to/kraken-network]]' +--- + +# Lampac на Кра́кене — развёртывание + +> План составлен 2026-09-21, записан в vault 2026-09-22. +> В плане учтены прямые правки Alex из сессии обсуждения. + +## 🔴 Блокер №1 — Lampac НЕ смотрит библиотеку TrueNAS + +**Это главный вопрос, и он не решён.** Lampac / TorrServer отдают **публичные раздачи** из трекеров. +Фильмы, лежащие на TrueNAS (remux'ы, библиотека Radarr/Jellyfin), Lampac **не показывает** — +это другой контент-путь. + +| Что нужно | Кто это решает | +|---|---| +| «Просто посмотреть кино» | ✅ Lampac / TorrServer | +| **«Смотреть СВОЮ библиотеку с TrueNAS»** | ❌ Lampac **не решает** → нужен prefetch-proxy | + +**Значит:** прежде чем что-то разворачивать — решить, какая из двух задач настоящая. +Если вторая (своя библиотека) — **план Lampac не тот план**, идти в prefetch-proxy (см. раздел «Альтернатива»). + +## ❌ Отвергнутые варианты (не возвращаться) + +| Вариант | Почему нет | +|---|---| +| Lampac/бэкенд **на Mac** | Дословно Alex: *«нахуя нам блядь на маке что-то, на кракене блядь бэкенд»*. Бэкенд — только на Кра́кене | +| 8 xray-туннелей + mux | Одно логическое окно, head-of-line blocking. Путь один (ТТК → Ростелеком) | +| MPTCP по одному пути | То же — нужны **разные** физические пути | +| **«Решить транскодом»** | Транскод — **не ответ**. Он лишь облегчает поток. Корень — single-flow TCP при RTT 104 мс | + +## Замеры, на которых стоит план + +| Режим | Результат | +|---|---| +| Mac → TrueNAS, 1 SCP-поток | **~28 Мбит/с** | +| Mac → TrueNAS, 4 параллельных | ~51 Мбит/с (×1.8) | +| Speedtest (8 сессий) | до 120 Мбит/с | + +Рост ×1.8 при 4 потоках доказывает: лимит не в полосе транзита, а в **одном TCP-потоке** при RTT ~104 мс. +Jellyfin отдаёт видео **одним потоком** → упирается в 28–45 Мбит, а remux'ы требуют 60–80. + +## Что разворачиваем + +`lampac-nextgen/lampac` (MIT, .NET 10), порт **9118**. +Внутри: TorrServer (subprocess) + JacRed (Jackett-совместимый индексатор) + GStreamer HLS/fMP4 транскод + +DLNA + TmdbProxy + LampaWeb (отдаёт `.ipk` для LG). + +**Плагин для Lampa:** `http://:9118/online.js` ← то, что планировалось +**UI для LG:** `/lg.ipk` отдаёт сам Lampac. + +## Целевой хост + +**Кра́кен** — aarch64, Debian 12, Docker 29.4.3, 25 контейнеров. +`/` (SD) — 14G всего, 8.4G свободно. `/srv/...` — 1.8T, **404 ГБ свободно**. + +## Шаги + +### 1. Каталоги (на data-диске, НЕ на SD) +``` +/srv/dev-disk-by-uuid-6194539b-.../lampac/ + ├── docker-compose.yml + ├── config/ + ├── cache/ # кэш TorrServer — только сюда + └── data/ # БД JacRed +``` + +### 2. docker-compose.yml +- образ `ghcr.io/lampac-nextgen/lampac:latest`, `platform: linux/arm64` +- порт `9118:9118`, `restart: unless-stopped` +- bind-mount `cache/` → каталог кэша TorrServer (иначе образ забьёт SD-карту) +- bind-mount `config/` → конфиг +- ⚠️ в контейнере рабочий каталог `/lampac`, файлы читаются **из корня**, не из `config/` + +### 3. Конфиг TorrServer внутри Lampac +- лимит кэша (напр. 20 ГБ) — чтобы не сожрал 404 ГБ +- `--gst` GStreamer HLS/fMP4 транскод +- целевой битрейт 10–15 Мбит, H.264/AAC, 1080p + +### 4. Первый запуск +``` +curl -fsS "http://localhost:9118/version?type=hash" +``` +Пусто/ошибка → `docker logs lampac`. + +### 5. Доступ ТВ к Lampac +Кра́кен в 192.168.2.x, ТВ в 192.168.1.x — межроутерный путь. Решается на месте (DNAT либо reverse-туннель). +Проверять заранее в плане не требуется. + +### 6. Подключение Lampa на ТВ +- Lampa через **Media Station X** (`.ipk` с флешки на розничных LG не работает) +- Настройки → TorrServer → «Использовать основную ссылку» → `:9118` +- плагин: `http://:9118/online.js` +- буфер плеера: **50–100 МБ** +- качество по скорости: до 10 Мбит → 720p; 10–25 → 1080p + +## Проверка (приёмка) + +1. `docker ps` — контейнер `Up` +2. `curl /version?type=hash` — версия отдаётся +3. **С ТВ открыть Lampa → фильм → играет без дёрганья 5+ минут** +4. Битрейт потока на ТВ **≤15 Мбит** + +**Приёмка = видно в UI и смотрится**, не «API отвечает». + +## Откат + +- `docker compose down` + удалить каталог `/srv/.../lampac/` +- Стек Кра́кена не трогаем — Lampac изолирован + +## Риски + +| Риск | Митигация | +|---|---| +| Кэш TorrServer съест диск | bind-mount на 1.8T + лимит кэша | +| ARM64-образ отсутствует | `docker manifest inspect`; иначе сборка из исходников | +| SD-карта кончится | всё пишущее — только на `/srv` | +| Транскод не тянет CPU Кра́кена | снизить до 720p/8 Мбит | + +## Альтернатива, если нужна СВОЯ библиотека: prefetch-proxy + +Механизм: прокси **на стороне клиента** делает **N параллельных Range-запросов** к TrueNAS → +N независимых TCP-окон → до 120 Мбит (не один поток). + +``` +❌ 8 туннелей + mux → одно логическое окно +✅ N Range-запросов → N независимых окон +``` + +Готовые инструменты: `aria3` (PyPI), `node-HLS-Proxy` (warren-bank), `nginx proxy_cache + slice`, +`JellyfinCache` (ArnyminerZ), `jspeedstreamer`. + +⚠️ Прокси **обязан** стоять на стороне клиента (Бишкек), не на TrueNAS — иначе запросы всё равно +идут через узкий канал по отдельности. + +## Что дальше + +1. Ответить на блокер: **«просто кино» или «своя библиотека»** +2. Если кино → пункты 1–6 выше +3. Если библиотека → писать отдельный план на prefetch-proxy (этот не подходит) + +## Связанные + +- [[personal/tech/multistream-single-flow-limit]] — исследование, ранжирование путей +- [[personal/tech/inter-site-throughput-taiga-to-mac]] — замеры полосы и RTT +- [[personal/tech/xray-reverse-tunnel-kraken-truenas]] — reverse-туннель +- [[family/how-to/kraken-network]] — линки ТВ