Jump to content

Installing Jellyfin: Difference between revisions

From ThinkServer
m Installing Jellyfin: Added missing sudo, correct gz to xz
m Install jellyfin-ffmpeg: Bumped to latest version
 
(8 intermediate revisions by the same user not shown)
Line 1: Line 1:
Jellyfin is a free and open-source media server and suite of multimedia applications designed to organize, manage, and share digital media files to networked devices.
Jellyfin is a free and open-source media server and suite of multimedia applications designed to organize, manage, and share digital media files to networked devices.


An RPM package is not provided for openSUSE so Jellyfin must be installed from the Linux manual install tarball. This guide will explain how to do this. This guide is written with the current version of Jellyfin 10.10.7.
An RPM package is not provided for openSUSE so Jellyfin must be installed from the Linux manual install tarball. This guide will explain how to do this. This guide is written with the current version (at the time of writing) of Jellyfin 10.10.7.


== What you need to know ==
== What you need to know ==
Line 23: Line 23:
* Create the directory <code>sudo mkdir /opt/jellyfin</code>
* Create the directory <code>sudo mkdir /opt/jellyfin</code>
* Move into the directory <code>cd /opt/jellyfin</code>
* Move into the directory <code>cd /opt/jellyfin</code>
* Download the latest tarball from the [https://repo.jellyfin.org/?path=/server/linux/latest-stable/amd64 Jellyfin website] - for example, <code>sudo wget https://repo.jellyfin.org/files/server/linux/latest-stable/amd64/jellyfin_10.10.7-amd64.tar.xz</code>
* Download the latest tarball from the [https://repo.jellyfin.org/?path=/server/linux/latest-stable/amd64 Jellyfin website] - for example, <code>sudo wget https://repo.jellyfin.org/files/server/linux/latest-stable/amd64/jellyfin_10.11.3-amd64.tar.xz</code>
* Unzip the tar archive, <code>sudo tar Jxvf jellyfin_10.10.7-amd64.tar.xz</code>
* Unzip the tar archive, <code>sudo tar Jxvf jellyfin_10.11.3-amd64.tar.xz</code>
* We need to create the script to run Jellyfin and run it as a service. Open <code>sudo nano jellyfin.sh</code> and add the following to the script file:
* We need to create the script to run Jellyfin and run it as a service. Open <code>sudo nano jellyfin.sh</code> and add the following to the script file:
  #!/bin/bash
  #!/bin/bash
Line 36: Line 36:
   -l $JELLYFINDIR/log \
   -l $JELLYFINDIR/log \
   --ffmpeg $FFMPEGDIR/ffmpeg
   --ffmpeg $FFMPEGDIR/ffmpeg
* Press Ctrl+W then Y to save the file
* Press {{key press|Ctrl|W}} then {{key press|Y}} and {{key press|Enter}} to save the file
* Run <code>sudo chmod +x jellyfin.sh</code> to make the script executable
* Run <code>sudo chmod +x jellyfin.sh</code> to make the script executable


Line 58: Line 58:
  WantedBy=multi-user.target
  WantedBy=multi-user.target


* Press Ctrl+W then Y to save the file
* Press {{key press|Ctrl|W}} then {{key press|Y}} and {{key press|Enter}} to save the file
* Correct the permissions of the service file <code>sudo chmod 644 jellyfin.service</code>
* Correct the permissions of the service file <code>sudo chmod 644 jellyfin.service</code>


== Install <code>jellyfin-ffmpeg</code> ==
== Install <code>jellyfin-ffmpeg</code> ==


openSUSE does not come with an FFMpeg version that includes propriety formats such as H.264 and H.265/HEVC. We need to install <code>jellyfin-ffmpeg</code> which includes these formats and is tailored for hardware encoding for Jellyfin. A few dependencies need installing first.
openSUSE does not come with an FFmpeg version that includes propriety formats such as H.264 and H.265/HEVC. We need to install <code>jellyfin-ffmpeg</code> which includes these formats and is tailored for hardware encoding for Jellyfin. A few dependencies need installing first.


* We need to add the Packman repository that includes the dependencies we need <code>sudo zypper addrepo -cfp 90 'https://ftp.gwdg.de/pub/linux/misc/packman/suse/openSUSE_Leap_$releasever/' packman</code>
* We need to add the Packman repository that includes the dependencies we need <code>sudo zypper addrepo -cfp 90 'https://ftp.gwdg.de/pub/linux/misc/packman/suse/openSUSE_Leap_$releasever/' packman</code>
Line 71: Line 71:
* Install the base packages need to compile <code>jellyfin-ffmpeg</code>: <code>sudo zypper in gcc make yasm</code>
* Install the base packages need to compile <code>jellyfin-ffmpeg</code>: <code>sudo zypper in gcc make yasm</code>
* Move to your home downloads folder <code>cd ~/Downloads</code>
* Move to your home downloads folder <code>cd ~/Downloads</code>
* Download the <code>jellyfin-ffmpeg</code> from [https://github.com/jellyfin/jellyfin-ffmpeg/releases GitHub]. Ensure that the version is compatible with the version of Jellyfin you have installed (sometimes you may have to use an older ffmpeg package, depending on the version of Jellyfin you are installing) - for example Jellyfin 10.10.7 is compatible with the latest <code>jellyfin-ffmpeg</code> package 7.1.2-2. Download the source tar.gz package with <code>wget https://github.com/jellyfin/jellyfin-ffmpeg/archive/refs/tags/v7.1.2-2.tar.gz</code>.
* Download the <code>jellyfin-ffmpeg</code> from [https://github.com/jellyfin/jellyfin-ffmpeg/releases GitHub]. Ensure that the version is compatible with the version of Jellyfin you have installed (sometimes you may have to use an older ffmpeg package, depending on the version of Jellyfin you are installing) - for example Jellyfin 10.11.3 is compatible with the latest <code>jellyfin-ffmpeg</code> package 7.1.2-4. Download the source tar.gz package with <code>wget https://github.com/jellyfin/jellyfin-ffmpeg/archive/refs/tags/v7.1.2-4.tar.gz</code>.
'''Tip:''' You may need to expand the Assets tab to show the downloadable packages.
'''Tip:''' You may need to expand the Assets tab to show the downloadable packages.
* Extract the package with <code>tar zxvf v7.1.2-2.tar.gz</code>
* Extract the package with <code>tar zxvf v7.1.2-4.tar.gz</code>
* Move into the folder created <code>cd jellyfin-ffmpeg-7.1.2-2</code>
* Move into the folder created <code>cd jellyfin-ffmpeg-7.1.2-4</code>
* Run <code>./configure --prefix=/usr/share/jellyfin-ffmpeg --enable-libx264 --enable-libx265 --enable-libsvtav1 --enable-gpl</code>.
* Run <code>./configure --prefix=/usr/share/jellyfin-ffmpeg --enable-libx264 --enable-libx265 --enable-libsvtav1 --enable-gpl</code>.
This will configure the package to be installed to <code>/usr/share/jellyfin-ffmeg</code> with H.264, H.265/HEVC and AV1. Due to H.264 and H.265/HEVC being licensed under a GPL license, the whole package will be licensed under GPL which is enabled by the switch. This can be configured as needed by adding/removing switches.
This will configure the package to be installed to <code>/usr/share/jellyfin-ffmeg</code> with H.264, H.265/HEVC and AV1. Due to H.264 and H.265/HEVC being licensed under a GPL license, the whole package will be licensed under GPL which is enabled by the switch. This can be configured as needed by adding/removing switches.
Line 80: Line 80:
* Run <code>sudo make install</code> to install
* Run <code>sudo make install</code> to install


== Inital run and starting the service ==
== Initial run and starting the service ==


We need to run Jellyfin so that the initial directories needed for running are created.
We need to run Jellyfin so that the initial directories needed for running are created.
Line 86: Line 86:
* Move back into the Jellyfin directory and initially run the Jellyfin script created earlier <code>sudo ./jellyfin.sh</code>
* Move back into the Jellyfin directory and initially run the Jellyfin script created earlier <code>sudo ./jellyfin.sh</code>
* Check that it runs correctly with no errors (indicated by <code>[ERR]</code> or <code>[FTL]</code>in red
* Check that it runs correctly with no errors (indicated by <code>[ERR]</code> or <code>[FTL]</code>in red
* Once it has started, close the script by pressing Ctrl+C
* Once it has started, close the script by pressing {{key press|Ctrl|C}}
* Reload the system daemons to allow the service to load <code>sudo systemctl daemon-reload</code>
* Reload the system daemons to allow the service to load <code>sudo systemctl daemon-reload</code>
* Run the Jellyfin service and check it starts <code>sudo systemctl start jellyfin</code>
* Run the Jellyfin service and check it starts <code>sudo systemctl start jellyfin</code>
Line 94: Line 94:


Jellyfin is configured through the web browser. Open a web browser and go to the following address: <code>http://localhost:8096</code>. You should get the first run installer after installation is complete.
Jellyfin is configured through the web browser. Open a web browser and go to the following address: <code>http://localhost:8096</code>. You should get the first run installer after installation is complete.
'''Tip:''' If you are reinstalling and starting from scratch, run a private window of your browser to set the server up or it will keep trying to connect to the old server from before. You may need to delete the site settings to get it working again.

Latest revision as of 10:32, 17 November 2025

Jellyfin is a free and open-source media server and suite of multimedia applications designed to organize, manage, and share digital media files to networked devices.

An RPM package is not provided for openSUSE so Jellyfin must be installed from the Linux manual install tarball. This guide will explain how to do this. This guide is written with the current version (at the time of writing) of Jellyfin 10.10.7.

What you need to know

You will need to download the following:

  • Jellyfin Generic Linux Server package
  • jellyfin-ffmpegtarball

The following packages need installing:

  • gcc
  • make
  • yasm

The following packages need installing from Packman:

  • libx264-devel - required
  • libx265-devel - optional for H.265/HEVC transcoding
  • SVT-AV1-devel - optional for AV1 transcoding

Installing Jellyfin

#!/bin/bash
JELLYFINDIR="/opt/jellyfin"
FFMPEGDIR="/usr/share/jellyfin-ffmpeg/bin"

$JELLYFINDIR/jellyfin/jellyfin \
 -d $JELLYFINDIR/data \
 -C $JELLYFINDIR/cache \
 -c $JELLYFINDIR/config \
 -l $JELLYFINDIR/log \
 --ffmpeg $FFMPEGDIR/ffmpeg
  • Press Ctrl+W then Y and ↵ Enter to save the file
  • Run sudo chmod +x jellyfin.sh to make the script executable

Install service script

This will guide you on how to create a script to start Jellyfin as a service on startup.

  • Move to cd /etc/systemd/system
  • We need to create the script to run Jellyfin as a service. Open sudo nano jellyfin.service and add the following to the script file:
[Unit]
Description=Jellyfin
After=network.target

[Service]
Type=simple
User=root
Restart=always
ExecStart=/opt/jellyfin/jellyfin.sh

[Install]
WantedBy=multi-user.target
  • Press Ctrl+W then Y and ↵ Enter to save the file
  • Correct the permissions of the service file sudo chmod 644 jellyfin.service

Install jellyfin-ffmpeg

openSUSE does not come with an FFmpeg version that includes propriety formats such as H.264 and H.265/HEVC. We need to install jellyfin-ffmpeg which includes these formats and is tailored for hardware encoding for Jellyfin. A few dependencies need installing first.

  • We need to add the Packman repository that includes the dependencies we need sudo zypper addrepo -cfp 90 'https://ftp.gwdg.de/pub/linux/misc/packman/suse/openSUSE_Leap_$releasever/' packman
  • Refresh zypper to load the new repositories sudo zypper ref. Accept the keys needed for the repositories.
  • Install the base proprietary codecs sudo zypper install --allow-vendor-change --from packman ffmpeg gstreamer-plugins-{good,bad,ugly,libav} libavcodec vlc-codecs
  • Install the dependency packages depending on what you need: sudo zypper in libx264-devel libx265-devel SVT-AV1-devel. Allow any extra dependencies these may require.
  • Install the base packages need to compile jellyfin-ffmpeg: sudo zypper in gcc make yasm
  • Move to your home downloads folder cd ~/Downloads
  • Download the jellyfin-ffmpeg from GitHub. Ensure that the version is compatible with the version of Jellyfin you have installed (sometimes you may have to use an older ffmpeg package, depending on the version of Jellyfin you are installing) - for example Jellyfin 10.11.3 is compatible with the latest jellyfin-ffmpeg package 7.1.2-4. Download the source tar.gz package with wget https://github.com/jellyfin/jellyfin-ffmpeg/archive/refs/tags/v7.1.2-4.tar.gz.

Tip: You may need to expand the Assets tab to show the downloadable packages.

  • Extract the package with tar zxvf v7.1.2-4.tar.gz
  • Move into the folder created cd jellyfin-ffmpeg-7.1.2-4
  • Run ./configure --prefix=/usr/share/jellyfin-ffmpeg --enable-libx264 --enable-libx265 --enable-libsvtav1 --enable-gpl.

This will configure the package to be installed to /usr/share/jellyfin-ffmeg with H.264, H.265/HEVC and AV1. Due to H.264 and H.265/HEVC being licensed under a GPL license, the whole package will be licensed under GPL which is enabled by the switch. This can be configured as needed by adding/removing switches.

  • Run make. This will compile the code and may take a while
  • Run sudo make install to install

Initial run and starting the service

We need to run Jellyfin so that the initial directories needed for running are created.

  • Move back into the Jellyfin directory and initially run the Jellyfin script created earlier sudo ./jellyfin.sh
  • Check that it runs correctly with no errors (indicated by [ERR] or [FTL]in red
  • Once it has started, close the script by pressing Ctrl+C
  • Reload the system daemons to allow the service to load sudo systemctl daemon-reload
  • Run the Jellyfin service and check it starts sudo systemctl start jellyfin
  • If you'd like Jellyfin to run on startup, run sudo systemctl enable jellyfin

Configuring Jellyfin

Jellyfin is configured through the web browser. Open a web browser and go to the following address: http://localhost:8096. You should get the first run installer after installation is complete.

Tip: If you are reinstalling and starting from scratch, run a private window of your browser to set the server up or it will keep trying to connect to the old server from before. You may need to delete the site settings to get it working again.