Dec 05, 2025 · Homelab / Beginner · ~2 MIN READ
Build a Private Media Server with Jellyfin
Stream your own legally obtained media collection across your home network, with real backup and remote-access planning.
Who This Is For
Beginner to intermediate.
Think of it like your own living-room movie shelf, streamed to any TV in the house, except you already own everything on it and never have to drive anywhere to rent it.
What You’ll Build
Jellyfin streams a home video or legally owned media file to a browser or supported device.
Prerequisites
- Docker host
- Sufficient storage for a media library
Architecture
Organize media folders predictably before importing anything:
Folder Layout
$ /media/movies/
$ /media/tv/
$ /media/music/
$ /media/home-videos/
Deploy with Docker Compose
$ services:
$ jellyfin:
$ image: jellyfin/jellyfin:latest
$ ports: ["8096:8096"]
$ volumes:
$ - ./config:/config
$ - /media:/media:ro
Map Media Read-Only
Mount the media library read-only into the container, Jellyfin only needs to read it, and this prevents an app bug from ever touching your originals.
Create Libraries
In the setup wizard, point Jellyfin at each media folder and let it scan and fetch metadata.
Hardware Acceleration
Enable GPU/iGPU transcoding in playback settings if your hardware supports it, direct play (no transcoding) is always fastest when the client supports the source format natively.
Backup Strategy
- Server configuration
- Watch history and user accounts
- The media library itself (per your normal backup plan)
Remote Access
Prefer VPN access for remote streaming; a reverse proxy works too but needs the same security planning as any other public-facing service.
Security & Backup Notes
- Only stream media you actually have the legal right to store and play, this article assumes a personal collection of home videos and legally owned media
Troubleshooting
- Media doesn’t appear, trigger a manual library scan; check the folder structure matches Jellyfin’s expected layout
- Wrong file permissions, the container user needs read access to the mounted media path
- Transcoding overload, too many simultaneous transcodes will overwhelm a weak CPU; enable hardware acceleration or limit concurrent streams
- Playback works locally but not remotely, check your remote-access setup (VPN or proxy), not Jellyfin itself
Lab Finish Line
Jellyfin streams a home video or legally owned media file to a browser or supported device.