59 lines
2.4 KiB
YAML
59 lines
2.4 KiB
YAML
|
|
# Jellyfin at home (ADR 0032): the home end, on the operator's own machine, which
|
||
|
|
# learn.halkyon.eu's server publishes as jellyfin.halkyon.eu (compose.jellyfin-home.yaml).
|
||
|
|
# WireGuard dials out to the instance's server, so the router opens nothing; Jellyfin
|
||
|
|
# lives in WireGuard's network namespace, so it listens on the tunnel and on this
|
||
|
|
# machine's loopback alone, and is not on the home network (no DLNA, no discovery).
|
||
|
|
# Run here, as the operator: `docker compose up -d`. Setting it up:
|
||
|
|
# ../sidecars/README.md, *Jellyfin at home*. Its folders are git-ignored: the tunnel's
|
||
|
|
# key (wireguard/), Jellyfin's configuration and cache (jellyfin/), and .env.
|
||
|
|
|
||
|
|
name: halkyon-home-jellyfin
|
||
|
|
|
||
|
|
services:
|
||
|
|
wireguard:
|
||
|
|
# linuxserver/wireguard 1.0.20260223-r0-ls126 (15 Oct 2026), its client mode: it
|
||
|
|
# brings up wireguard/wg_confs/wg0.conf with the host's kernel module.
|
||
|
|
image: lscr.io/linuxserver/wireguard@sha256:6bcf5d2f5a265c7e9835eaadd989938e681aabe8bf8bcd4556b61d463da6555c
|
||
|
|
restart: unless-stopped
|
||
|
|
cap_add:
|
||
|
|
- NET_ADMIN
|
||
|
|
sysctls:
|
||
|
|
- net.ipv4.conf.all.src_valid_mark=1
|
||
|
|
environment:
|
||
|
|
PUID: "61096"
|
||
|
|
PGID: "61096"
|
||
|
|
volumes:
|
||
|
|
- ./wireguard:/config
|
||
|
|
# Jellyfin's port, which lives here: on this machine's loopback alone, for its
|
||
|
|
# admin and for Halkyon Learn on this machine over plain HTTP (D2).
|
||
|
|
ports:
|
||
|
|
- 127.0.0.1:8096:8096
|
||
|
|
networks:
|
||
|
|
- outside
|
||
|
|
|
||
|
|
jellyfin:
|
||
|
|
# As the sidecar's (../compose.jellyfin.yaml): v12.2, the version Halkyon Learn's
|
||
|
|
# Jellyfin feature is checked with.
|
||
|
|
image: jellyfin/jellyfin@sha256:357724bf0ae27a672c7cbaa899db2d9abeb13dbd8657ccce750258a4c059d037
|
||
|
|
restart: unless-stopped
|
||
|
|
# As on the instance's server: a user ID no person and no other container uses.
|
||
|
|
user: "61096:61096"
|
||
|
|
network_mode: service:wireguard
|
||
|
|
depends_on:
|
||
|
|
- wireguard
|
||
|
|
environment:
|
||
|
|
# Never a home address in what Jellyfin hands out (D8).
|
||
|
|
JELLYFIN_PublishedServerUrl: https://jellyfin.halkyon.eu
|
||
|
|
volumes:
|
||
|
|
- ./jellyfin/config:/config
|
||
|
|
- ./jellyfin/cache:/cache
|
||
|
|
- ${JELLYFIN_MEDIA:?set JELLYFIN_MEDIA in deploy/home-jellyfin/.env}:/media:ro
|
||
|
|
|
||
|
|
networks:
|
||
|
|
# Out to the internet, for the tunnel and Jellyfin's metadata. A fixed subnet, so
|
||
|
|
# Jellyfin's LAN networks can name its gateway alone, through which this machine's
|
||
|
|
# loopback reaches it (D8).
|
||
|
|
outside:
|
||
|
|
ipam:
|
||
|
|
config:
|
||
|
|
- subnet: 172.29.96.0/24
|