[2026-09-22] eagle: family/how-to/tv-lampac-plugin.md personal/plans/lampac-kraken.md personal/plans/lampac-watchlist-plugin.md personal/tech/lampac-deployment.md
This commit is contained in:
1 parent
3e4ebf70aa
commit
0edc4fe42f
4 files changed
+443
-86
No files matched your search
@@ -40,17 +40,22 @@ related:
|
||||
|
||||
```
|
||||
/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)
|
||||
├── docker-compose.yml (бэкапы .bak-*, .bak2-*)
|
||||
├── config/ → /lampac/config
|
||||
├── cache/ → /lampac/cache (кэш TorrServer — только сюда)
|
||||
├── data/ → /lampac/data (БД JacRed)
|
||||
├── config-module/init.conf → /lampac/init.conf:ro (наш конфиг)
|
||||
├── catalog/sites/ → /lampac/module/Catalog/sites
|
||||
├── catalog/override/ → /lampac/module/Catalog/override
|
||||
├── wwwroot/ → /lampac/wwwroot (JSON-каталог watchlist)
|
||||
└── scripts/gen_watchlist.py (генератор .md → JSON)
|
||||
```
|
||||
|
||||
Владелец `kraken:kraken`, права `755`.
|
||||
|
||||
⚠️ Всё пишущее — на data-диск (1.8T). **НЕ на SD** (`/`, 14G, 8.6G свободно).
|
||||
|
||||
## docker-compose.yml
|
||||
## docker-compose.yml (актуальный, 2026-09-22)
|
||||
|
||||
```yaml
|
||||
services:
|
||||
@@ -68,10 +73,36 @@ services:
|
||||
- ./config:/lampac/config
|
||||
- ./cache:/lampac/cache
|
||||
- ./data:/lampac/data
|
||||
# Наш конфиг: перекрывает base.conf из образа. Включает модуль Catalog.
|
||||
# Без монтирования правки теряются при пересоздании контейнера.
|
||||
- ./config-module/init.conf:/lampac/init.conf:ro
|
||||
# Каталоги Catalog
|
||||
- ./catalog/sites:/lampac/module/Catalog/sites
|
||||
- ./catalog/override:/lampac/module/Catalog/override
|
||||
# Статика: JSON-каталог watchlist (Lampac отдаёт wwwroot по HTTP сам)
|
||||
- ./wwwroot:/lampac/wwwroot
|
||||
```
|
||||
|
||||
⚠️ В контейнере рабочий каталог `/lampac`, часть файлов читается **из корня**, не из `config/`.
|
||||
|
||||
### Минимальный `config-module/init.conf`
|
||||
|
||||
Перекрывает `base.conf`, поэтому список `SkipModules` нужно **повторить целиком**, без `Catalog`:
|
||||
|
||||
```json
|
||||
{
|
||||
"BaseModule": {
|
||||
"SkipModules": [
|
||||
"Tracks", "Transcoding", "WebLog", "CacheMedia", "ForkPlayerXML",
|
||||
"MsxNative", "Potok", "TelegramAuth", "TelegramAuthBot"
|
||||
]
|
||||
},
|
||||
"LampaWeb": { "initPlugins": { "catalog": true } }
|
||||
}
|
||||
```
|
||||
|
||||
После любой правки — `docker compose up -d` (пересоздаст контейнер) или `docker restart lampac`.
|
||||
|
||||
## Управление
|
||||
|
||||
```bash
|
||||
@@ -150,7 +181,24 @@ Configure complete ← HTTP начинает отвечать
|
||||
## Модуль Catalog — каталоги из YAML
|
||||
|
||||
Модуль **`Catalog`** (в образе, по умолчанию **выключен**) отдаёт свои каталоги как плагин Lampa.
|
||||
Разобрано по коду 2026-09-22: `/lampac/module/Catalog/`.
|
||||
Разобрано по коду и **включено в работу 2026-09-22** — см. [[personal/plans/lampac-watchlist-plugin]].
|
||||
|
||||
### Наш каталог «Мой список»
|
||||
|
||||
Отдаёт `movies-watchlist.md` как каталог в Lampa. Файлы:
|
||||
|
||||
| Путь на HDD (`.../lampac/`) | Роль |
|
||||
|---|---|
|
||||
| `config-module/init.conf` | включает Catalog (монтируется в `/lampac/init.conf:ro`) |
|
||||
| `catalog/sites/watchlist.yaml` | описание каталога для Catalog |
|
||||
| `catalog/override/` | переопределения (пусто) |
|
||||
| `wwwroot/watchlist.json` + `watchlist-<code>.json` | JSON-данные (Lampac отдаёт по HTTP) |
|
||||
| `scripts/gen_watchlist.py` | генератор: .md → JSON |
|
||||
| `~/scripts/watchlist-catalog.sh` | обёртка + перезапуск (сброс кэша), cron 02:30 |
|
||||
|
||||
Плагин на ТВ: `http://192.168.1.14:9118/catalog.js` → источник «Мой список».
|
||||
|
||||
### Общее про модуль
|
||||
|
||||
| Что | Как |
|
||||
|---|---|
|
||||
@@ -163,18 +211,23 @@ Configure complete ← HTTP начинает отвечать
|
||||
**Обязателен HTTP:** `if (!url.StartsWith("http")) url = $"{init.host}/{url}"` — локальные файлы не читаются.
|
||||
|
||||
**Два режима:** `jsonPath: true` → `JToken.Parse` (JSON), иначе HtmlAgilityPack (HTML).
|
||||
Любой свой JSON-эндпоинт годится как `host` — это рычаг для watchlist-каталога.
|
||||
|
||||
**Выключен в двух местах** `current.conf`:
|
||||
🔴 **Питфолл: элемент с пустым `href` ВЫБРАСЫВАЕТСЯ** —
|
||||
`if (!IsNullOrWhiteSpace(name) && !IsNullOrWhiteSpace(href))` (ListController.cs).
|
||||
Нужен непустой `href` у каждого элемента.
|
||||
|
||||
🔴 **Питфолл: `{cat}` НЕ подставляется в `nodes`** — JSONPath статичен.
|
||||
Разные категории = разные JSON-файлы.
|
||||
|
||||
🔴 **Питфолл: кэш без версии данных** — ключ `catalog:{plugin}:{search}:{sort}:{cat}:{page}`.
|
||||
После правки данных нужен `docker restart lampac`.
|
||||
|
||||
**Выключен в двух местах** `base.conf`/`current.conf`:
|
||||
```jsonc
|
||||
"SkipModules": [ "Catalog", "Tracks", ... ] // ~строка 277
|
||||
"plugins": { "catalog": false } // ~строка 1653
|
||||
"BaseModule": { "SkipModules": [ "Catalog", ... ] }
|
||||
"LampaWeb": { "initPlugins": { "catalog": false } }
|
||||
```
|
||||
|
||||
🔴 **`init.conf` НЕ смонтирован** в нашем compose — файл из образа. Правки через `docker exec`
|
||||
**теряются при пересоздании контейнера**. Нужен volume `./config/init.conf:/lampac/init.conf:ro`
|
||||
(или правка через AdminPanel `/adminpanel`).
|
||||
|
||||
Синапс модулей (всего 33): `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,
|
||||
@@ -286,8 +339,12 @@ ssh root@TV 'script -q -c "luna-send -n 1 -f luna://service/method {json}" /tmp/
|
||||
1. **`SkipModules`** в `init.conf` / `current.conf`
|
||||
2. **`manifest.json`** в каталоге модуля (`"enable": true|false`)
|
||||
|
||||
⚠️ **`init.conf` НЕ смонтирован** в нашем compose — файл живёт внутри образа. Любая правка через
|
||||
`docker exec` **потеряется при пересоздании контейнера**. Для постоянных правок нужен volume или AdminPanel.
|
||||
⚠️ **`init.conf` НЕ в образе по умолчанию** — его читают из `/lampac/init.conf`, файл перекрывает
|
||||
`base.conf`. Правка через `docker exec` **теряется при пересоздании контейнера**, поэтому
|
||||
смонтирован с HDD (`./config-module/init.conf:/lampac/init.conf:ro`). См. раздел docker-compose выше.
|
||||
|
||||
⚠️ `current.conf` в образе (157 КБ) — **сгенерированный** результат (`guid`, `listen`, полный конфиг).
|
||||
Это **не** входной файл, править его бессмысленно.
|
||||
|
||||
### Полезные роуты (проверены curl'ом)
|
||||
|
||||
@@ -299,12 +356,20 @@ ssh root@TV 'script -q -c "luna-send -n 1 -f luna://service/method {json}" /tmp/
|
||||
| `/sisi` | 200 | JSON-список платформ 18+ |
|
||||
| `/dlna` | 200 | DLNA-модуль |
|
||||
| `/ts/echo` | 200 | TorrServer (отдаёт версию, напр. `MatriX.135`) |
|
||||
| `/catalog.js` | **404** | модуль Catalog выключен |
|
||||
| `/catalog.js` | **200** | плагин каталогов (включён 2026-09-22) — см. раздел Catalog |
|
||||
| `/catalog` | **200** | JSON каналов каталогов |
|
||||
| `/watchlist.json`, `/watchlist-<code>.json` | **200** | наш JSON-каталог watchlist |
|
||||
| `/cub`, `/api`, `/lampac.js` | 404/500 | — |
|
||||
|
||||
⚠️ `wwwroot` отдаётся статикой: **любой** файл, положенный туда, доступен по HTTP
|
||||
от корня (`http://<host>:9118/<файл>`). Проверено записью пробного файла.
|
||||
|
||||
## Что осталось
|
||||
|
||||
1. **Лимит кэша TorrServer** — сейчас дефолт. Задать ~20 ГБ, чтобы не сожрать 396 ГБ свободных.
|
||||
2. **`init.conf` без volume** — правки в `docker exec` не переживают пересоздание контейнера.
|
||||
3. **Шаг 7 плана — watchlist в UI Lampa** — план: [[personal/plans/lampac-watchlist-plugin]].
|
||||
4. **Проверка полосы на торрент-источнике** (remux 60–80 Мбит) — не сделана.
|
||||
Единственный незакрытый шаг базового плана. Не критично — диск 396 ГБ.
|
||||
2. **Шаг 7 плана — watchlist в UI Lampa** — ✅ **серверная часть сделана** 2026-09-22,
|
||||
см. [[personal/plans/lampac-watchlist-plugin]]. Осталось Alex добавить плагин на ТВ пультом.
|
||||
3. **Проверка полосы на торрент-источнике** (remux 60–80 Мбит) — не сделана.
|
||||
Первый просмотр шёл через онлайн-источник (HLS ~3–4 Мбит), полосу не проверял.
|
||||
4. **Постеры/карточка в каталоге** — не сделаны, `image` пустой.
|
||||
Reference in new issue
Block a user