From 6275a70ff420cdd1c68a0b8ab65823891a6e7b02 Mon Sep 17 00:00:00 2001 From: Alexey Martemyanov Date: Tue, 22 Sep 2026 10:42:23 +0600 Subject: [PATCH] [2026-09-22] eagle: personal/plans/lampac-kraken.md --- personal/plans/lampac-kraken.md | 104 ++++++++++++++++++++++++++++++-- 1 file changed, 100 insertions(+), 4 deletions(-) diff --git a/personal/plans/lampac-kraken.md b/personal/plans/lampac-kraken.md index 78d76c84..3e9ce5af 100644 --- a/personal/plans/lampac-kraken.md +++ b/personal/plans/lampac-kraken.md @@ -4,7 +4,7 @@ created: '2026-09-21' updated: '2026-09-22' type: plan namespace: personal -status: proposed +status: in-progress tags: - lampac - torrserver @@ -107,12 +107,22 @@ Host kraken ### 3. Конфиг TorrServer внутри Lampac - лимит кэша (напр. 20 ГБ) — чтобы не сожрал 404 ГБ +🔴 **TorrServer у Lampac ВСТРОЕННЫЙ** (subprocess внутри контейнера, виден в логах как `compilation TorrServer`). +Отдельный контейнер TorrServer **не ставить** — выдуманный шаг, не из плана. +Вопрос Alex: «Если имеет встроенный нахуя внешний?» + ### 4. Первый запуск ``` curl -fsS "http://localhost:9118/version?type=hash" ``` Пусто/ошибка → `docker logs lampac`. +⚠️ **Первый старт долгий.** Контейнер компилирует/грузит ~40 native-модулей +(`compilation LampaWeb`, `DLNA`, `GStreamer`, `Sync`, `TorrServer`, ... затем `loaded module: ...`). +Соединение на `curl` рвётся с `Recv failure: Connection reset by peer`, пока идёт загрузка. +Статус `healthy` при этом уже стоит — **не признак готовности HTTP**. +Не дёргать контейнер, ждать `loaded module:` последнего модуля. + ### 5. Доступ ТВ к Lampac Кра́кен (`192.168.1.14`) и ТВ (`192.168.1.70`) — **в одном сегменте `192.168.1.x`**, межроутерного пути нет. ТВ должен достать `9118` напрямую. @@ -133,6 +143,92 @@ curl -fsS "http://localhost:9118/version?type=hash" - Механизм: плагин Lampa, который ходит к библиотеке как к источнику воспроизведения - Детали механизма — **отдельный план** после приёмки шагов 1–6 +## Журнал сессии 2026-09-22 (вторая часть) + +**Выполнено: шаги 1, 2, 4, 5. Осталось: 3 (лимит кэша) и 6 (ТВ — на Alex).** + +### Результаты + +| Шаг | Статус | +|---|---| +| 1. Каталоги на HDD | ✅ `/srv/...6194539b.../lampac/{config,cache,data}`, `kraken:kraken`, 755 | +| 2. docker-compose.yml | ✅ развёрнут, `docker compose config --quiet` → VALID | +| 3. Лимит кэша TorrServer | ⏳ **единственный незакрытый шаг на стороне сервера** — встроенный TS работает на дефолтах | +| 4. Первый запуск | ✅ `curl /version?type=hash` → `46b29e1fe8fa6021cd83e75c41abffb7` | +| 5. Доступ с ТВ | ✅ `http://192.168.1.14:9118/version?type=hash` отвечает с LAN-IP | +| 6. Lampa на ТВ | ⏳ не подключена — **ждёт Alex** | + +### Факты, добытые по ходу + +1. **`ghcr.io/lampac-nextgen/lampac:latest` содержит `linux/arm64`** → + сборка из исходников не нужна. Риск «ARM64-образа нет» из таблицы рисков — **снят**. + (`docker manifest inspect` с Mac отдаёт `denied` — проверять **из Кра́кена**.) +2. Порт `9118` был свободен. Занятые на Кра́кене: `7878, 8096, 8191, 8989, 9000, 9091, 9696, 51413`. +3. `docker compose` — плагин **v5.1.3**, отдельного `docker-compose` нет. +4. Каталоги на `/srv/...6194539b.../` требуют **`sudo`** (корень диска `root:root`). + У `kraken` есть `sudo` **без пароля**. +5. Порт `9118` слушается на **`0.0.0.0`** ✅ — шаг 5 по этой части пройден. +6. **Lampac отвечает по LAN-IP:** `http://192.168.1.14:9118/version?type=hash` → `46b29e1fe8fa6021cd83e75c41abffb7`. + Инициализация завершается логом **`Configure complete`** — после него HTTP начинает отвечать. +7. Кра́кен имеет два LAN-адреса: `192.168.1.14` и `192.168.1.15`. Mac Alex — `192.168.1.57`. + ТВ `192.168.1.70` — один сегмент, доступ прямой. + +### Ошибки сессии (не повторять) + +1. 🔴 **Придумал шаг «поставить TorrServer отдельным контейнером».** TorrServer у Lampac + **встроенный**. Реакция Alex: «Если имеет встроенный нахуя внешний?» — выдумка сверх плана. +2. 🔴 **Затёр `docker-compose.yml` при правке** — вместо добавления сервиса перезаписал файл + целиком. На Кра́кене рабочий файл цел (правил локальную копию), но правило то же: + **перед правкой читать файл, а не перезаписывать по памяти.** +3. Локальная копия `/Users/admin/lampac-deploy/` — снесена (была 0 байт после неудачной правки). + Рабочий compose живёт только на Кра́кене. + +**Урок:** шаг 3 плана («конфиг TorrServer внутри Lampac») — это **настройка существующего**, +а не установка второго. Читать план буквально. + +### Следующий шаг + +**Шаг 6 — подключение Lampa на ТВ `192.168.1.70`:** +1. Lampa через Media Station X (`.ipk` с флешки на розничных LG не работает) +2. Настройки → TorrServer → «Использовать основную ссылку» → `http://192.168.1.14:9118` +3. Плагин: `http://192.168.1.14:9118/online.js` +4. Буфер плеера: 50–100 МБ +5. Качество по скорости: до 10 Мбит → 720p; 10–25 → 1080p + +Приёмка шага 6 = **играет без дёрганья 5+ минут**, битрейт ≤15 Мбит. + +### Где что лежит (шаги 1–2, финально) + +``` +Кра́кен: /srv/dev-disk-by-uuid-6194539b-03e0-4f33-986b-4da09834e82f/lampac/ + ├── docker-compose.yml # lampac + встроенный TorrServer, порт 9118 + ├── config/ # → /lampac/config + ├── cache/ # → /lampac/cache (кэш TorrServer) + └── data/ # → /lampac/data (БД JacRed) +``` + +Содержимое `docker-compose.yml`: +```yaml +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 +``` + +Управление: `cd /srv/.../lampac && docker compose {up -d,logs -f,restart,down}`. +Правка compose — без `sudo` (каталог `kraken:kraken`), но создание каталогов — через `sudo mkdir`. + ## Журнал сессии 2026-09-22 **Итог: правки плана выполнены, шаги 1–6 НЕ начаты.** @@ -199,9 +295,9 @@ curl -fsS "http://localhost:9118/version?type=hash" | Риск | Митигация | |---|---| | Кэш TorrServer съест диск | bind-mount на 1.8T + лимит кэша | -| ARM64-образ отсутствует | `docker manifest inspect`; иначе сборка из исходников | -| SD-карта кончится | всё пишущее — только на `/srv` | -| ТВ не достанет 9118 | один сегмент `192.168.1.x`; проверить bind на `0.0.0.0` | +| ARM64-образ отсутствует | ✅ **Проверено 2026-09-22: `linux/arm64` есть в манифесте.** Риск снят | +| SD-карта кончится | всё пишущее — только на `/srv` ✅ | +| ТВ не достанет 9118 | ✅ `0.0.0.0:9118`, ответ по `192.168.1.14:9118` проверен | ## Связанные