13 KiB
title, created, updated, type, namespace, tags, related
| title | created | updated | type | namespace | tags | related | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Lampac — развёртывание и эксплуатация (Кра́кен) | 2026-09-22 | 2026-09-22 | tech | personal |
|
|
Lampac — развёртывание и эксплуатация (Кра́кен)
Технический справочник. Развёрнуто 2026-09-22. План и статус шагов — personal/plans/lampac-kraken.
Что это
lampac-nextgen/lampac (MIT, .NET 10) — серверный бэкенд для Lampa. Один контейнер, порт 9118.
Внутри (всё в одном образе):
- TorrServer — subprocess, кэш раздач
- JacRed — Jackett-совместимый индексатор
- LampaWeb — веб-морда
- TmdbProxy, DLNA, Sync
🔴 TorrServer встроенный. Отдельный контейнер не нужен. Проверено 2026-09-22:
в логах первого старта видно compilation TorrServer. Внешний TS — лишняя сущность.
Расположение на Кра́кене
/srv/dev-disk-by-uuid-6194539b-03e0-4f33-986b-4da09834e82f/lampac/
├── docker-compose.yml
├── config/ → /lampac/config
├── cache/ → /lampac/cache (кэш TorrServer — только сюда)
└── data/ → /lampac/data (БД JacRed)
Владелец kraken:kraken, права 755.
⚠️ Всё пишущее — на data-диск (1.8T). НЕ на SD (/, 14G, 8.6G свободно).
docker-compose.yml
services:
lampac:
image: ghcr.io/lampac-nextgen/lampac:latest
container_name: lampac
platform: linux/arm64
restart: unless-stopped
ports:
- "9118:9118"
environment:
- TZ=Asia/Bishkek
- LANG=ru_RU.UTF-8
volumes:
- ./config:/lampac/config
- ./cache:/lampac/cache
- ./data:/lampac/data
⚠️ В контейнере рабочий каталог /lampac, часть файлов читается из корня, не из config/.
Управление
ssh kraken
cd /srv/dev-disk-by-uuid-6194539b-03e0-4f33-986b-4da09834e82f/lampac
docker compose up -d
docker compose logs -f
docker compose restart
docker compose down
Правка docker-compose.yml — без sudo (каталог kraken:kraken).
Создание новых каталогов в корне диска — через sudo (корень root:root). У kraken sudo без пароля.
Проверка работоспособности
curl -sS --max-time 20 "http://localhost:9118/version?type=hash"
# → 46b29e1fe8fa6021cd83e75c41abffb7 (для текущего :latest)
По сети: http://192.168.1.14:9118/version?type=hash — то же значение.
⚠️ Питфоллы
1. Первый старт долгий (~4 минуты)
Контейнер компилирует и грузит ~40 native-модулей:
compilation LampaWeb, DLNA, GStreamer, Sync, TorrServer, ... затем loaded module: <имя>.
Пока идёт загрузка, HTTP рвёт соединение:
curl: (56) Recv failure: Connection reset by peer
🔴 health: healthy не означает готовность HTTP. Статус встаёт раньше.
Признак готовности — лог Configure complete (идёт после последнего loaded module:).
Не перезапускать контейнер, не считать это поломкой. Просто ждать.
2. docker manifest inspect с Mac отдаёт denied
GHCR требует авторизацию при обращении с Mac. Проверять наличие linux/arm64 из Кра́кена:
ssh kraken 'docker manifest inspect ghcr.io/lampac-nextgen/lampac:latest' | jq -r '.manifests[].platform | .os + "/" + .architecture'
# linux/amd64
# linux/arm64 ← есть, сборка из исходников не нужна
# unknown/unknown
# unknown/unknown
3. Шаблон логов первого старта
compilation Alloha
compilation LampaWeb
...
loaded module: Vibix
loaded module: TorrServer
...
Configure complete ← HTTP начинает отвечать
Сеть
| Хост | IP |
|---|---|
| Кра́кен (eth0) | 192.168.1.14 (второй адрес 192.168.1.15) |
| ТВ LG | 192.168.1.70 |
| Mac Alex | 192.168.1.57 |
Один сегмент 192.168.1.x — туннели и проброс портов не нужны.
Подробнее: family/how-to/kraken-network.
Занятые порты на Кра́кене (2026-09-22)
7878 Radarr · 8096 Jellyfin · 8191 FlareSolverr · 8989 Sonarr · 9000 Portainer ·
9091 Transmission · 9696 Prowlarr · 51413 Transmission (UDP) · 9118 Lampac
Выбор порта — docker compose config + sudo ss -tlnp перед деплоем.
Интеграция с Lampa (ТВ) — ✅ СДЕЛАНО 2026-09-22
- Плагин:
http://192.168.1.14:9118/online.js - TorrServer в Lampa: Настройки → TorrServer → «Использовать основную ссылку» →
http://192.168.1.14:9118 - Буфер плеера: 50–100 МБ
/lg.ipkотдаёт сам Lampac (проверено: HTTP 200)
Установка клиента на LG webOS — по SSH, без флешки
🔴 Media Station X и .ipk с флешки — НЕ нужны. ТВ имеет SSH-доступ (root), установка делается с Mac.
ТВ: root@192.168.1.70, ключ ~/.ssh/konka_webos, webOS 5.4.2 (ядро 4.4.84, image starfish-dvb-secured, build 2602, webos_build_datetime 20230405092501).
Порты открыты: 22 (SSH), 3000/3001 (Luna). Из кастомного уже стоит: org.webosbrew.hbchannel 0.7.2, org.webosbrew.inputhook, me.wouterdek.magic4pc.
Порядок установки:
# 1. Скачать .ipk от Lampac прямо на ТВ
ssh root@192.168.1.70 'curl -sS --max-time 60 -o /tmp/lampa.ipk "http://192.168.1.14:9118/lg.ipk"'
# → 6 896 874 байт, формат ar (!<arch>), НЕ tar/gzip
# 2. Установить (обязательна обёртка script — см. питфолл ниже)
ssh root@192.168.1.70 'rm -f /tmp/inst.txt; script -q -c \
"luna-send -n 1 -f luna://com.webos.appInstallService/dev/install \
{\"id\":\"org.lampa.tv\",\"ipkUrl\":\"/tmp/lampa.ipk\",\"subscribe\":true}" \
/tmp/inst.txt >/dev/null 2>&1; cat /tmp/inst.txt'
# → {"subscribed":true,"returnValue":true}
# 3. Проверить, что установилось
ssh root@192.168.1.70 'ls /media/developer/apps/usr/palm/applications/'
# → com.lampac.tv ← имя приложения Lampa, НЕ org.lampa.tv
# 4. Запустить
ssh root@192.168.1.70 'rm -f /tmp/l.txt; script -q -c \
"luna-send -n 1 -f luna://com.webos.applicationManager/launch {\"id\":\"com.lampac.tv\"}" /tmp/l.txt'
# 5. Убедиться, что открылось
ssh root@192.168.1.70 'rm -f /tmp/f.txt; script -q -c \
"luna-send -n 1 -f luna://com.webos.applicationManager/getForegroundAppInfo {}" /tmp/f.txt; grep appId /tmp/f.txt'
# → "appId": "com.lampac.tv"
Фактический ID приложения — com.lampac.tv (vendor Lampac, version 1.0.0, type web).
⚠️ В luna-send ... dev/install поле "id" — произвольная метка; реальный appId берётся из appinfo.json внутри ipk. Ошибиться здесь не страшно, но искать приложение надо по фактическому ID.
🔴 Питфолл: luna-send по SSH молчит
Симптом: любой вызов luna-send через ssh root@TV "luna-send ..." печатает хелп-экран, а не результат. С -t (PTY) — тоже. С -a '{"json"}' — тоже.
Причина: luna-send детектирует TTY и отказывается писать в pipe.
Решение: обернуть в script(1), который аллоцирует псевдо-TTY, и прочитать временный файл:
ssh root@TV 'script -q -c "luna-send -n 1 -f luna://service/method {json}" /tmp/o.txt; cat /tmp/o.txt'
Готовый враппер: ~/Automation/tv-luna-send.sh (TV_HOST переопределяет таргет).
Доки: family/how-to/tv-luna-send, family/how-to/htpc-webos-luna.
⚠️ Установка идёт через com.webos.appInstallService/dev/install, а НЕ через
org.webosbrew.hbchannel.service/install (последний в образе есть, но luna-send его не дёрнул чисто).
⚠️ luna-send -i (subscribe, бесконечный) через враппер не работает — нужен polling.
Первый просмотр — проверено 2026-09-22
Фильм запущен, не дёргается. Alex: «Вроде стабильно, не делается».
| Факт | Значение |
|---|---|
| Соединения ТВ → Lampac | 3 × ESTABLISHED 192.168.1.70 → 192.168.1.14:9118 |
| Нагрузка контейнера | lampac CPU 57%, NET 168 МБ ↓ / 132 МБ ↑ |
| Битрейт на eth0 | ~3–4 Мбит/с |
⚠️ Почему всего 3–4 Мбит, а не 15: выбран источник «Смотреть онлайн (lampac 1.18…)» — встроенный
плагин online.js, HLS-поток. Lampac отдаёт ссылку, ТВ тянет видео напрямую из CDN (в /proc/net/tcp
ТВ видны внешние адреса на :443/:8443). Тяжёлый remux с торрента не участвует — поэтому и не дёргается.
🔴 Следствие: этот просмотр не проверяет, держит ли сеть remux 60–80 Мбит. Тест функциональности, не полосы. Полосу проверять на торрент-источнике.
Как убрать выбор источника: Lampa → Настройки → Плагины → выключить online.js. Останутся только торренты.
Внутреннее устройство Lampac (разведка 2026-09-22)
33 модуля в образе (/lampac/module/):
AdminPanel, Adult, Catalog, Community, DLNA, DatabaseEditor, ExternalBind,
ForkPlayerXML, GStreamer, JacRed, Kit, LampaWeb, LampacApk, LogUserRequest-Lite,
MsxNative, Music, NextHUB, Online, OnlineAnime, OnlineENG, OnlineGEO, OnlinePaid,
OnlineRUS, OnlineUKR, PidTor, Potok, Proxy, SISI, Sync, Telemetry (+ остальные).
Конфиг — current.conf внутри образа (/lampac/current.conf, 157 КБ, генерируется из base.conf +
init.conf). Рабочий каталог /lampac, файлы читаются из корня, не из config/.
Выключение модуля — двумя механизмами:
SkipModulesвinit.conf/current.confmanifest.jsonв каталоге модуля ("enable": true|false)
⚠️ init.conf НЕ смонтирован в нашем compose — файл живёт внутри образа. Любая правка через
docker exec потеряется при пересоздании контейнера. Для постоянных правок нужен volume или AdminPanel.
Полезные роуты (проверены curl'ом)
| Роут | Код | Что |
|---|---|---|
/ |
200 | LampaWeb (UI, <base href="/lampa-main/">) |
/online.js |
200 | плагин VOD — 70+ онлайн-источников |
/lg.ipk |
200 | установщик клиента для LG (6.9 МБ) |
/sisi |
200 | JSON-список платформ 18+ |
/dlna |
200 | DLNA-модуль |
/ts/echo |
200 | TorrServer (отдаёт версию, напр. MatriX.135) |
/catalog.js |
404 | модуль Catalog выключен |
/cub, /api, /lampac.js |
404/500 | — |
Что осталось
- Лимит кэша TorrServer — сейчас дефолт. Задать ~20 ГБ, чтобы не сожрать 396 ГБ свободных.
init.confбез volume — правки вdocker execне переживают пересоздание контейнера.- Шаг 7 плана — watchlist в UI Lampa — план: personal/plans/lampac-watchlist-plugin.
- Проверка полосы на торрент-источнике (remux 60–80 Мбит) — не сделана.