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.
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>