146 lines
9.5 KiB
Markdown
146 lines
9.5 KiB
Markdown
---
|
||
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]]'
|
||
- '[[family/how-to/tv-luna-send]]'
|
||
---
|
||
|
||
# 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 отвечает».
|
||
9. 🔴 **Lampa на ТВ ставится по SSH, флешка и Media Station X НЕ нужны.** См. [[personal/tech/lampac-deployment]].
|
||
10. 🔴 **`luna-send` по SSH печатает хелп вместо ответа** — обернуть в `script -q -c "..." /tmp/o.txt`.
|
||
11. Фактический appId Lampa на ТВ — **`com.lampac.tv`** (не `org.lampa.tv` из запроса установки).
|
||
|
||
## Инвентаризация диска и удаление (добавлено 2026-09-22)
|
||
|
||
Полная таблица: [[personal/plans/kraken-media-inventory-cleanup]].
|
||
|
||
12. 🔴 **arr индексирует только 252 ГБ из 1236** (21%). Остальное — ручные закачки,
|
||
невидимые в UI Radarr/Sonarr. «Нет в Radarr» ≠ «нет на диске».
|
||
13. 🔴 **`downloads/complete/sonarr/` — завершённые раздачи, не удалённые после импорта.**
|
||
Байт-в-байт дубли библиотеки = **78,6 ГБ зря**. Самый безопасный кандидат на снос.
|
||
14. 🔴 **Матч с watchlist — только СТРОГОЕ равенство** нормализованных названий, `len >= 4`.
|
||
Подстрочный матч раздувает счёт: 42 позиции / 811 ГБ вместо реальных 29 / 456 ГБ.
|
||
15. 🔴 **В `watchlist.json` нет поля `tmdb_id`** — он в `href`
|
||
(`.../movie/424781`), вынимать регексом `/(\d{2,9})/?$`.
|
||
16. 🔴 **`missing.json` (30 позиций с `❓`) не пересекается с диском** — это рукописные
|
||
заметки в списке. «Недоступно в Lampa» для файлов = **нет в watchlist**, не «нет в TMDB».
|
||
17. Группировка 802 файлов: файлы в корне `movies`/`cartoons`/`documentaries` — каждая своя
|
||
позиция (иначе «Вивариум» 1,46 ГБ склеивается в группу на 135 ГБ).
|
||
18. Удаление только через API arr-стека; `deleteFiles=true` — проверять, что путь внутри
|
||
библиотеки. Дамп API в файл перед операцией.
|
||
|
||
Читать продолжение поверх: [[personal/tech/lampac-deployment]], раздел «Transmission на Кра́кене».
|
||
|
||
19. 🔴 **Матч с watchlist — `name` И `original` + год ±1.** Строгое равенство только по
|
||
русскому `name` пропускает файлы, названные по оригиналу: `Bram.Stoker's Dracula.1992`
|
||
→ «Дракула» (6114), `The.Crow.1994` → «Ворон» (9495), `despicable.me.4.2024` →
|
||
«Гадкий я 4» (519182). 4 промаха = 27,3 ГБ, ошибочно помеченных «не в watchlist».
|
||
Токенный матч тоже гадит: «пингвины. шпион в толпе» → «Шпион» (2015).
|
||
20. 🔴 **`UseDisk: false` у TorrServer — Lampa играет С ТОРРЕНТОВ, не с диска.**
|
||
Проверять `curl -X POST :9118/ts/settings -d '{"action":"get"}'` перед любым
|
||
предупреждением «снесёшь то, что играет». Файлы `media/` в плейбэке Lampa не участвуют.
|
||
21. 🔴 **Transmission RPC на Кра́кене: авторизации нет, но нужен session-id.**
|
||
Первый POST → 409 + `X-Transmission-Session-Id`; забрать и повторить.
|
||
`error: 3` = `"No data found!"` — файлы удалены, раздачи висят (21 шт. / 561,6 ГБ).
|
||
⚠️ `downloadDir` = путь **внутри контейнера** (`/media/...`), не host-путь.
|
||
22. 🔴 **Перед сносом «копия есть на другом хосте» — СЧИТАТЬ, а не `ls`.**
|
||
На TrueNAS `documentaries` = 1 файл, `documentaries-series` = пусто,
|
||
`cartoons-series` = 1 сборник. 307 ГБ доксериалов/документалок Кра́кена уникальны.
|
||
23. ⚠️ **Jellyfin на Кра́кене (`:8096`) может смотреть в `media/`** — проверить библиотеки
|
||
до удаления, rescan после. Это единственная реальная связь `media/` с просмотром.
|
||
|
||
## Установка Lampa на ТВ (сжато)
|
||
|
||
```bash
|
||
# скачать ipk на ТВ
|
||
ssh root@192.168.1.70 'curl -sS -o /tmp/lampa.ipk "http://192.168.1.14:9118/lg.ipk"'
|
||
|
||
# установить (только через com.webos.appInstallService + обёртку script)
|
||
ssh root@192.168.1.70 'rm -f /tmp/i.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/i.txt; cat /tmp/i.txt'
|
||
|
||
# запустить
|
||
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'
|
||
```
|
||
|
||
ТВ: `root@192.168.1.70`, ключ `~/.ssh/konka_webos`, webOS 5.4.2, порты `22`/`3000`/`3001`.
|
||
|
||
## Проверка
|
||
|
||
```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 — дефолт (`UseDisk: false`, 96 МБ RAM). ⚠️ Это и есть причина,
|
||
что Lampa играет с торрентов, а не с диска — менять только осознанно.
|
||
- 🔴 **Удаление медиа на Кра́кене — список УТВЕРЖДЁН** (111 позиций, 828,3 ГБ), ждёт
|
||
ответа по категории C Transmission. Детали: [[personal/plans/kraken-media-inventory-cleanup]].
|
||
- ⚠️ Проверка библиотек Jellyfin на Кра́кене перед удалением — **не сделана**
|
||
(команда ушла в таймаут апрува).
|
||
- ⚠️ Уборка: каталог `/Users/admin/personal/` (артефакт записи по относительному пути) —
|
||
удалить.
|
||
- Шаг 7 — watchlist в UI Lampa: [[personal/plans/lampac-watchlist-plugin]].
|
||
- Секции Watchlist внутри CUB-фида — инжект залит, приёмка в UI не подтверждена.
|
||
|
||
## Реальный скилл (файл)
|
||
|
||
`~/.hermes/hermes-whale/skills/devops/lampac-kraken-deploy/SKILL.md`
|
||
|
||
✅ **Синхронизирован 2026-09-22 (вечер).** Пункты 9–11 (установка Lampa на ТВ по SSH,
|
||
питфолл `luna-send`+`script`, appId `com.lampac.tv`) и новые 12–18 (инвентаризация диска,
|
||
дубли `downloads/complete`, строгий матч с watchlist, `tmdb_id` в `href`) перенесены
|
||
в файл скилла, включая раздел «Pillar: disk inventory & deletion candidates».
|
||
|
||
✅ **Синхронизирован 2026-09-22 (ночь).** Добавлен раздел «Pillar: media inventory,
|
||
Transmission cleanup & deletion» (пункты 19–23): матч по `name`+`original`+год,
|
||
TorrServer `UseDisk: false` (Lampa играет с торрентов), Transmission RPC session-id +
|
||
`error: 3`, cross-host проверка копий счётом, Jellyfin как единственная связь `media/`.
|