2 KiB
2 KiB
jellyfin-stack
Self-hosted Jellyfin media server on nullstone, LAN-only.
Endpoint
https://tv.s8n.ru— accessible only from LAN (192.168.0.0/24) and Tailscale admin/infra tags via Traefikno-guest@filemiddleware.- DNS resolved internally by Pi-hole (
/opt/docker/pihole/etc-pihole/custom.list). - TLS via Let's Encrypt DNS-01 (Gandi).
Storage
| Path | Purpose |
|---|---|
/home/docker/jellyfin/config/ |
Jellyfin config + DB (writable, UID 1000) |
/home/docker/jellyfin/cache/ |
Transcode + image cache |
/home/user/media/movies/ |
Movies library (mounted RO) |
/home/user/media/tv/ |
TV library (mounted RO) |
Routing
Traefik docker-label provider does NOT pick up the labels on this container
(unknown reason — file-provider routing for the same backend works). The
deploy uses file-provider routing in
/opt/docker/traefik/config/jellyfin-test.yml. If you fix the docker-provider
issue later, flip routing back to labels and remove the file-provider snippet.
Transcoding
GTX 1660 Ti is present on nullstone but nvidia-smi currently fails — driver
is broken or not loaded. Jellyfin runs CPU-only transcode for now. After
fixing the driver, add the standard NVIDIA hwaccel block in compose:
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
…and enable NVENC in Jellyfin's Playback → Transcoding settings.
First-run setup
- Browse to
https://tv.s8n.rufrom the LAN. - Create the admin user (Jellyfin onboarding wizard).
- Add libraries pointing at
/media/moviesand/media/tvinside the container (these map to/home/user/media/{movies,tv}). - (Optional) Apply Netflix-style theme by pasting a community theme into Dashboard → General → Custom CSS.
Deploy
cd /opt/docker/jellyfin
docker compose up -d