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.
For this guide you should be familiar with the basic concepts of
The software is licensed under GNU General Public License v2.0. All relevant information can be found in the GitHub repository of the project.
Your dashboard URL needs to be setup:
[isabell@stardust ~]$ uberspace web domain list isabell.uber.space [isabell@stardust ~]$
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 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 ~]$
Configure the web server¶
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 ~]$
If jellyfin is not
RUNNING, check your configuration and the logs using
Point your browser to
https://isabell.uber.space/ and follow the initial setup wizard.
Setup your media libraries, you can point it to your previously created Library:
Libraries and users can always be added later from the dashboard.
Remember the username and password so you can login after the setup.
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]
Check the update feed regularly to stay informed about the newest version.
Tested with Jellyfin 10.7.7, Uberspace 7.11.5Written by: knhash <https://knhash.in>