Jellyfin

Jellyfin is the volunteer-built media solution that puts you in control of your media. Stream to any device from your own server, with no strings attached. Your media, your server, your way.

You can use Jellyfin alongside Syncthing, to load your media onto Uberspace for streaming.


Note

For this guide you should be familiar with the basic concepts of

License

The software is licensed under GNU General Public License v2.0. All relevant information can be found in the GitHub repository of the project.

Prerequisites

Your dashboard URL needs to be setup:

[isabell@stardust ~]$ uberspace web domain list
isabell.uber.space
[isabell@stardust ~]$

Installation

Create a directory in /home/isabell for jellyfin and its files.

[isabell@stardust ~]$ mkdir ~/jellyfin
[isabell@stardust ~]$

Download the combined archive from release, including both the server and WebUI, as we will need both of them.

[isabell@stardust ~]$ wget -O ~/jellyfin/jellyfin.tar.gz https://repo.jellyfin.org/releases/server/linux/stable/combined/jellyfin_10.7.7_amd64.tar.gz
[isabell@stardust ~]$

Extract the archive. Delete the archive post extraction.

[isabell@stardust ~]$ tar -xvzf ~/jellyfin/jellyfin.tar.gz  -C ~/jellyfin
[isabell@stardust ~]$ rm ~/jellyfin/jellyfin.tar.gz
[isabell@stardust ~]$

Create a symbolic link to the Jellyfin 10.7.7 directory. This allows an upgrade by repeating the above steps and enabling it by simply re-creating the symbolic link to the new version.

[isabell@stardust ~]$ ln -s ~/jellyfin/jellyfin_10.7.7 ~/jellyfin/jellyfin
[isabell@stardust ~]$

Create four sub-directories for Jellyfin data, and one to store your media library.

[isabell@stardust ~]$  mkdir ~/jellyfin/data ~/jellyfin/cache ~/jellyfin/config ~/jellyfin/log ~/jellyfin/library
[isabell@stardust ~]$

Create a small script to run Jellyfin, jellyfin.sh in ~/jellyfin with the following content.

#!/bin/bash
JELLYFINDIR="/home/$USER/jellyfin"

$JELLYFINDIR/jellyfin/jellyfin \
-d $JELLYFINDIR/data \
-C $JELLYFINDIR/cache \
-c $JELLYFINDIR/config \
-l $JELLYFINDIR/log

Make the startup script above executable.

[isabell@stardust ~]$  chmod u+x ~/jellyfin/jellyfin.sh
[isabell@stardust ~]$

Configuration

Configure the web server

Note

Jellyfin will run on port 8096.

To make the application accessible from the outside, configure a web backend:

[isabell@stardust ~]$ uberspace web backend set / --http --port <port>
Set backend for / to port <port>; please make sure something is listening!
You can always check the status of your backend using "uberspace web backend list".
[isabell@stardust ~]$

Set up the daemon

To start Jellyfin automatically and run it in the background, create ~/etc/services.d/jellyfin.ini with the following content:

[program:jellyfin]
command=bash %(ENV_HOME)s/jellyfin/jellyfin.sh

After creating the configuration, tell supervisord to refresh its configuration and start the service:

[isabell@stardust ~]$ supervisorctl reread
SERVICE: available
[isabell@stardust ~]$ supervisorctl update
SERVICE: added process group
[isabell@stardust ~]$ supervisorctl status
SERVICE                            RUNNING   pid 26020, uptime 0:03:14
[isabell@stardust ~]$

Note

If jellyfin is not RUNNING, check your configuration and the logs using supervisorctl maintail.

Finishing installation

User Setup

Point your browser to https://isabell.uber.space/ and follow the initial setup wizard.

Note

  • Under Setup your media libraries, you can point it to your previously created Library: /home/isabell/jellyfin/library.
  • Libraries and users can always be added later from the dashboard.
  • Remember the username and password so you can login after the setup.

Tuning

Warning

Jellyfin transcodes media and that’s very CPU heavy work, and as such may not be particularly suited for shared hosting.

Make sure to go into the Admin Dashboard and set the Transcoding thread count to 1.

-> [Hamburger-Menu] -> [Admin - Dashboard]
-> [Server - Playback] -> [Transcoding thread count] : Set to 1
-> [Scroll all the way down] -> [Save]

Updates

Note

Check the update feed regularly to stay informed about the newest version.


Tested with Jellyfin 10.7.7, Uberspace 7.11.5

Written by: knhash <https://knhash.in>