- Move user-specific config (login, media roots, port, AP ssid/psk, service user) into a gitignored .env; add .env.example template. - config.py reads .env at startup via a tiny zero-dependency parser (works for both `uv run` and systemd), and fails loudly if required vars are unset. - load_secret_key falls back to an ephemeral key on a read-only filesystem instead of crashing. - systemd units become .template files; deploy.sh renders them with the .env-derived user/paths. - deploy.sh: refuses to run on a read-only overlay, git pull --ff-only, uv sync, ensure secret key, re-apply the AP from .env, install units, restart, health-check with automatic rollback to the previous commit. - Scrub literal credentials/ssid out of the README; document .env + deploy.sh. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
24 lines
498 B
Text
24 lines
498 B
Text
[Unit]
|
|
Description=mpv persistent player (DRM/HDMI output, JSON IPC)
|
|
After=local-fs.target
|
|
|
|
[Service]
|
|
Type=simple
|
|
User=${MEDIAPI_USER}
|
|
SupplementaryGroups=video render
|
|
RuntimeDirectory=mediapi
|
|
RuntimeDirectoryMode=0770
|
|
ExecStart=/usr/bin/mpv \
|
|
--idle=yes \
|
|
--input-ipc-server=/run/mediapi/mpv.sock \
|
|
--vo=gpu-next --gpu-context=drm \
|
|
--hwdec=auto-safe \
|
|
--fullscreen \
|
|
--no-terminal \
|
|
--keep-open=no \
|
|
--ao=alsa
|
|
Restart=on-failure
|
|
RestartSec=2
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|