halkyon/deploy/compose.jellyfin.yaml
Tizian 「ティツィアーン」 2218695dcf
feat(deploy)!: Jellyfin on halkyon.li as the sidecar, ADR 0032's home end gone (ADR 0039, D15)
The Jellyfin sidecar takes its library from a folder on the host where .env
names one (JELLYFIN_MEDIA, read-only), else from deploy/jellyfin/media as
before. On halkyon.li that is /data/media: the library moves out of the
developer's home, which Jellyfin's own user can't enter. The sidecar README
says how the home end's configuration, accounts and libraries move in, with
its network settings corrected for Caddy before it starts.

BREAKING CHANGE: compose.jellyfin-home.yaml, deploy/home-jellyfin/ and
jellyfin.caddy's JELLYFIN_UPSTREAM are gone with ADR 0032, whose server end
retires with learn.halkyon.eu's server; it was never brought up.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-11-08 19:59:40 +01:00

46 lines
2 KiB
YAML

# The Jellyfin sidecar (decided 2026-10-14): a Jellyfin server beside the instance, which
# people watch and listen to learn from (Halkyon Learn's Watch screen), suggested to them
# by the instance. Switched on in .env, with the domain it answers at:
#
# COMPOSE_FILE=compose.learn.yaml:compose.jellyfin.yaml
# JELLYFIN_DOMAIN=jellyfin.example.org
#
# Its files are the server's, in ./jellyfin (config, cache, media), owned by a user ID
# of its own; or the media in a folder elsewhere on the host that .env names
# (JELLYFIN_MEDIA, readable by all: halkyon.li's /data/media, ADR 0039, D15). The user ID
# is one no person, no other container and not the CI runner uses: processes
# of one user ID can read each other's environment and files. Setting it up, and the
# demo account: sidecars/README.md.
services:
jellyfin:
# v12.2, the version Halkyon Learn's Jellyfin feature is checked with.
image: jellyfin/jellyfin@sha256:357724bf0ae27a672c7cbaa899db2d9abeb13dbd8657ccce750258a4c059d037
restart: unless-stopped
user: "61096:61096"
environment:
JELLYFIN_PublishedServerUrl: https://${JELLYFIN_DOMAIN:?set JELLYFIN_DOMAIN in deploy/.env}
volumes:
- ./jellyfin/config:/config
- ./jellyfin/cache:/cache
- ${JELLYFIN_MEDIA:-./jellyfin/media}:/media:ro
# On `edge` alone, beside Caddy and the server's public API, never beside Postgres;
# no published port. A fixed address, for the admin's SSH tunnel (sidecars/README.md).
networks:
edge:
ipv4_address: 172.30.80.10
# Videos stream as stored (the app asks for static=true): nothing is transcoded.
mem_limit: 768m
logging:
driver: journald
caddy:
environment:
JELLYFIN_DOMAIN: ${JELLYFIN_DOMAIN:?set JELLYFIN_DOMAIN in deploy/.env}
volumes:
- ./sidecars/jellyfin.caddy:/etc/caddy/sidecars/jellyfin.caddy:ro
server:
environment:
# The instance suggests this Jellyfin, rather than looking for one.
JELLYFIN_URL: https://${JELLYFIN_DOMAIN:?set JELLYFIN_DOMAIN in deploy/.env}/