Skip to content

Instantly share code, notes, and snippets.

@pjobson
Last active May 6, 2025 05:22
Show Gist options
  • Save pjobson/0846ab6e21f3b11ac4079bff313c3e6f to your computer and use it in GitHub Desktop.
Save pjobson/0846ab6e21f3b11ac4079bff313c3e6f to your computer and use it in GitHub Desktop.
Jellyfin Custom Install

Installing Jellyfin

I do things a bit more custom on my server than most folks.

Using the install-debuntu.sh script, I was running into an issue where jellyfin would not start properly, due to the included ffmpeg not working.

I was getting this error when running sudo systemctl status jellyfin.service

MediaBrowser.Common.FfmpegException: Failed to find valid ffmpeg

The status also showed it was trying to start with its own ffmpeg install.

/usr/bin/jellyfin --webdir=/usr/share/jellyfin/web --ffmpeg=/usr/lib/jellyfin-ffmpeg/ffmpeg

Attempting to run this ffmpeg directly /usr/lib/jellyfin-ffmpeg/ffmpeg would throw this error.

/usr/lib/jellyfin-ffmpeg/ffmpeg: symbol lookup error: /lib/x86_64-linux-gnu/libopenmpt.so.0: undefined symbol: mpg123_param2

Searching that error as "jellyfin" symbol lookup error: /lib/x86_64-linux-gnu/libopenmpt.so.0: undefined symbol: mpg123_param2 returns one item with no useful solution.

Uninstall Jellyfin

If you've already installed and can't start, purge it.

sudo apt purge jellyfin* -y

Reinstall Jellyfin

sudo apt update
sudo apt install jellyfin-server jellyfin-web
sudo systemctl stop jellyfin.service

Install or Build FFMPEG

You can install ffmpeg with apt or you can build your own from source, I always build my own for reasons. Building it is outside of the scope of this gist.

sudo apt install ffmpeg

Update FFMPEG Path

Find your ffmpeg install.

locate ffmpeg
which ffmpeg

Edit /etc/default/jellyfin

Find JELLYFIN_FFMPEG_OPT

Update it to your path.

Change Paths & Make Symlinks

I have a large ZFS datastore in a /dvr path, so I don't want jellyfin's cache or anything in my root path.

cd /var/lib
sudo mv jellyfin /dvr/
sudo ln -s /dvr/jellyfin jellyfin
cd /var/cache
sudo mv jellyfin/ /dvr/jellyfin/cache/
sudo ln -s /dvr/jellyfin/cache/ jellyfin
sudo chown -R jellyfin:jellyfin /dvr/jellyfin/
sudo chown g+s /dvr/jellyfin

Restart Jellyfin

sudo systemctl restart jellyfin.service
sudo systemctl status jellyfin.service

This should return something like this.

● jellyfin.service - Jellyfin Media Server
     Loaded: loaded (/lib/systemd/system/jellyfin.service; enabled; vendor preset: enabled)
    Drop-In: /etc/systemd/system/jellyfin.service.d
             └─jellyfin.service.conf
     Active: active (running) since Fri 2025-05-02 00:07:03 EDT; 6s ago
   Main PID: 4124592 (jellyfin)
      Tasks: 18 (limit: 309281)
     Memory: 424.0M
        CPU: 4.293s
     CGroup: /system.slice/jellyfin.service
             └─4124592 /usr/bin/jellyfin --webdir=/usr/share/jellyfin/web --ffmpeg=/opt/video/bin/ffmpeg

Navigate to: http://localhost:8096

Enjoy!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment