furtka-apps/apps/jellyfin/docker-compose.yaml

39 lines
1.3 KiB
YAML
Raw Normal View History

# Furtka Jellyfin — media server.
#
# Two Docker-managed volumes (config, cache) for app state + one
# user-supplied host path (MEDIA_PATH) mounted read-only for the media
# library. Admin account bootstraps from the first browser visit to
# :8096 — that's why this app has no manifest.settings for admin creds.
#
# MEDIA_PATH is a `path`-type setting (furtka/manifest.py ≥ 26.10-alpha
# schema). The install form asks for it, the installer validates that
# the directory exists and isn't a system path, and docker-compose
# substitutes the value below at `docker compose up` time.
#
# TODO(image-pin): `:latest` is shaky for production — pin to a digest
# (`jellyfin/jellyfin@sha256:...`) or a stable tag once we've verified
# one against the upstream registry. MVP drift risk accepted.
#
# No HW transcoding yet — /dev/dri passthrough is a separate, later
# schema extension. 1080p software transcode + Direct Play over LAN
# are fine for the Medion-Haswell target.
services:
jellyfin:
image: jellyfin/jellyfin:latest
restart: unless-stopped
ports:
- "8096:8096"
environment:
- TZ=Europe/Berlin
volumes:
- furtka_jellyfin_config:/config
- furtka_jellyfin_cache:/cache
- ${MEDIA_PATH}:/media:ro
volumes:
furtka_jellyfin_config:
external: true
furtka_jellyfin_cache:
external: true