Files
lampac/README.md
T
prodik 79216ce45e synology: compose на абсолютные пути NAS + адаптация README/AGENT
- docker-compose.yaml: /volume1/docker/lampac/... (данные), /volume4/Torrents (DLNA), Курсы -> dlna/Cources:ro
- README/AGENT: описание ветки synology, таблица томов NAS, инструкции переноса
- мерж main (разрешение конфликтов документации)
2026-10-01 16:38:13 +03:00

241 lines
16 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.
# Lampac NextGen — self-hosted backend для Lampa (Docker, Synology NAS)
Локальное развёртывание **[Lampac NextGen](https://github.com/lampac-nextgen/lampac)** — активного форка оригинального Lampac, чей основной репозиторий больше не поддерживается.
> **Ветка `synology`** — вариант для Synology NAS: в `docker-compose.yaml` используются **абсолютные пути** томов (`/volume1/docker/lampac/...`), а не относительные, как в ветке `main`.
## Почему этот форк
Оригинальный Lampac (`Mirrowol/Lampac`) давно не обновляется. Из форков наибольшую популярность набрал **lampac-nextgen/lampac**:
| Показатель | Значение |
| --- | --- |
| Репозиторий | https://github.com/lampac-nextgen/lampac |
| Stars / Forks | ~347 / ~80 (самый популярный форк Lampac) |
| Активность | ежедневные коммиты, релизы (последний `v1.61.2` — 30.09.2026) |
| Стек | ASP.NET Core, .NET 10, AGPL-3.0 |
| Docker-образ | `ghcr.io/lampac-nextgen/lampac` (amd64 + arm64) |
| Документация | https://docs.lampac.dev |
| Чат | https://t.me/LampacTalks/13998 |
Что умеет: агрегация ссылок с 70+ VOD/аниме/18+ источников, встроенный TorrServer, DLNA, JacRed, транскодинг (GStreamer/FFmpeg), синхронизация закладок, хостинг Lampa UI, Telegram-уведомления, WAF и многое другое.
## Структура проекта
```text
/volume1/docker/lampac/ # корень проекта на NAS
├── docker-compose.yaml # compose-файл (порт 9118, абсолютные пути томов)
├── config/
│ ├── init.conf # Конфигурация сервера (JSON, hot-reload)
│ └── passwd # Пароль root (СЕКРЕТ, не коммитить)
├── modules/ # Overridе-файлы, монтируемые поверх файлов образа
│ ├── Tracks/manifest.json
│ ├── Music/manifest.json
│ ├── Tg-notify.bot/manifest.json
│ ├── AdminPanel/manifest.json
│ └── LampaWeb/plugins/extensions.json # каталог магазина плагинов (+DLNA)
├── cache/ # Кеш (→ /lampac/cache)
├── database/ # SQLite-БД: Sync, TimeCode, SISI (→ /lampac/database)
├── README.md # Эта документация
├── AGENT.md # Инструкции для AI-агента
└── .gitignore
```
Тома, заданные в `docker-compose.yaml` (вне репозитория):
| Путь хоста (NAS) | В контейнере | Доступ |
| --- | --- | --- |
| `/volume1/docker/lampac/config/passwd` | `/lampac/passwd` | rw |
| `/volume1/docker/lampac/config/init.conf` | `/lampac/init.conf` | ro |
| `/volume1/docker/lampac/cache` | `/lampac/cache` | rw |
| `/volume1/docker/lampac/database` | `/lampac/database` | rw |
| `/volume1/docker/lampac/modules/*/...` | `/lampac/module/...` | ro |
| `/volume4/Torrents` | `/lampac/data/dlna` | rw — медиа DLNA |
| `/volume1/homes/prodik/NAS/Курсы` | `/lampac/data/dlna/Cources` | ro — подпапка внутри DLNA |
## Быстрый старт
Требования: Docker 24+ с Compose v2 (проверка: `docker compose version`).
```bash
# 1. Запуск
docker compose up -d
# 2. Проверка
curl -fsS "http://localhost:9118/version?type=hash" # должен вернуть hash
curl -fsS -o /dev/null -w '%{http_code}\n' http://localhost:9118/online.js # 200
# 3. Логи / статус
docker compose logs -f lampac
docker compose ps
```
## Доступ
| Сервис | URL |
| --- | --- |
| Веб-интерфейс (Lampa UI) | http://localhost:9118/ |
| Плагин Online для Lampa | http://localhost:9118/online.js |
| Плагин SISI (18+) | http://localhost:9118/sisi.js |
| Плагин DLNA для Lampa | http://localhost:9118/dlna.js |
| AdminPanel (вход) | http://localhost:9118/adminpanel/auth |
| Проверка версии | http://localhost:9118/version?type=hash |
Чтобы подключить сервер к Lampa: откройте Lampa → Настройки → «Другие сервисы» (или вставьте адрес вручную) → `http://IP_МАШИНЫ:9118`.
Для доступа с других устройств локальной сети используйте LAN-IP машины, например `http://192.168.x.x:9118` (порт уже проброшен на `0.0.0.0`).
## Конфигурация
### `config/init.conf`
Основной конфиг (JSON). **Перечитывается автоматически без перезапуска** контейнера (watcher каждую секунду, бэкапы — внутри контейнера в `/lampac/database/backup/init/`). После правки достаточно сохранить файл.
Ключевые разделы:
```jsonc
{
"listen": { "ip": "0.0.0.0", "port": 9118, "scheme": "http" },
"BaseModule": {
"SkipModules": [/* выключенные модули, см. ниже */]
},
"LampaWeb": { "initPlugins": { "dlna": true } }, // попадание плагина в список клиента Lampa
"TorrServer": { "enable": true, "tsport": 9085, "releases": "latest" },
"TelegramBot": { "enable": true, "bot_token": "", "lampac_host": "http://127.0.0.1:9118" },
"chromium": { "enable": true }, // Playwright для обхода JS-защит
"online": { "name": "Lampac NextGen" },
"sisi": { "NextHUB": true }
}
```
### Текущий набор модулей
**Выключены** (`BaseModule.SkipModules`): `OnlineAnime`, `OnlineUKR`, `OnlinePaid`, `OnlineGEO`, `Transcoding`, `WebLog`.
**Включены дополнительно к стартовому набору:**
- `Catalog`, `JacRed`, `Sync` (вместе с `Storage`, `SyncEvents`, `TimeCode`), `TorrServer`, `DLNA`, `SISI` — убраны из `SkipModules`.
- `Tracks`, `Music`, `Tg-notify.bot`, `AdminPanel` — включены через manifest-оверрайды в `modules/*/manifest.json` (в образе у них `enable: false`; файлы монтируются поверх `/lampac/module/<Name>/manifest.json`).
Чтобы выключить/включить любой другой модуль — добавьте или уберите его имя в `SkipModules` (имя = имя папки в `/lampac/module/`, включая группы вроде `OnlineAnime`). Изменение применяется после `docker compose restart lampac` (SkipModules не hot-reload). Убрать из списка группу `Sync` целиком отключит и `TimeCode`/`Storage`/`SyncEvents`.
Список всех модулей и маршрутов: https://docs.lampac.dev/modules/overview
### TorrServer
Включён (`TorrServer` в `init.conf`, бинарник сам скачивается с GitHub в `/lampac/data/ts/`). Доступ **только из локальной сети**:
- внутренний порт TorrServer `9085` **не проброшен на хост** — снаружи он недоступен;
- внешний доступ идёт только через прокси `http://LAN_IP:9118/ts/` (порт 9118 в compose);
- из интернета сервер не доступен, пока порт 9118 закрыт файрволом/роутером (см. «Безопасность»).
Пароль (`tspass`) генерируется при старте; Web-UI — `http://LAN_IP:9118/ts/`.
### Tg-notify (Telegram-бот)
Модуль `Tg-notify.bot` загружен, но long polling не стартует, пока не задан токен: впишите `bot_token` (от [@BotFather](https://t.me/BotFather)) в секцию `TelegramBot` файла `init.conf` — конфиг подхватится автоматически. Опционально: `tmdb_api_key`, `trakt_client_id`, `kp_api_key` (описание полей — в README модуля).
### DLNA в интерфейсе Lampa
Чтобы плагин DLNA появился в Lampa, нужно две вещи:
1. **Модуль** загружен (уже включён: `loaded module: DLNA`).
2. **Флаг `LampaWeb.initPlugins.dlna`** в `init.conf` — именно он решает, попадёт ли DLNA в список плагинов, который Lampac отдаёт клиенту (`/lampainit.js`). Сейчас выставлен `true`; без него Lampa плагин не увидит (модуль работает, а пункт в меню не появляется).
```jsonc
"LampaWeb": { "initPlugins": { "dlna": true } }
```
Аналогично включаются флаги `tracks`, `catalog`, `dorama`, `sync`, `backup`, `watch_together` и др. (список — `LampaWeb/Models/InitPlugins.cs`, дефолты — в `current.conf`).
После правки перезагрузите страницу Lampa — `lampainit.js` сам добавит плагин (`Lampa.Plugins.add`) и он появится в Настройки → Плагины (со статусом включён). Ручное добавление по ссылке тоже работает: `http://IP_МАШИНЫ:9118/dlna.js`. Прямой UI модуля — `http://IP_МАШИНЫ:9118/dlna`.
**В магазине плагинов** (Настройки → Плагины/«Магазин») каталог отдаётся из `/extensions` — файла `LampaWeb/plugins/extensions.json` внутри образа, где DLNA по умолчанию нет. Добавлена запись через override: `modules/LampaWeb/plugins/extensions.json` (секция «Lampac» в начале каталога) монтируется поверх образного файла. Магазин кешируется (`Staticache`) — после правки этого файла кеш надо сбросить: удалить `cache/static/63/*` (каталог по хешу URL) или перезапустить контейнер.
### AdminPanel
Веб-админка Lampac: правка `init.conf`/`current.conf`, пользователи `users.json`.
- Вход: `http://IP_МАШИНЫ:9118/adminpanel/auth` — пароль из `config/passwd` (cookie `accspasswd`, живёт 180 дней).
- Панель: `http://IP_МАШИНЫ:9118/adminpanel` (без входа — 302 на страницу auth).
- Доступ к админке не открывайте в интернет без защиты — см. README модуля AdminPanel.
### `config/passwd`
Пароль учётной записи `root` в одну строку (используется для служебных функций и WebLog). Сгенерирован при установке; для смены отредактируйте файл и перезапустите контейнер: `docker compose restart lampac`.
## Обновление
```bash
docker compose pull
docker compose up -d
```
Данные (`init.conf`, `passwd`, `cache/`, `database/`, `modules/`) переживают обновление, т.к. смонтированы томами с абсолютными путями NAS.
## Перенос на другой сервер
Игнорируемые пути (`.gitignore`): `config/passwd`, `cache/`, `database/`, `.DS_Store`.
**Копировать обязательно:**
```bash
docker-compose.yaml
config/init.conf # вся конфигурация
config/passwd # СЕКРЕТ — переносить вне git (scp/rsync)
modules/ # override-файлы (manifest ×4, extensions.json)
README.md AGENT.md .gitignore
```
**Копировать по желанию** (данные пользователя, иначе создадутся заново):
```bash
database/ # закладки Sync, позиции TimeCode, SISI, библиотека Music
```
**Не копировать** — регенерируется автоматически: `cache/`, содержимое `/lampac/data` внутри контейнера (GeoLite2, ffmpeg/ffprobe, бинарник TorrServer, Lampa UI). Медиа DLNA лежат на томах NAS (`/volume4/Torrents`, `Курсы`) и копируются отдельно по необходимости.
Порядок переноса: скопировать файлы → **в `docker-compose.yaml` заменить абсолютные пути томов на новые** → `docker compose up -d` → health-check: `curl "http://localhost:9118/version?type=hash"`. Порт 9118 менять не обязательно.
## Полезные команды
```bash
docker compose restart lampac # перезапуск
docker compose stop lampac # остановить
docker compose down # остановить и удалить контейнер (тома сохраняются)
docker compose logs -f --tail 100 lampac # логи
docker compose exec lampac sh # шелл внутри контейнера
docker compose pull && docker compose up -d # обновление до свежего latest
```
## Безопасность
- Порт 9118 проброшен на все интерфейсы — при выходе в интернет закройте его файрволом или поднимите reverse proxy с аутентификацией. Внутренний порт TorrServer (9085) не проброшен вовсе: он доступен только контейнеру, внешний доступ к TorrServer идёт исключительно через `/ts/` на 9118.
- Модули `DLNA`, `Tracks`, `Transcoding`, `GStreamer`, `Catalog` не экранируют входящие запросы — не открывайте их публично без защиты.
- `config/passwd` содержит секрет — файл добавлен в `.gitignore`.
## Git-репозиторий
Код проекта хранится в Gitea: `ssh://git@gitea.prodik.ru:222/prodik/lampac.git`.
- **`main`** — основная ветка: относительные пути томов (подходит для любого сервера).
- **`synology`** (эта ветка) — то же содержимое, но `docker-compose.yaml` адаптирован под Synology NAS: абсолютные пути `/volume1/docker/lampac/...`, тома `/volume4/Torrents` и `Курсы`.
```bash
git remote -v # origin должен указывать на этот репозиторий
git add -A # секреты/данные не попадут (.gitignore)
git commit -m "описание"
git push origin synology
```
В git попадают только: `docker-compose.yaml`, `config/init.conf`, `modules/**`, `README.md`, `AGENT.md`, `.gitignore`. Секреты (`passwd`), `cache/`, `database/` — в `.gitignore`.
## Ссылки
- Репозиторий форка: https://github.com/lampac-nextgen/lampac
- Документация: https://docs.lampac.dev
- Быстрый старт: https://docs.lampac.dev/quickstart
- Docker: https://docs.lampac.dev/deployment/docker
- Конфигурация: https://docs.lampac.dev/configuration/overview
- Релизы: https://github.com/lampac-nextgen/lampac/releases