How to Set Up Jellyfin Media Server
Jellyfin is a free, open-source media server that lets you stream your personal movie, TV show, and music collections from your Breeze to any device. Unlike proprietary media servers, Jellyfin has no premium tiers, no tracking, and no restrictions. It supports hardware transcoding, live TV with DVR, and a rich ecosystem of client apps.
Prerequisites
- A Breeze instance with at least 2 GB of RAM (4 GB recommended for transcoding)
- Docker installed on your Breeze
- Media files organized in folders (Movies, TV Shows, Music)
- A domain or subdomain (e.g.,
media.example.com)
Step 1 — Organize Your Media
Create a clean directory structure that Jellyfin can scan effectively:
mkdir -p /data/media/{movies,tvshows,music}
# Movies: /data/media/movies/Movie Name (Year)/Movie Name (Year).mkv
# TV Shows: /data/media/tvshows/Show Name/Season 01/Show Name - S01E01.mkv
# Music: /data/media/music/Artist/Album/01 - Track.flac
Step 2 — Deploy Jellyfin with Docker
docker run -d \
--name jellyfin \
--restart unless-stopped \
-p 127.0.0.1:8096:8096 \
-v /data/jellyfin/config:/config \
-v /data/jellyfin/cache:/cache \
-v /data/media:/media:ro \
jellyfin/jellyfin:latest
The :ro flag mounts media as read-only, preventing accidental modifications through Jellyfin.
Step 3 — Initial Setup Wizard
Access Jellyfin at http://your-breeze-ip:8096 and walk through the setup wizard:
- Create your admin account with a strong password
- Add media libraries by pointing to the
/media/movies,/media/tvshows, and/media/musicdirectories - Select your preferred metadata language and enable automatic metadata downloading
- Configure remote access settings
Step 4 — Reverse Proxy Configuration
Set up Nginx to proxy Jellyfin with WebSocket support for live playback:
server {
listen 443 ssl http2;
server_name media.example.com;
location / {
proxy_pass http://127.0.0.1:8096;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering off;
}
location /socket {
proxy_pass http://127.0.0.1:8096;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
Step 5 — Client Apps
Jellyfin has client apps for virtually every platform:
- Web — the built-in web player works on any modern browser
- Android / iOS — official apps available on Google Play and App Store
- Android TV / Fire TV — dedicated TV interface for big-screen viewing
- Desktop — Jellyfin Media Player for Windows, macOS, and Linux
- Roku — community-maintained Roku channel
Hardware Transcoding
If your Breeze has a compatible GPU, you can enable hardware transcoding for smoother streaming. Go to Dashboard → Playback → Transcoding and select your hardware acceleration method (VAAPI for Intel, NVENC for NVIDIA). This dramatically reduces CPU usage when converting media formats on the fly.
Maintenance
- Schedule library scans via Dashboard → Scheduled Tasks
- Monitor transcoding logs for performance issues
- Back up the
/configdirectory to preserve your library metadata and user settings