Files
lampac/README.md
T
prodik 89267427ae Перенос проекта: Docker-развёртывание Lampac NextGen
- Заменена структура старого деплоя (immisterio/lampac) на lampac-nextgen/lampac
- docker-compose.yaml: образ ghcr.io/lampac-nextgen/lampac, тома конфига/данных/override-файлов
- init.conf: SkipModules, TorrServer (LAN-only), TelegramBot, LampaWeb.initPlugins.dlna
- Override-файлы: manifest (Tracks, Music, Tg-notify.bot, AdminPanel), extensions.json (магазин +DLNA)
- README.md, AGENT.md, .gitignore
2026-10-01 16:22:51 +03:00

14 KiB
Raw Blame History

Lampac NextGen — self-hosted backend для Lampa (Docker)

Локальное развёртывание Lampac NextGen — активного форка оригинального 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 и многое другое.

Структура проекта

Lampac/
├── docker-compose.yaml            # Единственный compose-файл (порт 9118)
├── lampac-docker/
│   ├── 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).

# 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).

Конфигурация

lampac-docker/config/init.conf

Основной конфиг (JSON). Перечитывается автоматически без перезапуска контейнера (watcher каждую секунду, бэкапы — внутри контейнера в /lampac/database/backup/init/). После правки достаточно сохранить файл.

Ключевые разделы:

{
  "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-оверрайды в lampac-docker/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) в секцию 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 плагин не увидит (модуль работает, а пункт в меню не появляется).
"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: lampac-docker/modules/LampaWeb/plugins/extensions.json (секция «Lampac» в начале каталога) монтируется поверх образного файла. Магазин кешируется (Staticache) — после правки этого файла кеш надо сбросить: удалить lampac-docker/cache/static/63/* (каталог по хешу URL) или перезапустить контейнер.

AdminPanel

Веб-админка Lampac: правка init.conf/current.conf, пользователи users.json.

  • Вход: http://IP_МАШИНЫ:9118/adminpanel/auth — пароль из lampac-docker/config/passwd (cookie accspasswd, живёт 180 дней).
  • Панель: http://IP_МАШИНЫ:9118/adminpanel (без входа — 302 на страницу auth).
  • Доступ к админке не открывайте в интернет без защиты — см. README модуля AdminPanel.

lampac-docker/config/passwd

Пароль учётной записи root в одну строку (используется для служебных функций и WebLog). Сгенерирован при установке; для смены отредактируйте файл и перезапустите контейнер: docker compose restart lampac.

Обновление

docker compose pull
docker compose up -d

Данные (init.conf, passwd, cache/, database/, modules/, dlna/) переживают обновление, т.к. смонтированы томами.

Перенос на другой сервер

Игнорируемые пути (.gitignore): config/passwd, cache/, database/, dlna/, .DS_Store.

Копировать обязательно:

docker-compose.yaml
lampac-docker/config/init.conf     # вся конфигурация
lampac-docker/config/passwd        # СЕКРЕТ — переносить вне git (scp/rsync)
lampac-docker/modules/             # override-файлы (manifest ×4, extensions.json)
README.md AGENT.md .gitignore

Копировать по желанию (данные пользователя, иначе создадутся заново):

lampac-docker/database/            # закладки Sync, позиции TimeCode, SISI, библиотека Music
dlna/                              # медиа/превью DLNA

Не копировать — регенерируется автоматически: lampac-docker/cache/, содержимое /lampac/data внутри контейнера (GeoLite2, ffmpeg/ffprobe, бинарник TorrServer, Lampa UI).

Порядок переноса: скопировать файлы → docker compose up -d → health-check: curl "http://localhost:9118/version?type=hash". Порт 9118 и пути в compose относительные — правок не требуется.

Полезные команды

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 не экранируют входящие запросы — не открывайте их публично без защиты.
  • lampac-docker/config/passwd содержит секрет — файл добавлен в .gitignore.

Ссылки