Jellyfin Media Server
What It Is
A Jellyfin media server running on TrueNAS, streaming movies and TV shows to devices across the home network. Clients include Roku TVs, phones, and desktop browsers.
Setup
Jellyfin runs as a containerized app on TrueNAS. Media files are stored on ZFS datasets — separate datasets for movies and TV shows, which keeps things organized and makes permission management straightforward.
The Jellyfin web UI handles library scanning, metadata fetching, and user management. Each household member has their own account with individual watch history and preferences.
Custom Login Page
The default Jellyfin login page works fine, but I customized the styling to match the rest of the homelab’s aesthetic. Custom CSS injected through Jellyfin’s built-in branding settings — no forking the project or modifying container files.
Client Access
- Roku: Jellyfin app from the Roku Channel Store. Reliable playback for most formats; direct play for compatible codecs, software transcoding for others.
- Phone: Jellyfin mobile app (iOS/Android) for on-the-go streaming over Tailscale.
- PC/Browser: Jellyfin web player — no app install needed.
All remote access goes through Tailscale, same as the rest of the homelab. No port forwarding, no public DNS.
Storage
Media libraries sit on a dedicated ZFS pool. ZFS handles checksumming, compression, and snapshot-based backups. The library is included in the server-wide daily snapshot schedule (midnight, 2-week retention).