Jellyfin is a FOSS cloud-based media server that you can self-host to manage all your media whether you are home or on the run. The software has native phone apps for all smartphone platforms and desktop apps as well. You can also access your media from a web browser. This guide will show you how to create your server and access it.
https://jellyfin.org/docs/general/administration/installing.html#debian
https://www.linode.com/docs/guides/how-to-install-jellyfin/
We are using cPanel here to setup the subdomain. If you are using a different web control manager, the process will be similar. We just need to setup a subdomain and point the A record to it. Note that we need to get the IP address in the next step.
Create the server on Linode. Use my affiliate link https://tlm.li/linode to get $100 in credit good for 60 days. In my case, I am using Debian. You can use several different distros, but in this case, I will do Debian because it is very stable and will not roll versions to quickly making it a better server build.
Once the linode is setup, you will get the IP address which will need added to the A Record in your sub domain.
Since we are logged in as the root user on the server setup, we do not need to mess with sudo. We will first check for upgrades and install them:
apt update
apt upgrade
Then we will enable the repos that are provided in Debian:
apt install extrepo
extrepo enable jellyfin
apt update
apt install jellyfin
Before I move on, I will create some folders to put media in. This is simply running the mkdir command where I want the folders. In this case I am navigating to the /home directory and adding folders:
mkdir movies
mkdir music
mkdir abooks
Setup the reverse proxy. First create a web server:
apt install apache2
And the Proxy:
a2enmod proxy_http
Create the site. First, create the new server file:
sudo nano /etc/apache2/sites-available/jellyfin.switchedtolinux.com.conf
Mine is jellyfin.switchedtolinux.com so replace each instance of that with your exact server URL name:
<VirtualHost *:80>
ServerName jellyfin.switchedtolinux.com
ErrorLog /var/log/apache2/jellyfin-error.log
CustomLog /var/log/apache2/jellyfin-access.log combined
ProxyPreserveHost On
ProxyPass "/embywebsocket" "ws://127.0.0.1:8096/embywebsocket"
ProxyPassReverse "/embywebsocket" "ws://127.0.0.1:8096/embywebsocket"
ProxyPass "/" "http://127.0.0.1:8096/"
ProxyPassReverse "/" "http://127.0.0.1:8096/"
</VirtualHost>
Save the file and enable the site:
a2ensite jellyfin.switchedtolinux.com.conf
systemctl restart apache2
Now we want to install the SSL. You can follow the instructions which installs Snap. I only use Snap as an absolute last resort, so I will install everything without snap directly from the Debian repository which still works as of the time of this writing. You need two packages:
apt install cert-bot
apt install python3-certbot-apache
Use the command:
certbot
Should detect the plugin and websites and give a list of sites to install the SSL for.
Restart the apache server:
service apache2 restart
You should have an SSL installed on your server now.
Now you need to move files to the server. I am using SCP as an easy command line utility. It works by moving files between the server and the local machine by specifying the location including the server creds and the location of the file.
For a single file, I am moving 1984 (1956).mp4 from the local directory to the server in the movies folder:
scp 1984\ \(1956\).mp4This email address is being protected from spambots. You need JavaScript enabled to view it. :/home/movies
Note that the \ \ in the command are because I have spaces in the file name.
To add a whole folder, use the -r tag (for recursive):
scp -r Rush/This email address is being protected from spambots. You need JavaScript enabled to view it. :/home/music