16 KiB
title, created, updated, type, namespace, tags, related
| title | created | updated | type | namespace | tags | related | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Skill — lampac-kraken-deploy | 2026-09-22 | 2026-09-22 | tech | personal |
|
|
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.
Ключевое из скилла
- Хост — Кра́кен (
ssh kraken), aarch64 Debian 12. Не TrueNAS. - Образ содержит
linux/arm64— сборка из исходников не нужна. - 🔴 TorrServer встроенный — второй контейнер не ставить.
- Каталоги в корне диска — только через
sudo mkdir(кореньroot:root, sudo без пароля). - 🔴 Первый старт ~4 минуты.
Connection reset by peer— норма, ждатьConfigure complete.healthy≠ готовность HTTP. docker manifest inspectс Mac →denied; проверять из Кра́кена.docker composeтолько как плагин (v5.1.3), неdocker-compose.- Приёмка = играет 5+ минут на ТВ, а не «API отвечает».
- 🔴 Lampa на ТВ ставится по SSH, флешка и Media Station X НЕ нужны. См. personal/tech/lampac-deployment.
- 🔴
luna-sendпо SSH печатает хелп вместо ответа — обернуть вscript -q -c "..." /tmp/o.txt. - Фактический appId Lampa на ТВ —
com.lampac.tv(неorg.lampa.tvиз запроса установки).
Инвентаризация диска и удаление (добавлено 2026-09-22)
Полная таблица: personal/plans/kraken-media-inventory-cleanup.
- 🔴 arr индексирует только 252 ГБ из 1236 (21%). Остальное — ручные закачки, невидимые в UI Radarr/Sonarr. «Нет в Radarr» ≠ «нет на диске».
- 🔴
downloads/complete/sonarr/— завершённые раздачи, не удалённые после импорта. Байт-в-байт дубли библиотеки = 78,6 ГБ зря. Самый безопасный кандидат на снос. - 🔴 Матч с watchlist — только СТРОГОЕ равенство нормализованных названий,
len >= 4. Подстрочный матч раздувает счёт: 42 позиции / 811 ГБ вместо реальных 29 / 456 ГБ. - 🔴 В
watchlist.jsonнет поляtmdb_id— он вhref(.../movie/424781), вынимать регексом/(\d{2,9})/?$. - 🔴
missing.json(30 позиций с❓) не пересекается с диском — это рукописные заметки в списке. «Недоступно в Lampa» для файлов = нет в watchlist, не «нет в TMDB». - Группировка 802 файлов: файлы в корне
movies/cartoons/documentaries— каждая своя позиция (иначе «Вивариум» 1,46 ГБ склеивается в группу на 135 ГБ). - Удаление только через API arr-стека;
deleteFiles=true— проверять, что путь внутри библиотеки. Дамп API в файл перед операцией.
Читать продолжение поверх: personal/tech/lampac-deployment, раздел «Transmission на Кра́кене».
- 🔴 Матч с 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). - 🔴
UseDisk: falseу TorrServer — Lampa играет С ТОРРЕНТОВ, не с диска. Проверятьcurl -X POST :9118/ts/settings -d '{"action":"get"}'перед любым предупреждением «снесёшь то, что играет». Файлыmedia/в плейбэке Lampa не участвуют. - 🔴 Transmission RPC на Кра́кене: авторизации нет, но нужен session-id.
Первый POST → 409 +
X-Transmission-Session-Id; забрать и повторить.error: 3="No data found!"— файлы удалены, раздачи висят (21 шт. / 561,6 ГБ). ⚠️downloadDir= путь внутри контейнера (/media/...), не host-путь. - 🔴 Перед сносом «копия есть на другом хосте» — СЧИТАТЬ, а не
ls. На TrueNASdocumentaries= 1 файл,documentaries-series= пусто,cartoons-series= 1 сборник. 307 ГБ доксериалов/документалок Кра́кена уникальны. - ⚠️ Jellyfin на Кра́кене (
:8096) может смотреть вmedia/— проверить библиотеки до удаления, rescan после. Это единственная реальная связьmedia/с просмотром. - 🔴 Radarr/Sonarr API: обязателен префикс
UrlBase+-L.curl :7878/api/v3/...→ HTTP 307 с ПУСТЫМ телом (0 байт в дампе) — выглядит как «API лежит / ключ неверный». Правильно:curl -sL -H "X-Api-Key: $KEY" "http://127.0.0.1:7878/radarr/api/v3/movie"(и/sonarrдля аналогичного).UrlBaseвconfig/config.xml. Диагностика:curl -o /dev/null -w "%{http_code}"→307. Скрипт:/tmp/step1c.sh. - 🔴 У Sonarr 9 из 13 сериалов — фантомы (записи без файлов):
Magical Police Department,The Meeting Place Cannot be Changed,MOZU,Delicious in Dungeon,Double or Quits,Severance,Futurama,True Detective,Brassic. Файлы есть только уOur Flag Means Death,Stranger Things,The Cyberfarm,Rick and Morty. Рассинхрон раскладки, не ошибка чтения. - 🔴 После
docker stop transmissionRPC недоступен — править состояние через bind-mount/srv/.../docker/transmission/(torrents/,resume/,settings.json). - 🔴 Правила чистки раздач (утверждено Alex'ом):
error==3(data missing) → снести;downloadDirпод удаляемые папки → снести ЦЕЛИКОМ;status==0иpercentDone<1(недокачанные) → снести. Итог 2026-09-22: 240 снести / 1769 ГБ, 9 оставить. - 🔴 Манифест удаления строится целыми папками —
movies,movies-radarr,series,series-sonarrпо одной строке каждая + папки мультфильмов. Перед этим сверить состав папки с утверждённым списком (51 + 11 позиций — совпало). ⚠️ Инвентарь видит только видеофайлы —.nfo/.srt/постеры от ранее удалённых фильмов (Master.i.Margarita.2023,Pchelovod.2024,Леон,Ворон_2024) в манифест попадают «бонусом». Это правильно, но выглядит шире списка. ⚠️ Расхождение итога с утверждённой суммой = несовпадение имён папок. 693 ГБ вместо 828 ГБ — 7 папок мультфильмов не сматчились буквально. Всегда[ -e "$path" ]каждую строку + печататьdu -sbпострочно.
Удаление медиа — ВЫПОЛНЕНО 2026-09-22 (питфоллы исполнения)
Итог: удалено 693 ГБ, диск 477 ГБ → 1,2 ТБ, Transmission 249 → 9 раздач. Полный журнал: personal/plans/kraken-media-inventory-cleanup, раздел «ВЫПОЛНЕНО».
- 🔴
torrent-removeпо id НЕ работает — Transmission пересоздаёт раздачи. Снял 240 id → осталось 17, а не 9: восемь вернулись с новыми id (223, 233, 234, 236, 238, 241, 244, 247). Долечены вторым проходом поdownloadDir, третий проход —Babylon(/downloads/radarr, префикс не в фильтре). Правило: чистить поdownloadDir, не по id, и пересчитывать после каждого прохода. Все префиксы учесть:/downloads/completeИ/downloads/radarrИ/downloads/complete/radarr."delete-local-data": false— снимает запись, файлы не трогает (их удаляет манифест). - 🔴
rm -rfкаталога верхнего уровня →Permission deniedна САМОМ каталоге. Содержимое удаляется (оноkraken:kraken), а каталогroot:root. Второй проходsudo rmdirдочищает (каталоги уже пусты). Скрипт должен уметь оба уровня: содержимое —rm -rf, сам каталог —sudo rmdir. - 🔴🔴 После удаления root-папок arr отдаёт 409 на любой DELETE файловой записи.
Причина:
DELETE /radarr/api/v3/moviefile/<id> → 409 DELETE /sonarr/api/v3/episodefile/<id> → 409 {"message":"Movie's root folder (/media/movies-radarr) doesn't exist."} Warn|MediaFileDeletionService|Movie's root folder (...) doesn't exist.rootfolderхранится в БД arr. Удалил папку —MediaFileDeletionServiceотказывается работать с записями. Rescan НЕ помогает (файлы исчезли ДО скана): осталось 12 фильмов и 57 эпизодов фантомами. У Radarr список rootfolders стал ПУСТ. Лечение: пересоздать пустые root-папки → DELETE записей →sudo rmdir. Общее правило: дамп API ДО удаления; если сносишь корневую папку библиотеки — планируй чистку записей в том же проходе, потом уже не получится. - ⚠️ rescan командой, а не через UI:
POST /radarr/api/v3/command {"name":"RescanMovie"},POST /sonarr/api/v3/command {"name":"RescanSeries"}(с-LиX-Api-Key). - ⚠️ Jellyfin на Кра́кене жив (
/health→ 302). Порт:8096. Проверять библиотеки до/после — единственная реальная связьmedia/с просмотром.
Установка Lampa на ТВ (сжато)
# скачать 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.
Проверка
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"'
Откат
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 играет с торрентов, а не с диска — менять только осознанно. - ✅ Удаление медиа на Кра́кене ВЫПОЛНЕНО (2026-09-22): 693 ГБ, диск 477 ГБ → 1,2 ТБ, Transmission 249 → 9 раздач. Детали: personal/plans/kraken-media-inventory-cleanup.
- 🔴 НЕ ЗАКРЫТО: 12 фантомных фильмов в Radarr + 57 эпизодов в Sonarr. DELETE через API
→ 409 (
root folder doesn't exist). Решение предложено, ответа Alex'а нет. Скрипт/tmp/step10_fix.shготов, не запускался. Питфолл 31 выше. - ⚠️ Проверка библиотек Jellyfin на Кра́кене перед удалением — не сделана
(команда ушла в таймаут апрува). Jellyfin жив:
/health→ 302. - ⚠️ Уборка: каталог
/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/.