Manual Installation
Portable Windows Package
Portable Windows Install
-
Download and extract the latest version.
-
Create a folder
jellyfin
at your preferred install location. -
Copy the extracted folder into the
jellyfin
folder and rename it tosystem
. -
Create
jellyfin.bat
within yourjellyfin
folder containing:- To use the default library/data location at
%localappdata%
:
<--Your install path-->\jellyfin\system\jellyfin.exe
- To use a custom library/data location (Path after the -d parameter):
<--Your install path-->\jellyfin\system\jellyfin.exe -d <--Your install path-->\jellyfin\data
- To use a custom library/data location (Path after the -d parameter) and disable the auto-start of the webapp:
<--Your install path-->\jellyfin\system\jellyfin.exe -d <--Your install path-->\jellyfin\data -noautorunwebapp
- To use the default library/data location at
-
Run
jellyfin.bat
-
Open your browser at
http://<--Server-IP-->:8096
.
Portable Windows Update
- Stop Jellyfin
- Rename the Jellyfin
system
folder tosystem-bak
- Download and extract the latest Jellyfin version
- Copy the extracted folder into the
jellyfin
folder and rename it tosystem
- Run
jellyfin.bat
to start the server again
Portable Windows Rollback
- Stop Jellyfin.
- Delete the
system
folder. - Rename
system-bak
tosystem
. - Run
jellyfin.bat
to start the server again.
Portable macOS package
Installing the Portable macOS Version
- Download the latest version of Jellyfin.
- Extract it into the Applications folder.
- Open Terminal and type
cd
followed with a space then drag the jellyfin folder into the terminal. - Type
xattr -rd com.apple.quarantine .
to remove the quarantine flag. - Type
codesign -fs - --deep jellyfin
to create an ad-hoc signature for the server. - Type
./jellyfin
to run jellyfin. - Open your browser at http://localhost:8096.
Closing the terminal window will end Jellyfin. Running Jellyfin in screen or tmux can prevent this from happening.
Updating the Portable macOS Version
- Download the latest version.
- Stop the currently running server either via the dashboard or using
CTRL+C
in the terminal window. - Extract the latest version into Applications
- Open Terminal and type
cd
followed with a space then drag the jellyfin folder into the terminal. - Type
xattr -rd com.apple.quarantine .
to remove the quarantine flag. - Type
codesign -fs - --deep jellyfin
to create an ad-hoc signature for the server. - Type
./jellyfin
to run jellyfin. - Open your browser at http://localhost:8096
Uninstalling the Portable macOS Version
- Stop the currently running server either via the dashboard or using
CTRL+C
in the terminal window. - Move
/Application/jellyfin-version
folder to the Trash. Replace version with the actual version number you are trying to delete. - Delete the folder
~/.config/jellyfin/
- Delete the folder
~/.local/share/jellyfin/
Using FFmpeg with the Portable macOS Version
The portable version doesn't come with FFmpeg by default. There are a few options for installing FFmpeg:
- download jellyfin-ffmpeg from the Jellyfin repo (recommended)
- use the package manager homebrew by typing
brew install ffmpeg
into your Terminal (here's how to install homebrew if you don't have it already - download the most recent static build (compiled by a third party see evermeet.cx for options and information) (Apple Silicon builds are not available from this source)
- compile from source available from the official website
Once downloaded, remove the quarantine flag for the ffmpeg
and ffprobe
.
Ensure that both ffmpeg
and ffprobe
are located at the same path, then execute the following command:
cd /path/to/ffmpeg/folder
xattr -rd com.apple.quarantine .
Portable Linux install
Generic amd64
, arm64
, and armhf
Linux builds in TAR archive format are available in the main download repository.
Base Installation Process
Create a directory in /opt
for jellyfin and its files, and enter that directory.
sudo mkdir /opt/jellyfin
cd /opt/jellyfin
Download the latest generic Linux build for your architecture.
The rest of these instructions assume version 10.8.13 is being installed (i.e. jellyfin_10.8.13_amd64.tar.gz
).
Download the generic build, then extract the archive:
sudo wget https://repo.jellyfin.org/?path=/server/linux/stable/combined/jellyfin_10.8.13_amd64.tar.gz
sudo tar xvzf jellyfin_10.8.13_amd64.tar.gz
Create a symbolic link to the Jellyfin 10.8.13 directory. This allows an upgrade by repeating the above steps and enabling it by simply re-creating the symbolic link to the new version.
sudo ln -s jellyfin_10.8.13 jellyfin
Create four sub-directories for Jellyfin data.
sudo mkdir data cache config log
FFmpeg
Installation
If you are not running a Debian derivative, install ffmpeg
through your OS's package manager, and skip this section.
Not being able to use jellyfin-ffmpeg
will most likely break hardware acceleration and tonemapping.
If you are running Debian or a derivative, you should download and install an ffmpeg
.deb
package built specifically for Jellyfin.
If you run into any dependency errors, run this and it will install them and jellyfin-ffmpeg
.
sudo apt install -f
Running Jellyfin
Due to the number of command line options that must be passed on to the Jellyfin binary, it is easiest to create a small script to run Jellyfin.
sudoedit jellyfin.sh
Then paste the following commands and modify as needed.
#!/bin/bash
JELLYFINDIR="/opt/jellyfin"
FFMPEGDIR="/usr/share/jellyfin-ffmpeg"
$JELLYFINDIR/jellyfin/jellyfin \
-d $JELLYFINDIR/data \
-C $JELLYFINDIR/cache \
-c $JELLYFINDIR/config \
-l $JELLYFINDIR/log \
--ffmpeg $FFMPEGDIR/ffmpeg
Assuming you desire Jellyfin to run as a non-root user, chmod
all files and directories to your normal login user and group.
Also make the startup script above executable.
sudo chown -R user:group *
sudo chmod u+x jellyfin.sh
Finally, you can run it. You will see lots of log information when run, this is normal. Setup is as usual in the web browser.
./jellyfin.sh
Starting Jellyfin on boot (optional)
Create a systemd
unit file.
cd /etc/systemd/system
sudo nano jellyfin.service
Then paste the following contents, replacing youruser
with your username.
[Unit]
Description=Jellyfin
After=network.target
[Service]
Type=simple
User=youruser
Restart=always
ExecStart=/opt/jellyfin/jellyfin.sh
[Install]
WantedBy=multi-user.target
Apply the correct permissions to the file, enable the service to start on boot, then start it.
sudo chmod 644 jellyfin.service
sudo systemctl daemon-reload
sudo systemctl enable jellyfin.service
sudo systemctl start jellyfin.service
Portable .NET DLL
Platform-agnostic .NET Core DLL builds in TAR archive format are available from the portable downloads section.
These builds use the binary jellyfin.dll
and must be loaded with dotnet
.
Debian (using extrepo)
extrepo is only supported on Debian currently. The advantage of extrepo is that it is packaged in Debian. So you don’t have to execute the curl | sudo bash
combo from the previous Automatic section. The risk with that command is that it relies on the security of the webserver. extrepo avoids this by having the Jellyfin repo information including the GPG key in its extrepo-data. extrepo-data is verified with GPG by the extrepo tool. So there is a chain of trust from Debian all the way to the Jellyfin repo information.
sudo apt install extrepo
sudo extrepo enable jellyfin
Now you can continue at step 5. of the Repository (Manual) section.
Official Linux Repository (Manual)
If you would prefer to install everything manually, the full steps are as follows:
-
Install
curl
andgnupg
if you haven't already:sudo apt install curl gnupg
-
On Ubuntu (and derivatives) only, enable the Universe repository to obtain all the FFmpeg dependencies:
sudo add-apt-repository universe
noteIf the above command fails you will need to install the following package
software-properties-common
. This can be achieved with the following commandsudo apt-get install software-properties-common
On Debian, you can also enable the
non-free
components of your base repositories for additional FFmpeg dependencies, but this is optional. -
Download the GPG signing key (signed by the Jellyfin Team) and install it:
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 -
Add a repository configuration at
/etc/apt/sources.list.d/jellyfin.sources
: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 )"
cat <<EOF | sudo tee /etc/apt/sources.list.d/jellyfin.sources
Types: deb
URIs: https://repo.jellyfin.org/${VERSION_OS}
Suites: ${VERSION_CODENAME}
Components: main
Architectures: ${DPKG_ARCHITECTURE}
Signed-By: /etc/apt/keyrings/jellyfin.gpg
EOFnoteThe supported values for the above variables are:
${VERSION_OS}
: One ofdebian
orubuntu
; if it is not, use the closest one for your distribution.${VERSION_CODENAME}
: One of our supported Debian or Ubuntu release codenames. These can change as new releases come out and old releases are dropped, so check the script to be sure yours is supported.${DPKG_ARCHITECTURE}
: One of our supported architectures. Microsoft does not provide a .NET for 32-bit x86 Linux systems, and hence Jellyfin is not supported on thei386
architecture.
-
Update your APT repositories:
sudo apt update
-
Install the Jellyfin metapackage, which will automatically fetch the various sub-packages:
sudo apt install jellyfin
noteIf you want to be explicit, instead of the metapackage, you can install the sub-packages individually:
sudo apt install jellyfin-server jellyfin-web
The
jellyfin-server
package will automatically select the rightjellyfin-ffmpeg
package for you as well. -
Manage the Jellyfin system service:
sudo systemctl {action} jellyfin
sudo service jellyfin {action}
.deb
Packages (Very Manual)
Raw .deb
packages, including old versions, source packages, and dpkg
meta files, are available in the main download repository.
The repository is the preferred way to obtain Jellyfin on Debian and Ubuntu systems, as this ensures you get automatic updates and that all dependencies are properly resolved. Use these steps only if you really know what you're doing.
-
On Ubuntu (and derivatives) only, enable the Universe repository to obtain all the FFmpeg dependencies:
sudo add-apt-repository universe
noteIf the above command fails you will need to install the following package
software-properties-common
. This can be achieved with the following commandsudo apt-get install software-properties-common
On Debian, you can also enable the
non-free
components of your base repositories for additional FFmpeg dependencies, but this is optional. -
Download the desired
jellyfin-server
,jellyfin-web
, andjellyfin-ffmpeg
.deb
packages from the repository;jellyfin
is a metapackage and is not required. -
Install the downloaded
.deb
packages:sudo dpkg -i jellyfin_*.deb jellyfin-ffmpeg_*.deb
noteThis step may throw errors; continue to the next step to resolve them.
-
Use
apt
to install any missing dependencies:sudo apt -f install
-
Manage the Jellyfin system service:
sudo systemctl {action} jellyfin
sudo service jellyfin {action}