Files
obsidian-vault/personal/tech/skill-lampac-kraken-deploy.md
T

146 lines
9.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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/`.