Set up Jellyfin in Linux
Install your very own home media server.
In this tutorial we’ll go with Jellyfin as it is completely open source, doesn’t offer any premium features, nor it needs an external account to function properly.
I’ll just go with the easiest one: Using prebuilt binaries from the AUR.
mkdir -p ~/tmp cd ~/tmp git clone https://aur.archlinux.org/jellyfin-bin.git cd jellyfin-bin makepkg -si
You can manage the jellyfin service as any other, with
To see the status of it:
systemctl status jellyfin
To start/restart it:
sudo systemctl start jellyfin sudo systemctl restart jellyfin
To stop it:
sudo systemctl stop jellyfin
Mounting directories for jellyfin
The jellyfin service is owned by the
which doesn’t have access to your
If you want it to scan files in a directory inside your
$HOME your out of luck because the permissions for it
are set in a way that only you are allowed inside —and
it should remain that way, for your own security.
Let’s say you have a
~/media folder that you’d like jellyfin
to have access to, what do you do?
Well, you create a directory at root, let’s say
and then mount your
~/media in there, like this:
sudo mkdir /jellyfin sudo mount --bind ~/media /jellyfin # To unmount # sudo umount /jellyfin
Now you can point libraries in the web client to
and it’ll be scanned no problem.
The —maybe— downside to this approach is that you’ll have
to remount after every system boot.
The workaround is to just move your media folder to root.
I know, it’s a matter of personal preference.
But I, for one, only mount it when it’s needed.
And only start the service when I’m going to watch something on the TV. :sunglasses:
To be able to connect to your server from the Android app or other devices —like Chromecasts, phones, tablets, etc.— in your local network, you’ll need to allow traffic to your server on port 8096.
Let’s say your local IP address is:
192.168.1.110, then to
allow access from everything in your local network:
sudo ufw allow from 192.168.1.0/24 to any port 8096
If you’d like to give access to a specific IP address only —assuming your Chromecast is on 192.168.1.66— then this would do it:
sudo ufw allow from 192.168.1.66 to any port 8096
After starting the service, you’ll be able to access the web client by going to the following URL:
Here you’ll be able to set up libraries, users and other configuration options.
You can install the official app from the Play Store to stream content to your TV connected Chromecast.
There is Finamp if you want to stream music to your phone and download songs for offline listening.
It goes without saying that Jellyfin and the Jellyfin app are not perfect.
I have stumbled over a couple of bugs and UI/UX issues in both of them —like disappearing controls, stacking subtitles, not being able to cast 4k content to a normal Chromecast (even with transcoding)— but I think I can live with that for now, it’ll get only better with time.
That’s it for now, I’ll be updating these notes whenever I find something worth sharing. :v: