Compare commits

...
7 Commits
Author SHA1 Message Date
prodik 6cd851aa56 increase ram 2026-10-01 16:41:01 +03:00
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
prodik c6154706db Документация: synology синхронизирована с main 2026-10-01 16:30:55 +03:00
prodik 95db691a0d Синхронизация с main: Docker-развёртывание Lampac NextGen
Содержимое ветки заменено на актуальное из main:
- docker-compose.yaml (ghcr.io/lampac-nextgen/lampac, относительные пути)
- config/init.conf, modules/ (override-файлы)
- README.md, AGENT.md, .gitignore
Старый деплой (immisterio/lampac, configs/, plugins/, update.sh) удалён.
2026-10-01 16:30:15 +03:00
Фёдоров Дмитрий 20cfe276d3 fix 2025-03-25 23:24:29 +03:00
Фёдоров Дмитрий e4b5ae99b4 add lampainit.my.js 2025-03-25 23:17:00 +03:00
Фёдоров Дмитрий 280c0b8acc fix 2025-03-25 12:54:22 +03:00
3 changed files with 51 additions and 33 deletions
+8 -6
View File
@@ -2,29 +2,30 @@
## О проекте ## О проекте
Это **deployment-репозиторий** для локального развёртывания Lampac NextGen (активный форк заброшенного Lampac) в Docker на этой машине. Исходники форка сюда не клонируются — используется официальный образ `ghcr.io/lampac-nextgen/lampac`. Это **deployment-репозиторий** для локального развёртывания Lampac NextGen (активный форк заброшенного Lampac) в Docker на **Synology NAS**. Исходники форка сюда не клонируются — используется официальный образ `ghcr.io/lampac-nextgen/lampac`.
**Ветка `synology` (текущая)** — как `main`, но `docker-compose.yaml` с **абсолютными путями томов NAS**: `/volume1/docker/lampac/...` (данные проекта), `/volume4/Torrents` (медиа DLNA), `/volume1/homes/prodik/NAS/Курсы` → `/lampac/data/dlna/Cources:ro`. Локального каталога `dlna/` в репо нет — медиа живут на томах.
- Форк: https://github.com/lampac-nextgen/lampac (347+ звёзд, ежедневные коммиты, релизы) - Форк: https://github.com/lampac-nextgen/lampac (347+ звёзд, ежедневные коммиты, релизы)
- Документация: https://docs.lampac.dev - Документация: https://docs.lampac.dev
- Образ: `ghcr.io/lampac-nextgen/lampac:latest` (multi-arch: amd64/arm64) - Образ: `ghcr.io/lampac-nextgen/lampac:latest` (multi-arch: amd64/arm64)
- Порт: **9118**, рабочая директория в контейнере: `/lampac` - Порт: **9118**, рабочая директория в контейнере: `/lampac`
- Последняя задеплоенная версия: `1.61.2` (при установке 01.10.2026) - Последняя задеплоенная версия: `1.61.2` (при установке 01.10.2026)
- Git: `ssh://git@gitea.prodik.ru:222/prodik/lampac.git`, основная ветка **main** (ветка `synology` — старая, не трогать); remote настроен как `origin` - Git: `ssh://git@gitea.prodik.ru:222/prodik/lampac.git`, ветка **synology** (эта); `main` — то же самое с относительными путями томов; remote настроен как `origin`
- Коммиты: `git add -A && git commit && git push origin main` — секреты/данные отсекает `.gitignore`; в git идут только compose, `init.conf`, `modules/`, доки, `.gitignore` - Коммиты: `git add -A && git commit && git push origin synology` — секреты/данные отсекает `.gitignore`; в git идут только compose, `init.conf`, `modules/`, доки, `.gitignore`
## Файлы ## Файлы
| Файл | Назначение | Правила | | Файл | Назначение | Правила |
| --- | --- | --- | | --- | --- | --- |
| `docker-compose.yaml` | Единственный compose-файл | тома обязательны; фиксированной сети/subnet нет (дефолтная сеть compose) | | `docker-compose.yaml` | Единственный compose-файл | **абсолютные пути томов NAS** (`/volume1/docker/lampac/...`, `/volume4/Torrents`, `Курсы`); фиксированной сети/subnet нет (дефолтная сеть compose) |
| `config/init.conf` | Конфиг сервера (JSON) | hot-reload для большинства ключей (кроме `BaseModule.SkipModules` — нужен рестарт); строго валидный JSON | | `config/init.conf` | Конфиг сервера (JSON) | hot-reload для большинства ключей (кроме `BaseModule.SkipModules` — нужен рестарт); строго валидный JSON |
| `config/passwd` | Пароль root, **секрет** | не выводить в чат/логи/коммиты, в `.gitignore` | | `config/passwd` | Пароль root, **секрет** | не выводить в чат/логи/коммиты, в `.gitignore` |
| `modules/*/manifest.json` | Manifest-оверрайды (`enable: true`) | монтируются поверх `/lampac/module/<Name>/manifest.json`; для модулей, у которых в образе `enable: false` (сейчас: `Tracks`, `Music`, `Tg-notify.bot`, `AdminPanel`) | | `modules/*/manifest.json` | Manifest-оверрайды (`enable: true`) | монтируются поверх `/lampac/module/<Name>/manifest.json`; для модулей, у которых в образе `enable: false` (сейчас: `Tracks`, `Music`, `Tg-notify.bot`, `AdminPanel`) |
| `modules/LampaWeb/plugins/extensions.json` | Каталог магазина плагинов (`/extensions`) | override образного файла, добавлена секция «Lampac» (DLNA); после правки сбросить кеш `cache/static/63/` | | `modules/LampaWeb/plugins/extensions.json` | Каталог магазина плагинов (`/extensions`) | override образного файла, добавлена секция «Lampac» (DLNA); после правки сбросить кеш `cache/static/63/` |
| `cache/` | Кеш | монтируется в `/lampac/cache` | | `cache/` | Кеш | монтируется в `/lampac/cache` |
| `database/` | SQLite-БД (Sync, TimeCode, SISI) | монтируется в `/lampac/database`, не удалять | | `database/` | SQLite-БД (Sync, TimeCode, SISI) | монтируется в `/lampac/database`, не удалять |
| `dlna/` | Медиа/превью DLNA | монтируется в `/lampac/data/dlna`, не удалять | | `.gitignore` | Игнорируемые пути | в игноре: `config/passwd` (секрет), `cache/`, `database/`, `.DS_Store`; остальное (init.conf, modules/, compose, доки) — переносимое |
| `.gitignore` | Игнорируемые пути | в игноре: `config/passwd` (секрет), `cache/`, `database/`, `dlna/`, `.DS_Store`; остальное (init.conf, modules/, compose, доки) — переносимое |
| `README.md` / `AGENT.md` | Документация | обновлять при любых изменениях развёртывания | | `README.md` / `AGENT.md` | Документация | обновлять при любых изменениях развёртывания |
## Основные команды ## Основные команды
@@ -75,6 +76,7 @@ curl -fsS -o /dev/null -w '%{http_code}\n' http://localhost:9118/online.js # о
## Troubleshooting ## Troubleshooting
- **Контейнер нестабилен / Chromium падает** — проверить `shm_size: 1024mb` в compose (обязательно для Playwright). - **Контейнер нестабилен / Chromium падает** — проверить `shm_size: 1024mb` в compose (обязательно для Playwright).
- **Пути томов** — в этой ветке compose использует абсолютные пути NAS (`/volume1/docker/lampac/...`, `/volume4/Torrents`); при переносе на другой хост их обязательно заменить. Относительные пути — в ветке `main`.
- **Не стартует после правки init.conf** — проверить JSON: `python3 -m json.tool config/init.conf`; бэкапы в `/lampac/database/backup/init/`. - **Не стартует после правки init.conf** — проверить JSON: `python3 -m json.tool config/init.conf`; бэкапы в `/lampac/database/backup/init/`.
- **Модуль не загрузился** — смотреть `docker compose logs lampac | grep -E "skip compilation|loaded module"`; для модулей с `enable: false` в образе проверить manifest-оверрайд и его монтирование в compose. - **Модуль не загрузился** — смотреть `docker compose logs lampac | grep -E "skip compilation|loaded module"`; для модулей с `enable: false` в образе проверить manifest-оверрайд и его монтирование в compose.
- **Tg-notify молчит** — нужен `bot_token` в секции `TelegramBot` init.conf (без него long polling не стартует, в логе предупреждение). - **Tg-notify молчит** — нужен `bot_token` в секции `TelegramBot` init.conf (без него long polling не стартует, в логе предупреждение).
+28 -13
View File
@@ -1,7 +1,9 @@
# Lampac NextGen — self-hosted backend для Lampa (Docker) # Lampac NextGen — self-hosted backend для Lampa (Docker, Synology NAS)
Локальное развёртывание **[Lampac NextGen](https://github.com/lampac-nextgen/lampac)** — активного форка оригинального Lampac, чей основной репозиторий больше не поддерживается. Локальное развёртывание **[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**: Оригинальный Lampac (`Mirrowol/Lampac`) давно не обновляется. Из форков наибольшую популярность набрал **lampac-nextgen/lampac**:
@@ -21,8 +23,8 @@
## Структура проекта ## Структура проекта
```text ```text
Lampac/ /volume1/docker/lampac/ # корень проекта на NAS
├── docker-compose.yaml # Единственный compose-файл (порт 9118) ├── docker-compose.yaml # compose-файл (порт 9118, абсолютные пути томов)
├── config/ ├── config/
│ ├── init.conf # Конфигурация сервера (JSON, hot-reload) │ ├── init.conf # Конфигурация сервера (JSON, hot-reload)
│ └── passwd # Пароль root (СЕКРЕТ, не коммитить) │ └── passwd # Пароль root (СЕКРЕТ, не коммитить)
@@ -32,14 +34,25 @@ Lampac/
│ ├── Tg-notify.bot/manifest.json │ ├── Tg-notify.bot/manifest.json
│ ├── AdminPanel/manifest.json │ ├── AdminPanel/manifest.json
│ └── LampaWeb/plugins/extensions.json # каталог магазина плагинов (+DLNA) │ └── LampaWeb/plugins/extensions.json # каталог магазина плагинов (+DLNA)
├── cache/ # Кеш (монтируется в /lampac/cache) ├── cache/ # Кеш (→ /lampac/cache)
├── database/ # SQLite-БД: Sync, TimeCode, SISI (→ /lampac/database) ├── database/ # SQLite-БД: Sync, TimeCode, SISI (→ /lampac/database)
├── dlna/ # Данные DLNA (медиа/превью, → /lampac/data/dlna)
├── README.md # Эта документация ├── README.md # Эта документация
├── AGENT.md # Инструкции для AI-агента ├── AGENT.md # Инструкции для AI-агента
└── .gitignore └── .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`). Требования: Docker 24+ с Compose v2 (проверка: `docker compose version`).
@@ -158,11 +171,11 @@ docker compose pull
docker compose up -d docker compose up -d
``` ```
Данные (`init.conf`, `passwd`, `cache/`, `database/`, `modules/`, `dlna/`) переживают обновление, т.к. смонтированы томами. Данные (`init.conf`, `passwd`, `cache/`, `database/`, `modules/`) переживают обновление, т.к. смонтированы томами с абсолютными путями NAS.
## Перенос на другой сервер ## Перенос на другой сервер
Игнорируемые пути (`.gitignore`): `config/passwd`, `cache/`, `database/`, `dlna/`, `.DS_Store`. Игнорируемые пути (`.gitignore`): `config/passwd`, `cache/`, `database/`, `.DS_Store`.
**Копировать обязательно:** **Копировать обязательно:**
@@ -178,12 +191,11 @@ README.md AGENT.md .gitignore
```bash ```bash
database/ # закладки Sync, позиции TimeCode, SISI, библиотека Music database/ # закладки Sync, позиции TimeCode, SISI, библиотека Music
dlna/ # медиа/превью DLNA
``` ```
**Не копировать** — регенерируется автоматически: `cache/`, содержимое `/lampac/data` внутри контейнера (GeoLite2, ffmpeg/ffprobe, бинарник TorrServer, Lampa UI). **Не копировать** — регенерируется автоматически: `cache/`, содержимое `/lampac/data` внутри контейнера (GeoLite2, ffmpeg/ffprobe, бинарник TorrServer, Lampa UI). Медиа DLNA лежат на томах NAS (`/volume4/Torrents`, `Курсы`) и копируются отдельно по необходимости.
Порядок переноса: скопировать файлы → `docker compose up -d` → health-check: `curl "http://localhost:9118/version?type=hash"`. Порт 9118 и пути в compose относительные — правок не требуется. Порядок переноса: скопировать файлы → **в `docker-compose.yaml` заменить абсолютные пути томов на новые** → `docker compose up -d` → health-check: `curl "http://localhost:9118/version?type=hash"`. Порт 9118 менять не обязательно.
## Полезные команды ## Полезные команды
@@ -204,16 +216,19 @@ docker compose pull && docker compose up -d # обновление до све
## Git-репозиторий ## Git-репозиторий
Код проекта хранится в Gitea: `ssh://git@gitea.prodik.ru:222/prodik/lampac.git` (ветка `main`; ветка `synology` — старая, не используется). Код проекта хранится в Gitea: `ssh://git@gitea.prodik.ru:222/prodik/lampac.git`.
- **`main`** — основная ветка: относительные пути томов (подходит для любого сервера).
- **`synology`** (эта ветка) — то же содержимое, но `docker-compose.yaml` адаптирован под Synology NAS: абсолютные пути `/volume1/docker/lampac/...`, тома `/volume4/Torrents` и `Курсы`.
```bash ```bash
git remote -v # origin должен указывать на этот репозиторий git remote -v # origin должен указывать на этот репозиторий
git add -A # секреты/данные не попадут (.gitignore) git add -A # секреты/данные не попадут (.gitignore)
git commit -m "описание" git commit -m "описание"
git push origin main git push origin synology
``` ```
В git попадают только: `docker-compose.yaml`, `config/init.conf`, `modules/**`, `README.md`, `AGENT.md`, `.gitignore`. Секреты (`passwd`), `cache/`, `database/`, `dlna/` — в `.gitignore`. В git попадают только: `docker-compose.yaml`, `config/init.conf`, `modules/**`, `README.md`, `AGENT.md`, `.gitignore`. Секреты (`passwd`), `cache/`, `database/` — в `.gitignore`.
## Ссылки ## Ссылки
+15 -14
View File
@@ -8,18 +8,19 @@ services:
ports: ports:
- 9118:9118 - 9118:9118
restart: unless-stopped restart: unless-stopped
shm_size: 1024mb shm_size: 4096mb
logging: # logging:
options: # options:
tag: "{{.Name}}" # tag: "{{.Name}}"
volumes: volumes:
- ./config/passwd:/lampac/passwd - /volume1/docker/lampac/config/passwd:/lampac/passwd
- ./config/init.conf:/lampac/init.conf - /volume1/docker/lampac/config/init.conf:/lampac/init.conf
- ./cache:/lampac/cache - /volume1/docker/lampac/cache:/lampac/cache
- ./database:/lampac/database - /volume1/docker/lampac/database:/lampac/database
- ./modules/Tracks/manifest.json:/lampac/module/Tracks/manifest.json:ro - /volume1/docker/lampac/modules/Tracks/manifest.json:/lampac/module/Tracks/manifest.json:ro
- ./modules/Music/manifest.json:/lampac/module/Music/manifest.json:ro - /volume1/docker/lampac/modules/Music/manifest.json:/lampac/module/Music/manifest.json:ro
- ./modules/Tg-notify.bot/manifest.json:/lampac/module/Tg-notify.bot/manifest.json:ro - /volume1/docker/lampac/modules/Tg-notify.bot/manifest.json:/lampac/module/Tg-notify.bot/manifest.json:ro
- ./modules/AdminPanel/manifest.json:/lampac/module/AdminPanel/manifest.json:ro - /volume1/docker/lampac/modules/AdminPanel/manifest.json:/lampac/module/AdminPanel/manifest.json:ro
- ./modules/LampaWeb/plugins/extensions.json:/lampac/module/LampaWeb/plugins/extensions.json:ro - /volume1/docker/lampac/modules/LampaWeb/plugins/extensions.json:/lampac/module/LampaWeb/plugins/extensions.json:ro
- ./dlna:/lampac/data/dlna - /volume4/Torrents:/lampac/data/dlna
- /volume1/homes/prodik/NAS/Курсы:/lampac/data/dlna/Cources:ro