Jump to content
Search

The new Ubuntu Wiki is live. Legacy content may be unavailable and page links may have changed. Read the announcement on Discourse.

Stream media at home with Ubuntu Server

From Ubuntu Wiki

This guide guides you through installing Jellyfin on Ubuntu Server, running on a Raspberry Pi, and setting it up for local streaming of music to devices on your home network.

Common setup

It's possible to run Jellyfin on Ubuntu Desktop, Server, or WSL; however, a common home setup is to run it on a small computer, such as a Raspberry Pi, running an OS like Ubuntu Server. This kind of setup is optimal for 24/7 running of a service that you might want to access at any point in the day.

Before you start

Make sure you have:

  • Ubuntu Server installed on your Raspberry Pi: Install Ubuntu on Raspberry Pi via PC
  • The ability to SSH into the Pi from your PC (alternatively, you can use a monitor/keyboard/mouse connected to the Pi)

Install Jellyfin

Download install script

SSH into your Pi and download the official Jellyfin install script that is available for Ubuntu and Debian:

curl -s https://repo.jellyfin.org/install-debuntu.sh -O

Verify checksum

When running an install script like this, it's also good practice to download its checksum file:

curl -s https://repo.jellyfin.org/install-debuntu.sh.sha256sum -O

For security, you can verify it hasn't been altered before running it:

sha256sum -c install-debuntu.sh.sha256sum

You should see install-debuntu.sh: OK.

If you do, proceed to the next step.

Run the install script

Run the script you downloaded with:

sudo bash install-debuntu.sh

The script will detect your system and print information about it. Confirm the details are correct and continue by pressing the Enter key:

Found the following details from '/etc/os-release':
  Real OS:            ubuntu
  Repository OS:      ubuntu
  Repository Release: resolute
  CPU Architecture:   arm64
If this looks correct, press <Enter> now to continue installing Jellyfin.

The installation may take a few minutes depending on your network and hardware.

Jellyfin will start automatically once it finishes.

Confirm Jellyfin is running

Check the service status with:

sudo systemctl status jellyfin

You should see output similar to this:

● jellyfin.service - Jellyfin Media Server
     Loaded: loaded (/usr/lib/systemd/system/jellyfin.service; enabled; preset: enabled)
    Drop-In: /etc/systemd/system/jellyfin.service.d
             └─jellyfin.service.conf
     Active: active (running) since Sat 2026-09-12 13:42:11 IST; 15s ago
 Invocation: d0719b374c6445eb82a6585cf553aa99
   Main PID: 1997 (jellyfin)
      Tasks: 53 (limit: 19148)
     Memory: 195.2M (peak: 195.8M)
        CPU: 26.478s
     CGroup: /system.slice/jellyfin.service
             ├─1997 /usr/bin/jellyfin --webdir=/usr/share/jellyfin/web --ffmpeg=/usr/lib/jellyfin-…
             └─2082 /usr/lib/jellyfin-ffmpeg/ffmpeg -hide_banner -f lavfi -i nullsrc=s=1x1:d=10000…

The important line is Active: active (running). If your output doesn't show that, see the Jellyfin community for troubleshooting help.

Prepare your media sources

Tip
It is common to mount external storage for storing media, due to the large file sizes involved. The steps should be the same, just use the path to your mounted storage.

Create a directory for your music if it doesn't already exist. For example:

sudo mkdir -p /media/music

Jellyfin runs as its own user called jellyfin, and it needs permission to read your music folder.

sudo chown jellyfin:jellyfin /media/music
sudo chmod 750 /media/music

Put your music in the folder in an appropriate hierarchical structure, for example:

  • /media/books/
  • /media/movies/
  • /media/music/
    • Artist A
      • Album A1
      • Album A2
      • ...
    • Artist B
      • Album B1
      • Album B2
      • ...
  • /media/shows/
Note
Jellyfin supports multiple media types, including music, TV shows, movies, and books.

Find your server's address

You'll need this to reach Jellyfin from a web browser.

Run the following command on the Pi:

hostname -I

Note the first IP address shown.

Open the Jellyfin setup wizard

On any device on your home network, open a web browser and go to:

http://<YOUR_PI_IP>:8096

Follow the on-screen setup wizard:

  1. Choose your display language
  2. Create an admin username and password
  3. When asked to add a media library, choose Music as the content type, and find or enter the path to your music folder
  4. Click Finish

(optional) Allow access through the firewall

If your Pi has a firewall enabled (UFW), open the Jellyfin port:

sudo ufw allow 8096/tcp

If you haven't set up UFW, you can skip this step.

Stream your music

From any device on your home network:

  • Web browser: go to http://<YOUR_PI_IP>:8096 and log in
  • Phone or tablet: install a Jellyfin app from your app store, then enter your server's address and log in
  • Smart TV or streaming box: search for the Jellyfin app in your device's app store

Troubleshooting

  • Can't reach the web page: double-check the IP address with hostname -I and make sure your device is on the same network
  • Library shows no music: re-check folder permissions, then in Jellyfin go to Dashboard > Libraries and click Scan All Libraries
  • Service not running: check its status with sudo systemctl status jellyfin and see Step 2 for what a healthy status looks like

Next steps

Alternative setups using containers

This guide installs Jellyfin directly onto Ubuntu Server with the installer script provided by the developers.

Container technologies such as Docker (often via Docker Compose) or LXD are also commonly used to run Jellyfin and other services. These can offer benefits like easier updates, cleaner removal, and better isolation from the rest of the system.

Stream media outside your home network

To listen to music from your server outside of your home network, you need a solution like tailscale, which is relatively easy to set up.