[2026-09-22] eagle: personal/plans/lampac-kraken.md personal/tech/lampac-deployment.md personal/tech/skill-lampac-kraken-deploy.md
This commit is contained in:
1 parent
6275a70ff4
commit
414b4eeca6
3 files changed
+237
No files matched your search
@@ -301,6 +301,7 @@ services:
|
|||||||
|
|
||||||
## Связанные
|
## Связанные
|
||||||
|
|
||||||
|
- [[personal/tech/lampac-deployment]] — технический справочник: compose, команды, питфоллы, порты
|
||||||
- [[personal/tech/multistream-single-flow-limit]] — исследование, ранжирование путей
|
- [[personal/tech/multistream-single-flow-limit]] — исследование, ранжирование путей
|
||||||
- [[personal/tech/inter-site-throughput-taiga-to-mac]] — замеры полосы и RTT
|
- [[personal/tech/inter-site-throughput-taiga-to-mac]] — замеры полосы и RTT
|
||||||
- [[family/how-to/kraken-network]] — линки ТВ
|
- [[family/how-to/kraken-network]] — линки ТВ
|
||||||
@@ -0,0 +1,175 @@
|
|||||||
|
---
|
||||||
|
title: Lampac — развёртывание и эксплуатация (Кра́кен)
|
||||||
|
created: '2026-09-22'
|
||||||
|
updated: '2026-09-22'
|
||||||
|
type: tech
|
||||||
|
namespace: personal
|
||||||
|
tags:
|
||||||
|
- lampac
|
||||||
|
- torrserver
|
||||||
|
- docker
|
||||||
|
- kraken
|
||||||
|
- streaming
|
||||||
|
- webos
|
||||||
|
related:
|
||||||
|
- '[[personal/plans/lampac-kraken]]'
|
||||||
|
- '[[personal/tech/multistream-single-flow-limit]]'
|
||||||
|
- '[[family/how-to/kraken-network]]'
|
||||||
|
---
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
```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
|
||||||
|
```
|
||||||
|
|
||||||
|
⚠️ В контейнере рабочий каталог `/lampac`, часть файлов читается **из корня**, не из `config/`.
|
||||||
|
|
||||||
|
## Управление
|
||||||
|
|
||||||
|
```bash
|
||||||
|
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 без пароля.
|
||||||
|
|
||||||
|
## Проверка работоспособности
|
||||||
|
|
||||||
|
```bash
|
||||||
|
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` **из Кра́кена**:
|
||||||
|
```bash
|
||||||
|
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 (ТВ)
|
||||||
|
|
||||||
|
- Плагин: `http://192.168.1.14:9118/online.js`
|
||||||
|
- TorrServer в Lampa: Настройки → TorrServer → «Использовать основную ссылку» → `http://192.168.1.14:9118`
|
||||||
|
- Буфер плеера: 50–100 МБ
|
||||||
|
- UE на LG: `.ipk` с флешки на розничных телевизорах **не работает** → ставить через **Media Station X**
|
||||||
|
- `/lg.ipk` отдаёт сам Lampac
|
||||||
|
|
||||||
|
## Откат
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /srv/.../lampac && docker compose down
|
||||||
|
sudo rm -rf /srv/dev-disk-by-uuid-6194539b-03e0-4f33-986b-4da09834e82f/lampac
|
||||||
|
```
|
||||||
|
|
||||||
|
Lampac изолирован — остальной стек Кра́кена не затрагивается.
|
||||||
|
|
||||||
|
## Что осталось
|
||||||
|
|
||||||
|
1. **Лимит кэша TorrServer** — сейчас дефолт. Задать ~20 ГБ, чтобы не сожрать 396 ГБ свободных.
|
||||||
|
2. **Подключение Lampa на ТВ** — шаг 6 плана, на стороне Alex.
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
---
|
||||||
|
title: Skill — lampac-kraken-deploy
|
||||||
|
created: '2026-09-22'
|
||||||
|
updated: '2026-09-22'
|
||||||
|
type: tech
|
||||||
|
namespace: personal
|
||||||
|
tags:
|
||||||
|
- skill
|
||||||
|
- lampac
|
||||||
|
- docker
|
||||||
|
- kraken
|
||||||
|
- devops
|
||||||
|
related:
|
||||||
|
- '[[personal/tech/lampac-deployment]]'
|
||||||
|
- '[[personal/plans/lampac-kraken]]'
|
||||||
|
---
|
||||||
|
|
||||||
|
# Skill: `lampac-kraken-deploy`
|
||||||
|
|
||||||
|
> Зеркало скилла `devops/lampac-kraken-deploy`. Файл скилла:
|
||||||
|
> `~/.hermes/hermes-whale/skills/devops/lampac-kraken-deploy/SKILL.md`
|
||||||
|
|
||||||
|
## Когда загружать
|
||||||
|
|
||||||
|
- Деплой/рестарт/отладка Lampac на Кра́кене
|
||||||
|
- Свежий контейнер `healthy`, но `curl :9118` → `Connection reset by peer`
|
||||||
|
- Подключение Lampa на LG ТВ
|
||||||
|
- Вопрос «нужен ли отдельный контейнер TorrServer»
|
||||||
|
|
||||||
|
Полная техническая справка: [[personal/tech/lampac-deployment]].
|
||||||
|
|
||||||
|
## Ключевое из скилла
|
||||||
|
|
||||||
|
1. **Хост — Кра́кен** (`ssh kraken`), aarch64 Debian 12. Не TrueNAS.
|
||||||
|
2. Образ содержит `linux/arm64` — сборка из исходников не нужна.
|
||||||
|
3. 🔴 **TorrServer встроенный** — второй контейнер не ставить.
|
||||||
|
4. Каталоги в корне диска — только через `sudo mkdir` (корень `root:root`, sudo без пароля).
|
||||||
|
5. 🔴 **Первый старт ~4 минуты.** `Connection reset by peer` — норма, ждать `Configure complete`.
|
||||||
|
`healthy` ≠ готовность HTTP.
|
||||||
|
6. `docker manifest inspect` с Mac → `denied`; проверять **из Кра́кена**.
|
||||||
|
7. `docker compose` только как плагин (v5.1.3), не `docker-compose`.
|
||||||
|
8. Приёмка = играет 5+ минут на ТВ, а не «API отвечает».
|
||||||
|
|
||||||
|
## Проверка
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ssh kraken 'docker ps --filter name=lampac --format "{{.Names}} {{.Status}} {{.Ports}}"'
|
||||||
|
ssh kraken 'curl -sS "http://localhost:9118/version?type=hash"'
|
||||||
|
ssh kraken 'curl -sS "http://192.168.1.14:9118/version?type=hash"'
|
||||||
|
```
|
||||||
|
|
||||||
|
## Откат
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ssh kraken 'cd /srv/.../lampac && docker compose down'
|
||||||
|
ssh kraken 'sudo rm -rf /srv/dev-disk-by-uuid-6194539b-03e0-4f33-986b-4da09834e82f/lampac'
|
||||||
|
```
|
||||||
|
|
||||||
|
## Не закрыто
|
||||||
|
|
||||||
|
- Лимит кэша TorrServer — дефолт. Рекомендуется ~20 ГБ.
|
||||||
Reference in new issue
Block a user