mediapi/systemd/mediapi-mpv.service.template
Jean-Michel Tremblay ed9da9a065 Extract config into .env; add deploy.sh with overlay guard + rollback
- 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>
2026-07-05 22:06:47 -04:00

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