# Lampac NextGen — self-hosted backend для Lampa (Docker) Локальное развёртывание **[Lampac NextGen](https://github.com/lampac-nextgen/lampac)** — активного форка оригинального Lampac, чей основной репозиторий больше не поддерживается. ## Почему этот форк Оригинальный 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 Lampac/ ├── 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) ├── dlna/ # Данные DLNA (медиа/превью, → /lampac/data/dlna) ├── README.md # Эта документация ├── AGENT.md # Инструкции для AI-агента └── .gitignore ``` ## Быстрый старт Требования: 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//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/`, `dlna/`) переживают обновление, т.к. смонтированы томами. ## Перенос на другой сервер Игнорируемые пути (`.gitignore`): `config/passwd`, `cache/`, `database/`, `dlna/`, `.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 dlna/ # медиа/превью DLNA ``` **Не копировать** — регенерируется автоматически: `cache/`, содержимое `/lampac/data` внутри контейнера (GeoLite2, ffmpeg/ffprobe, бинарник TorrServer, Lampa UI). Порядок переноса: скопировать файлы → `docker compose up -d` → health-check: `curl "http://localhost:9118/version?type=hash"`. Порт 9118 и пути в compose относительные — правок не требуется. ## Полезные команды ```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 main ``` В git попадают только: `docker-compose.yaml`, `config/init.conf`, `modules/**`, `README.md`, `AGENT.md`, `.gitignore`. Секреты (`passwd`), `cache/`, `database/`, `dlna/` — в `.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