Документация: развёртывание на Proxmox LXC 121 (SMB mp0, override-том DLNA)

This commit is contained in:
2026-10-01 18:27:57 +03:00
parent 0073100ab3
commit 8dcbc6bc52
3 changed files with 45 additions and 1 deletions
+31
View File
@@ -185,6 +185,37 @@ dlna/ # медиа/превью DLNA
Порядок переноса: скопировать файлы → `docker compose up -d` → health-check: `curl "http://localhost:9118/version?type=hash"`. Порт 9118 и пути в compose относительные — правок не требуется.
## Развёртывание на Proxmox (LXC)
Постоянный продакшн: LXC-контейнер `121` (`lampac`) на Proxmox `192.168.88.254`, IP контейнера **192.168.88.23** (DHCP).
| Параметр | Значение |
| --- | --- |
| Шаблон | `local:vztmpl/debian-13-standard_13.6-1_amd64.tar.zst` |
| Тип | **unprivileged**, `features: nesting=1,keyctl=1` (нужно Docker), `onboot: 1` |
| Ресурсы | 2 cores / 4096 MB / 32 GB (`local-lvm`), swap 512 |
| Сеть | `vmbr0`, DHCP → `192.168.88.23` |
| Docker | `docker.io` + compose v2-плагин в `/usr/local/lib/docker/cli-plugins/docker-compose` |
| Проект | `/opt/lampac` (rsync с рабочей машины, `.git` не копируется) |
| Доступ | SSH по ключу `~/.ssh/id_rsa_prodik` (pubkey в `/root/.ssh/authorized_keys` контейнера) |
**SMB для DLNA** — `\\10.6.0.1\Torrents`:
- Монтируется **на хосте Proxmox** в `/mnt/torrents` (fstab, `credentials=/root/.smb_cred`, **umask 600** на креды) и пробрасывается в контейнер как `mp0: /mnt/torrents`.
- Причина: unprivileged LXC **не может монтировать cifs сам** — ядро требует `CAP_SYS_ADMIN` в init user namespace (`mount error: Operation not permitted`, не AppArmor).
- `uid=101000,gid=101000` в fstab: маппинг LXC `0→100000`, поэтому в контейнере файлы видны как `1000:1000` — приложение (`lampac`, uid 1000) может писать превью в `thumbs/`.
- Том подключён через **`docker-compose.override.yml`** (не в git): `services.lampac.volumes: [/mnt/torrents:/lampac/data/dlna]` — базовый `docker-compose.yaml` остаётся с `./dlna`, rsync-обновления его не ломают.
**Проверка после развёртывания:**
```bash
ssh root@192.168.88.23
cd /opt/lampac && docker compose up -d
docker ps --filter name=lampac # healthy
for u in "/version?type=hash" /online.js /ts/ /dlna /extensions; do
curl -s -o /dev/null -w "%{http_code} $u\n" "http://127.0.0.1:9118$u"; done # все 200
```
## Полезные команды
```bash