--- type: reference title: Jellyfin description: Jellyfin media server on Dankserver — quadlet unit, entropy-volume data layout, ports, client access, and hardware-transcode status. tags: [jellyfin, dankserver, media-server] timestamp: 2026-09-03T00:00:00Z --- # Jellyfin Jellyfin is the free media server on Dankserver — a podman quadlet service (`jellyfin.service`, generated from `dankserver/jellyfin/quadlet/jellyfin.container`) serving music, movies, and shows over LAN. It replaced the earlier research brief; it runs alongside [[Plex]], which remains the primary server for some clients. **Host:** Dankserver (192.168.0.235) — **Access:** `http://192.168.0.235:8096`, public vhost `jelly.franksdank.cloud` behind the [[Anubis]] guard chain → [[Authentik]] outpost (post-auth route proxies `localhost:8096`). ## Facts (verified from the live unit, 2026-09-03) | Item | Value | |------|-------| | Unit | `~/.config/containers/systemd/jellyfin.container` → `jellyfin.service` (user manager), `Restart=always`, `RestartSec=5` | | Image | `ghcr.io/jellyfin/jellyfin:latest` | | Network | `dankserver_appnet`; publishes 8096/tcp, 8920/tcp, 7359/udp, 1900/udp | | Data roots | `/home/dank/Containers/jellyfin/config:/config`, `/home/dank/Containers/jellyfin/cache:/cache` | | Media | `Volume=/mnt/entropy:/data:ro` — the whole [[Entropy Volume]] mounted read-only; nothing automated writes to it | | GPU | none — no `AddDevice`; CPU decode only (jellyfin-ffmpeg path) | | Env quirks | `DOTNET_SYSTEM_IO_DISABLEFILELOCKING=true`, `LD_PRELOAD=libjemalloc.so.2`, `MALLOC_TRIM_THRESHOLD_=131072` kept verbatim from the compose-era container (zero-drift cutover) | | Health | `curl -f http://localhost:8096/health` every 30 s | ## Data layout ``` /home/dank/Containers/jellyfin/config -> /config (JELLYFIN_DATA_DIR) /home/dank/Containers/jellyfin/cache -> /cache (JELLYFIN_CACHE_DIR, XDG_CACHE_HOME) /mnt/entropy -> /data (read-only media volume) ``` Library folders point at `/data` paths; because the mount uses the same absolute path as on the host, library paths survive container recreation. ## Ports & access | Port | Proto | Purpose | |------|-------|---------| | 8096 | TCP | Web UI + API (`JELLYFIN_PublishedServerUrl=http://192.168.0.235:8096`) | | 8920 | TCP | DLNA/UPnP root device control | | 7359 | UDP | service discovery (client auto-discovery) | | 1900 | UDP | SSDP discovery | Client access paths and the public-exposure policy (auth wall required before any public vhost; Plex-style claim tokens do not exist here — Jellyfin uses its own users/API keys) follow the fleet [[Authentik]]/[[Anubis]] chain pattern. ## Configuration workflow 1. Create libraries pointing at `/data` folders (movies, shows, audio). 2. Set metadata/language preferences (`LANG=en_US.UTF-8` pinned in the unit). 3. Configure clients to use `http://192.168.0.235:8096` or the guarded vhost. ## See Also - [[Plex]] — co-resident media server on the same volume - [[Entropy Volume]] — the 91 T array mounted read-only at `/data` - [[Caddy]] · [[Anubis]] · [[Authentik]] — edge chain for `jelly.franksdank.cloud`