Jellyfin is a software solution that enables you to collect, manage, and stream your media. You can stream to any device from your own server, with no strings attached – enjoy full control over your media content. Jellyfin server can be installed on Linux, macOS and Windows. Some NAS solutions such as Synology also support the installation of Jellyfin media server on top of it.
Jellyfin supports the following types of content.
- Movies: Enjoy your entire movie collection, easy to browse and with beautiful artwork.
- Music: Listen to music, your artists and your playlists, at home or on the go.
- TV Shows: Watch your favorite shows, automatically sorted by season and ready to binge.
- Live TV & DVR: Watch TV and set automatic recordings to expand your library.
- Books: Read your books, comics, and magazines.
- SyncPlay: Sharing a movie night remotely has never been so easy.
- Photos: Organize your photos and share memories with your friends and family.
In this article we perform the installation and configuration of Jellyfin Media Server on Ubuntu or Debian. The Jellyfin team supports 3rd-party Ubuntu and Debian repositories with the latest Jellyfin packages.
Install Jellyfin Media Server
Install the dependencies required.
sudo apt update
sudo apt install curl gpg gnupg2 software-properties-common apt-transport-https lsb-release ca-certificates
On Ubuntu and its derivatives, enable Universe repository to obtain all the FFmpeg dependencies:
# Run only on Ubuntu
sudo add-apt-repository universe
Install GPG signing key (signed by the Jellyfin Team) in your local system.
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://repo.jellyfin.org/jellyfin_team.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/jellyfin.gpg
Export OS version, OS codename, and CPU architecture as variables.
export VERSION_OS="$( awk -F'=' '/^ID=/{ print $NF }' /etc/os-release )"
export VERSION_CODENAME="$( awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release )"
export DPKG_ARCHITECTURE="$( dpkg --print-architecture )"
You can confirm saved values.
echo $VERSION_OS
echo $VERSION_CODENAME
echo $DPKG_ARCHITECTURE
Add Jellyfin repository configuration
sudo tee /etc/apt/sources.list.d/jellyfin.sources<<EOF
Types: deb
URIs: https://repo.jellyfin.org/${VERSION_OS}
Suites: ${VERSION_CODENAME}
Components: main
Architectures: ${DPKG_ARCHITECTURE}
Signed-By: /etc/apt/keyrings/jellyfin.gpg
EOF
Update your APT repositories:
$ sudo apt update
Hit:1 http://security.debian.org/debian-security bookworm-security InRelease
Hit:2 http://deb.debian.org/debian bookworm InRelease
Hit:3 http://deb.debian.org/debian bookworm-updates InRelease
Hit:4 http://mirror.hetzner.com/debian/packages bookworm InRelease
Hit:5 http://mirror.hetzner.com/debian/packages bookworm-updates InRelease
Hit:6 http://mirror.hetzner.com/debian/security bookworm-security InRelease
Get:7 https://repo.jellyfin.org/debian bookworm InRelease [6,639 B]
Get:8 https://fra1.mirror.jellyfin.org/debian bookworm/main amd64 Packages [1,982 B]
Fetched 8,621 B in 2s (5,076 B/s)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
We can now install the Jellyfin metapackage. This will automatically fetch the various sub-packages:
sudo apt install jellyfin
Start and enable the services.
sudo systemctl start jellyfin.service && sudo systemctl enable jellyfin.service
Initial configuration of Jellyfin Media Server
The service is listening on port 8096:
$ ss -tunelp|grep 8096
tcp LISTEN 0 512 0.0.0.0:8096 0.0.0.0:* users:(("jellyfin",pid=2849,fd=310)) uid:114 ino:30938 sk:9 cgroup:/system.slice/jellyfin.service <->
The configuration can be found at /usr/share/jellyfin/web/config.json
Perform initial Jellyfin Media Server setup by going to http://ServerIP:8096. Choose your preferred language in the first page.

Next create an admin user account.

You can add media library now or choose to configure it later.

The default metadata language can also be set.

Consider to enable remote access if remote connections will be requred.

And that’s all you should provide to configure Jellyfin. Click Finish to finalize.

Then login to your Jellyfin dashboard using created username and the password.

In our next article we will discuss on securing access to Jellyfin Media Server using Nginx or Apache Proxy with Let’s Encrypt SSL certificate.
Jellyfin directories:
- /var/lib/jellyfin/: configuration and data directories.
$ ls -1 /var/lib/jellyfin/
data
metadata
plugins
root
transcodes
- /etc/jellyfin/system.xml: Initial setup configuration. If you want to reconfigure afresh. Change as follows
# From
<IsStartupWizardCompleted>true</IsStartupWizardCompleted>
# To
<IsStartupWizardCompleted>flase</IsStartupWizardCompleted>