How to Install Jellyfin Media Streaming Server
This guide covers installing and configuring Jellyfin Media Server on:
- Windows 10 / 11
- Windows Server
- Debian 13 / Debian-based Linux
Jellyfin is a self-hosted media server for streaming your own:
Movies
TV Shows
Music
Photos
Home Videos
to browsers, mobile devices, TVs, Kodi, and Jellyfin client applications.
Official Jellyfin packages are available for both Windows and Linux. (Jellyfin)
System Requirements
Jellyfin can run on modest hardware if clients can Direct Play the media.
Transcoding requires substantially more processing power.
Recommended General Server
CPU: Modern 4-thread CPU or better
RAM: 8 GB recommended
OS Disk: 100 GB SSD recommended
Media: HDD / SSD / NAS storage
Network: Gigabit Ethernet recommended
Jellyfin's current hardware guide recommends 8 GB RAM for a typical deployment, though 4 GB may be enough for a headless Linux server. It also recommends an SSD for the OS, Jellyfin metadata, and transcoding cache. (Jellyfin)
Recommended Transcoding Hardware
A GPU or supported integrated GPU is strongly recommended if the server will transcode video.
Jellyfin supports hardware-accelerated transcoding with modern:
Intel
NVIDIA
AMD
Apple
Rockchip
GPUs where supported. (Jellyfin)
For a new Linux Jellyfin server, Intel integrated graphics are particularly convenient because of their hardware transcoding support and relatively straightforward Linux driver setup. (Jellyfin)
Example:
Intel N100
Intel UHD Graphics
8 GB RAM
SSD for Jellyfin
HDD/NAS for media
is suitable for many small home/media-server installations.
Network Requirements
Default Jellyfin ports:
8096/TCP HTTP
8920/TCP HTTPS
7359/UDP Client discovery
The default web interface is:
http://SERVER_IP:8096
These are Jellyfin's documented default ports. (Jellyfin)
Example:
http://192.168.1.50:8096
Media Directory Example
A clean media structure is recommended.
Example:
Media/
├── Movies/
│ ├── Interstellar (2014)/
│ │ └── Interstellar (2014).mkv
│ │
│ └── Inception (2010)/
│ └── Inception (2010).mkv
│
├── TV/
│ └── Breaking Bad/
│ ├── Season 01/
│ │ ├── S01E01.mkv
│ │ └── S01E02.mkv
│ │
│ └── Season 02/
│
├── Music/
│
└── Photos/
Windows Installation
1. Download Jellyfin
Download the latest Windows installer from the official Jellyfin download page.
Jellyfin's official Windows instructions recommend downloading and running the current Windows installer. (Jellyfin)
2. Run Installer
Run:
jellyfin_*.exe
Follow the installation wizard.
A normal installation places Jellyfin under:
C:\Program Files\Jellyfin\
Depending on the installation mode, application data is commonly stored beneath:
C:\ProgramData\Jellyfin\
The documented Windows service setup uses:
C:\Program Files\Jellyfin\Server
C:\ProgramData\Jellyfin\Server
(Jellyfin)
3. Service or Tray Application
Jellyfin can run as:
Desktop / tray application
or:
Windows Service
For a dedicated Windows Server, a service can be useful because Jellyfin starts when Windows boots.
The official installer supports installing Jellyfin as a Windows service, although Jellyfin's standard Windows documentation currently notes that service installation is optional and not the recommended default. (Jellyfin)
4. Open Jellyfin
After installation, open:
http://localhost:8096
From another device:
http://WINDOWS_SERVER_IP:8096
Example:
http://192.168.1.50:8096
The official setup flow uses port 8096. (Jellyfin)
5. Windows Firewall
If necessary, allow Jellyfin:
New-NetFirewallRule `
-DisplayName "Jellyfin HTTP" `
-Direction Inbound `
-Protocol TCP `
-LocalPort 8096 `
-Action Allow
For client discovery:
New-NetFirewallRule `
-DisplayName "Jellyfin Discovery" `
-Direction Inbound `
-Protocol UDP `
-LocalPort 7359 `
-Action Allow
Windows Media Storage Example
Suppose the server has:
D:\Media
with:
D:\Media\Movies
D:\Media\TV
D:\Media\Music
During Jellyfin setup, create libraries pointing to those directories.
Network Share on Windows
Example:
\\NAS01\Media\Movies
If Jellyfin runs as a Windows service, make sure the service account has permission to access the network share.
Mapped drive letters such as:
Z:\
may not be visible to Windows services.
Prefer UNC paths:
\\NAS01\Media
Linux Installation — Debian 13
Jellyfin provides an official installation script for Debian, Ubuntu, and derivatives which configures the Jellyfin repository and installs the required packages. (Jellyfin)
1. Update Debian
sudo apt update
sudo apt upgrade -y
2. Install Jellyfin
The official Jellyfin Debian/Ubuntu installer can be downloaded and run with:
curl https://repo.jellyfin.org/install-debuntu.sh | sudo bash
The script handles repository configuration and Jellyfin installation for supported Debian/Ubuntu systems. (Jellyfin)
3. Check Jellyfin Service
sudo systemctl status jellyfin
Expected:
Active: active (running)
Enable at boot:
sudo systemctl enable jellyfin
Start:
sudo systemctl start jellyfin
Restart:
sudo systemctl restart jellyfin
Stop:
sudo systemctl stop jellyfin
4. Open Jellyfin
From the server:
http://localhost:8096
From another machine:
http://SERVER_IP:8096
Example:
http://10.10.10.20:8096
Jellyfin uses TCP 8096 as its default HTTP port. (Jellyfin)
Linux Media Directory
Example:
sudo mkdir -p /mnt/media/movies
sudo mkdir -p /mnt/media/tv
sudo mkdir -p /mnt/media/music
Example layout:
/mnt/media/
├── movies/
├── tv/
└── music/
Give Jellyfin Permission
The Jellyfin service normally runs under its own user.
Check:
ps aux | grep jellyfin
A clean approach is to create a shared media group.
sudo groupadd media
Add Jellyfin:
sudo usermod -aG media jellyfin
Add your administrator account:
sudo usermod -aG media $USER
Change media group:
sudo chgrp -R media /mnt/media
Set permissions:
sudo chmod -R 775 /mnt/media
Restart Jellyfin:
sudo systemctl restart jellyfin
Linux Firewall
If UFW is enabled:
sudo ufw allow 8096/tcp
For discovery:
sudo ufw allow 7359/udp
If using Jellyfin's HTTPS listener:
sudo ufw allow 8920/tcp
The documented default ports are 8096/TCP, 8920/TCP, and 7359/UDP. (Jellyfin)
Initial Jellyfin Setup
Open:
http://SERVER_IP:8096
The setup wizard will guide you through:
Language
Administrator account
Media libraries
Metadata language
Remote access
Libraries can be added during the setup wizard or later from the administration interface. (Jellyfin)
Add Movie Library
Go to:
Dashboard
→ Libraries
→ Add Media Library
Select:
Movies
Linux example:
/mnt/media/movies
Windows example:
D:\Media\Movies
Add TV Library
Linux:
/mnt/media/tv
Windows:
D:\Media\TV
Hardware Transcoding
Go to:
Dashboard
→ Playback
→ Transcoding
Hardware acceleration can significantly reduce CPU usage when Jellyfin needs to convert video for a client. (Jellyfin)
Intel GPU — Linux
Check GPU:
lspci | grep -Ei 'vga|display'
Check render devices:
ls -l /dev/dri
Typical output:
card0
renderD128
Jellyfin supports Intel hardware acceleration through technologies including Quick Sync Video (QSV) and VA-API. (Jellyfin)
For a Jellyfin server, Intel graphics are generally a strong choice on Linux. (Jellyfin)
NVIDIA GPU
Check:
nvidia-smi
Jellyfin supports NVIDIA hardware acceleration using:
NVENC / NVDEC
on supported GPUs. (Jellyfin)
In Jellyfin:
Dashboard
→ Playback
→ Transcoding
→ Hardware acceleration
→ NVIDIA NVENC
AMD GPU
Jellyfin supports AMD hardware acceleration using platform-specific APIs such as:
VA-API
AMF
depending on the operating system. (Jellyfin)
Direct Play vs Transcoding
Direct Play
Best case:
Jellyfin
│
│ original media
▼
Client
No video conversion occurs.
This provides:
Low CPU usage
Low GPU usage
Original quality
Transcoding
If the client cannot play the source codec or bitrate:
Original Video
│
▼
Jellyfin
│
▼
FFmpeg Transcoding
│
▼
Client-compatible Video
This can use substantial CPU without hardware acceleration.
Jellyfin strongly recommends suitable GPU hardware because software video transcoding, particularly HDR tone mapping, can be extremely demanding. (Jellyfin)
Transcoding Cache
The transcoding cache should preferably live on an SSD.
Example Linux directory:
/var/cache/jellyfin/transcodes
For servers performing multiple simultaneous transcodes, make sure sufficient temporary disk space is available.
Jellyfin recommends SSD-backed storage for Jellyfin's own files and transcoding cache. (Jellyfin)
Networking Recommendation
For a media server, prefer:
Server
│
│ Gigabit Ethernet
▼
Router / Switch
rather than:
Server
│
│ Wi-Fi
▼
Router
Jellyfin's hardware guidance recommends Gigabit Ethernet or faster and advises against Wi-Fi or powerline networking for the server itself. (Jellyfin)
Remote Streaming
Do not simply expose:
8096
directly to the Internet unless you understand the security implications.
Jellyfin's documentation recommends keeping the server behind an appropriate firewall/security boundary rather than directly exposing the Jellyfin server itself to the Internet. (Jellyfin)
A better architecture is:
Internet
│
▼
HTTPS :443
│
▼
Reverse Proxy
Nginx / Caddy
│
▼
127.0.0.1:8096
│
▼
Jellyfin
Jellyfin provides official reverse-proxy guidance for this configuration. (Jellyfin)
Domain Example
DNS:
jellyfin.example.com
│
▼
Public IP
Reverse proxy:
https://jellyfin.example.com
│
▼
127.0.0.1:8096
Remote Access Through VPN
Another good option is:
Tailscale
WireGuard
OpenVPN
For example:
Remote Device
│
▼
Tailscale
│
▼
Jellyfin Server
100.x.x.x:8096
Jellyfin maintains official documentation for accessing Jellyfin over Tailscale. (Jellyfin)
Upload Bandwidth
Remote streaming depends heavily on server upload bandwidth.
Jellyfin currently recommends at least:
20 Mbps upload
for remote access as a general baseline. (Jellyfin)
For multiple simultaneous remote streams, considerably more bandwidth may be required.
Useful Linux Commands
Check Jellyfin:
sudo systemctl status jellyfin
Restart:
sudo systemctl restart jellyfin
Logs:
sudo journalctl -u jellyfin
Follow logs:
sudo journalctl -u jellyfin -f
Last 100 lines:
sudo journalctl -u jellyfin -n 100
Update Jellyfin — Linux
Because Jellyfin is installed through its APT repository:
sudo apt update
sudo apt upgrade
will install available Jellyfin package updates along with other system upgrades. Jellyfin documents APT-based upgrades for Debian/Ubuntu repository installations. (Jellyfin)
Update Jellyfin — Windows
Download the current Jellyfin Windows installer.
Stop Jellyfin if running, then execute the newer installer.
The official Windows update instructions use this process. (Jellyfin)
Recommended Linux Setup
Debian 13
│
├── Jellyfin
│
├── Intel iGPU / NVIDIA GPU
│
├── SSD
│ ├── OS
│ ├── Jellyfin metadata
│ └── Transcoding cache
│
└── Media Storage
├── HDD
├── RAID
└── NAS
Network:
Jellyfin
│
│ Gigabit Ethernet
▼
LAN
For external access:
Internet
│
▼
HTTPS :443
│
▼
Nginx / Caddy
│
▼
Jellyfin :8096
Recommended Windows Setup
Windows 11 / Windows Server
│
├── Jellyfin Server
│
├── Intel / NVIDIA GPU
│
├── SSD
│ └── Jellyfin + Transcoding
│
└── Media
├── D:\Media
│
└── NAS
Quick Install — Debian 13
sudo apt update
sudo apt upgrade -y
curl https://repo.jellyfin.org/install-debuntu.sh | sudo bash
Then:
sudo systemctl enable --now jellyfin
Open:
http://SERVER_IP:8096
Quick Install — Windows
- Download the current Jellyfin Windows installer.
- Run the installer.
- Complete installation.
- Open:
http://localhost:8096
From another computer:
http://WINDOWS_SERVER_IP:8096
This matches Jellyfin's current official Windows installation flow. (Jellyfin)
Summary
Linux
curl https://repo.jellyfin.org/install-debuntu.sh | sudo bash
Then:
http://SERVER_IP:8096
Windows
Install using the official Jellyfin Windows installer.
Then:
http://WINDOWS_SERVER_IP:8096
Recommended Hardware
8 GB RAM
SSD for Jellyfin/cache
Gigabit Ethernet
Intel iGPU or supported discrete GPU
Large HDD/NAS for media
For servers expected to transcode video, hardware acceleration is strongly recommended. (Jellyfin)
References
Official Jellyfin Windows installation documentation. (Jellyfin)
Official Jellyfin Linux installation documentation. (Jellyfin)
Official Jellyfin networking documentation. (Jellyfin)
Official Jellyfin hardware selection and hardware acceleration documentation. (Jellyfin)





