Over 10 years we help companies reach their financial and branding goals. Engitech is a values-driven technology agency dedicated.

Gallery

Contacts

411 University St, Seattle, USA

+1 -800-456-478-23

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

  1. Download the current Jellyfin Windows installer.
  2. Run the installer.
  3. Complete installation.
  4. 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)

Leave a comment

Your email address will not be published. Required fields are marked *