[2026-10-30] eagle: family/how-to/truenas-infrastructure.md family/how-to/tv-lampac-plugin.md personal/plans/lampac-watched-to-watchlist.md personal/tech/konka-q85-novosibirsk.md personal/tech/lampac-deployment.md personal/tech/lampac-truenas.md

This commit is contained in:
Alexey Martemyanov committed 2026-10-30 15:27:44 +06:00
1 parent 22213fbb93
commit ac721b6a22
6 files changed
+142 -4

No files matched your search

+11 -2
View File
@@ -3,8 +3,8 @@ title: Отметка «просмотрено» из Lampa → watchlist.md
type: plan
status: implemented-bug-open-markwatched-insert
namespace: personal
created: 2026-09-23T00:00:00.000Z
updated: '2026-09-27T00:00:00.000Z'
created: '2026-09-23T00:00:00.000Z'
updated: '2026-10-30'
tags:
- lampac
- lampa
@@ -17,10 +17,19 @@ related:
- '[[family/projects/watchlist-automation]]'
- '[[personal/plans/lampac-watchlist-plugin]]'
- '[[family/documents/movies-watchlist]]'
- '[[personal/tech/lampac-truenas]]'
---
# Отметка «просмотрено» из Lampa → `movies-watchlist.md`
## Обновление источника истории — 2026-10-30
Активная TimeCode перенесена на TrueNAS; все 9 записей сохранены. Kraken читает общий HTTPS dump API через приватную переменную `LAMPAC_TIMECODE_DB`; поддержка API реализована и запушена в [watchlist-sync, 3810d77](https://github.com/mallexxx/watchlist-sync/commit/3810d77). Код развёрнут на Kraken, dry-run прочитал9 записей без изменений списка.
Единственный писатель Obsidian и генератор каталога остаётся на Kraken; на NAS публикуются готовые JSON. Синхронизации SQLite нет. Локальная SQLite Kraken сохранена для отката и больше не является активным источником ночного шага. Реальная API-запись и сохранность прогресса проверены до/после NAS-бэкапа.
Актуальная схема, права WAL/SHM и бэкапы — [[personal/tech/lampac-truenas]]. Ниже сохранена история предыдущей реализации и её отдельных замечаний; это обновление меняет источник данных и не заявляет исправление всех исторических вопросов разметки списка.
> **Проблема (Alex, 2026-09-23):** «А у нас из лампы уходят отметки просмотрено в список галочками как было в jellyfin?»
> Ответ: **нет**. Задача — сделать, чтобы уходили.
+11
View File
@@ -13,9 +13,20 @@ tags:
related:
- '[[personal/tech/home-network-config]]'
- '[[family/how-to/htpc-webos-luna]]'
- '[[personal/tech/lampac-truenas]]'
---
# Konka Q85 — Новосибирск: статус и изменения
## Lampac установлен и проверен — 2026-10-30
Установлен `com.lampac.tv` версии1.0.0 через существующий Homebrew Channel с проверкой SHA256. Сервер и сохранённый `lampac_url`: `http://192.168.2.197:9118` (TrueNAS). Полная схема: [[personal/tech/lampac-truenas]].
Настройки клиента: **`proxy_tmdb=true`, `proxy_tmdb_auto=false`**. Автоопределение региона выключало прокси и ломало встроенные постеры, хотя Catalog уже был настроен. На сервере прокси отдельно включён для TMDB API/изображений, `posterApi` и `serverproxy.image`; глобальный прокси видео не включён.
Подтверждены поиск «дюна» через клавиатуру без JavaScript-ошибок, 7 встроенных и28 собственных постеров (сломанных0), начало прямого воспроизведения тестового H.264640×360 с NAS (`readyState=4`, ошибок нет). Длительное воспроизведение/онлайн-раздача и звук на слух отдельно не подтверждены. Общая история на TrueNAS через API; репликации SQLite нет.
При работе Lampac доступна CDP-цель9998: выбирать по URL с `com.lampac.tv`, ждать `appready`. Root-вызов Homebrew через `PalmServiceBridge` проверен также из контекста установленного Lampac; SSH/Telnet на ТВ ради этого не включали. Диагностические ответы не выводить поверх приложения. Временные HTTP-установщик на роутере18085 и SSH-перенаправления после работы удалены. Настройки root/privacy ниже не менялись.
Состояние проверено **2026-10-30** во время настройки телевизора. Местоположение — Новосибирск, по указанию владельца. Это отдельный телевизор; не путать с ТВ `192.168.1.70` / webOS 5.4.2 из [[family/how-to/htpc-webos-luna]].
## Устройство и сеть
+14 -1
View File
@@ -1,7 +1,7 @@
---
title: Lampac — развёртывание и эксплуатация (Кра́кен)
created: '2026-09-22'
updated: '2026-09-25'
updated: '2026-10-30'
type: tech
namespace: personal
tags:
@@ -21,10 +21,23 @@ related:
- '[[personal/tech/multistream-single-flow-limit]]'
- '[[family/how-to/kraken-network]]'
- '[[family/how-to/tv-luna-send]]'
- '[[personal/tech/lampac-truenas]]'
---
# Lampac — развёртывание и эксплуатация (Кра́кен)
## Актуальная схема на 2026-10-30: Kraken + TrueNAS
Рабочая схема, адреса, настройки и восстановление — [[personal/tech/lampac-truenas]]. Официальный Lampac1.87.3: Kraken arm64, TrueNAS amd64; наш репозиторий — аддон, не форк сервера. Репозиторий и инструкция: [lampac-scripts/deploy](https://git.mallexxx.duckdns.org/git_admin/lampac-scripts/src/branch/main/deploy/README.md).
На TrueNAS приложение работает в `/mnt/RED_2TB/docker/lampac`, LAN `http://192.168.2.197:9118`; клиент Konka Q85 в Новосибирске (`192.168.2.124`) установлен и проверен. Прокси только метаданных/постеров: отдельный `lampac-egress` через Kraken; глобальный прокси видео не включён. На Konka обязательно `proxy_tmdb=true`, `proxy_tmdb_auto=false`; настроены также `tmdb.proxyapi/proxyimg`, `posterApi`, `serverproxy.image`.
Общая TimeCode теперь на TrueNAS, Kraken обращается через HTTPS API с отдельным `history_key` и тем же `uid`. Синхронизации SQLite нет; 9 записей сохранены. Генератор каталога/писатель Obsidian один, на Kraken; на NAS передаются только готовые JSON. Бэкап NAS учитывает uid950/uid1000: БД/WAL/SHM mode0664, group1000. Запись после бэкапа проверена.
Ошибка поиска `title.toLowerCase()` исправлена в Catalog-аддоне: discovery каждого источника привязан к имени каталога, отдельная повторная регистрация поиска убрана. Проверены реальный поиск на ТВ, встроенные и собственные постеры, прямое тестовое воспроизведение. Подробные границы проверки — в новой заметке.
Ниже сохранена история настройки Kraken за сентябрь; прежние указания читать активную историю из локальной SQLite Kraken заменены схемой выше.
> Технический справочник. Развёрнуто 2026-09-22. План и статус шагов — [[personal/plans/lampac-kraken]].
## 🔴 2026-09-25: деплой `plugin.js` модуля Catalog — контракт и подводные камни
+88
View File
@@ -0,0 +1,88 @@
---
title: Lampac на TrueNAS и Konka Q85 — рабочая схема
created: '2026-10-30'
updated: '2026-10-30'
type: tech
namespace: personal
tags:
- lampac
- truenas
- konka
- webos
- timecode
related:
- '[[personal/tech/lampac-deployment]]'
- '[[personal/tech/konka-q85-novosibirsk]]'
- '[[family/how-to/truenas-infrastructure]]'
---
# Lampac на TrueNAS и Konka Q85 — рабочая схема
Проверено 2026-10-30. Lampac развёрнут на TrueNAS, клиент установлен на Konka Q85 в Новосибирске. Это аддон к официальному серверу, не форк Lampac.
## Серверы и исходники
- TrueNAS: `truenas_admin@mallexxx.duckdns.org`, каталог `/mnt/RED_2TB/docker/lampac`, адрес приложения `http://192.168.2.197:9118`.
- Обычный Docker Compose, не TrueNAS Apps. Контейнер `lampac`: официальный образ `ghcr.io/lampac-nextgen/lampac:1.87.3`, amd64, лимиты 2 ГБ RAM / 1 CPU, порт опубликован только на LAN-адресе. GPU-транскодирование не настроено.
- Kraken остаётся на официальном arm64-образе 1.87.3 и прежнем адресе `http://192.168.1.14:9118`.
- Mac: `/Users/admin/Developer/lampac-scripts`, ветка `main`, [Gitea](https://git.mallexxx.duckdns.org/git_admin/lampac-scripts).
- Генератор: `/Users/admin/Developer/watchlist-sync`, ветка `main`, [GitHub](https://github.com/mallexxx/watchlist-sync).
- Точные Compose, init.conf, шаблоны и инструкция восстановления — [deploy/README.md](https://git.mallexxx.duckdns.org/git_admin/lampac-scripts/src/branch/main/deploy/README.md). Приватные ключи и рабочие конфиги с секретами в git не добавляются.
## Konka и встроенные постеры
Konka Q85: `192.168.2.124`, webOS 7.5.6; приложение `com.lampac.tv` версии 1.0.0 установлено через существующий Homebrew Channel с проверкой SHA256 пакета. Его `lampac_url` в localStorage: `http://192.168.2.197:9118`. Настройку root/privacy не меняли; Developer Mode не устанавливали.
Пустые постеры имели два отдельных условия: NAS не получал TMDB напрямую, а клиентская автоматика могла выключать прокси. На ТВ сохранены **`proxy_tmdb=true` и `proxy_tmdb_auto=false`**. Одной настройки серверного poster fetcher недостаточно: при выключенном клиентском флаге CUB обращается к `image.tmdb.org` напрямую.
На NAS отдельный контейнер `lampac-egress` предоставляет SOCKS только внутри сети Lampac, без опубликованного порта. Он использует существующий авторизованный маршрут `kraken-user` через Caddy/VLESS и Kraken. Его приватный конфиг: `config-module/egress.json`, mode0640, group1000; шаблон без клиентского ID — в репозитории.
Прокси `socks5://lampac-egress:1080` включён в:
- `tmdb.proxyapi` и `tmdb.proxyimg` — встроенные TMDB/CUB;
- `posterApi` — постеры карточек Catalog;
- `serverproxy.image` — обработчик изображений.
**Глобальный прокси для HTTP/видео не включён.** Проверенный тестовый видеопоток шёл напрямую с LAN-адреса NAS. Общий `vless-proxy` не меняли; при проверке его исходящие TLS-соединения обрывались. Это наблюдение на дату настройки, а не установленная причина отказа общей инфраструктуры.
Внутренний вход Caddy — `192.168.2.197:8443`, TLS-имя `vpn.mallexxx.duckdns.org`. На `192.168.2.197:443` находится интерфейс TrueNAS: использовать его вместо 8443 нельзя, сертификат другой.
## Единая история без синхронизации SQLite
Рабочая TimeCode находится на TrueNAS в постоянном `database/TimeCode.sql`. Kraken-клиент обращается к тому же серверу через HTTPS API. **Двусторонней репликации SQLite, rsync БД или общего сетевого файла БД нет.**
История из Kraken перенесена один раз штатными `/timecode/dump` → `/timecode/set`; сохранены все 9 записей и их прогресс. Оба сервера используют одинаковый серверный `instance.uid`; профили остаются отдельными областями. Старая БД Kraken оставлена для отката.
В существующем HTTPS-сайте Caddy выделен префикс `https://git.mallexxx.duckdns.org/lampac-history` с точным списком TimeCode-маршрутов. Без правильного `history_key` — 404; прочие маршруты Lampac наружу через него не открыты. Gitea продолжает работать. Выполнен reload Caddy, не перезапуск общего сервиса.
Ключ транспорта называется **`history_key`, не `token`**: `token` в Lampac меняет владельца данных. В сгенерированном клиенте и чтение, и запись должны независимо передавать `uid`; это проверяется исполнением реальных URL-методов в тесте.
Kraken: приватный результат `scripts/build_timecode.py` установлен в `config-module/timecode-plugin.js`, примонтирован в `/lampac/module/Sync/TimeCode/plugin.js:ro`. NAS использует штатный локальный TimeCode-клиент. Межсайтовые WebSocket-уведомления не добавлялись; прогресс читается при обновлении карточки/таймлайна.
## Каталог и отметки Obsidian
Единственный генератор и писатель Obsidian остаётся на Kraken. Ночной `/home/kraken/scripts/watchlist-nightly.sh` после сборки каталога публикует готовые JSON на NAS через `publish_feed.py`.
На NAS ключ приёма ограничен `restrict` и forced command `receive_feed.py --root /mnt/RED_2TB/docker/lampac`. Принимаются только файлы каталога; SQL, ссылки, пути вне разрешённого списка и код отклоняются. Файлы заменяются атомарно по одному, карточки раньше основного манифеста. Проверена публикация 544 файлов.
`watchlist-sync` читает общий HTTPS dump через `LAMPAC_TIMECODE_DB` в приватном `.env`. Проверен dry-run: 9 записей, изменений списка не внесено. Второй генератор/писатель на NAS не запущен. Порог отметки фильма — 90%; существующее поведение сериалов этим изменением не расширялось.
## Данные и бэкапы
Постоянные `wwwroot` и `data` при первой установке нужно заполнить из образа до запуска. Пустые bind mounts скрывают и frontend, и резервные Cloudflare IP-файлы; при недоступной сети это приводило к падению старта. Конфиги должны читаться uid1000: режим0600 после SCP для `init.conf` не подходит.
Контейнер пишет от uid1000/gid1000, администратор NAS — uid950 в группе1000. **`TimeCode.sql`, `-wal`, `-shm` должны иметь mode0664 и group1000.** Read-only SQLite-подключение тоже может создавать WAL/SHM. Первый бэкап от uid950 создал их с0644, после чего сервер не мог записывать прогресс. Владельцы/права исправлены, старые подключения закрыты перезапуском только Lampac.
`scripts/backup_history.py` перед открытием проверяет group write, закрывает подключения, использует SQLite online backup и проверку целостности. NAS crontab: ежедневно04:27 по времени хоста, хранение30 дней в `backups/timecode`. Часовой пояс приложения — Asia/Novosibirsk; расписание cron не следует автоматически считать этим часовым поясом. Это локальный бэкап, не синхронизация БД.
После исправления проверена API-запись **до и после повторного бэкапа**; все 9 записей и значения прогресса сохранены. Для отката сохранены прежние Compose/Caddy/настройки и снимки истории. Живую БД обычным копированием не подменять.
## Что проверено
- HTTP200 и окончание запуска `Configure complete`; одного Docker healthcheck недостаточно.
- Реальный поиск «дюна» на Konka через экранную клавиатуру: результаты получены, JavaScript-ошибок нет, вкладка watchlist одна.
- На видимом экране: 7 встроенных и28 каталожных постеров загружены, сломанных0; настройки прокси подтверждены после перезагрузки приложения.
- Плеер Lampac декодировал тестовый H.264-поток640×360 с NAS: время увеличивалось, `readyState=4`, ошибки отсутствовали. Непрерывный пяти-/десятиминутный тест, реальная онлайн-раздача и звук на слух отдельно не подтверждены.
- 10 автоматических тестов: 5 поиска, 3 развёртывания/истории/бэкапа, 2 чтения TimeCode API.
- Изменения запушены в обе репозитории; локальные копии в Developer обновлены. Временный установщик на роутере18085, ролик и диагностические SSH-перенаправления удалены.
Связано: [[personal/tech/lampac-deployment]], [[personal/tech/konka-q85-novosibirsk]], [[family/how-to/truenas-infrastructure]], [[personal/plans/lampac-watched-to-watchlist]].