Jellyfin on FreeBSD
-
We all love media – to some extent at least!
Movies, TV Shows and all the moving pictures we can find and consume.
So, since we all have movies etc. on our NAS/HDD/SSD/whatever we should be able to play and see everything we have on all our connected devices.
But what can we do?
Simple, we leverage Jellyfin to present our media to us.In this little howto we will set up Jellyfin in a Jail on FreeBSD.
Let’s get right to it!
Creating the Jail
Jails can be created in different ways. In this howto however we will use Bastille – which is a excellent tool for creating Jails.
This howto will not go into detail of how to set up Bastille. If you need to set up Bastille first, given you have not installed said tool, you can have a look at the quickstart guide:
Bastille Quickstart GuideRight, let’s create the Jail first.
$ sudo bastille create media 14.3-RELEASE 10.0.23.77/24 vtnet0You of course need to change the IP address and network interface (vtnet0 is probably not what you want!). Also, one can of course change the name of the Jail – I’ve chosen
mediasince that describes the use case well of said Jail.
After that our Jail is ready!Jellyfin needs
mlockto be enabled to work properly.$ sudo bastille config media set allow.mlock 1But wait a second… How do I access all my media files?
There is no access in the Jail to any directory on the host holding all my videos!
Right, that is the case indeed!
So, what can we do?
Simple, we just mount our media directory in the Jail withnullfs!$ sudo bastille mount "media" /home/x/videos/ /videos nullfs ro 0 0This line mount
/home/x/videos/in the Jail under/videos. Also, I mount the directory as readonly – which you can change by sepcifyingrwon the command above. Be sure to also select the correct Jail – in my casemedia.Jail fun with Jellyfin
We can now finally enter the jail to further go along with the howto.
$ sudo bastille console mediaLet’s first install Jellyfin which is directly accessible from the official package repository.
$ pkg$ pkg update -f$ pkg install -y jellyfinThe first command
pkgbootstraps the pkg package manager. The second command refreshes the package cache and the last command installs Jellyfin itself.Right, so far so good.
But we also need to configure Jellfin (Service) to always start. And, last but not least, we need to start Jellyfin – since it is not running after the installation finished.$ sysrc jellyfin_enable="YES"$ service jellyfin startWe did all that, alright… But how do we know Jellyfin is running?
Let’s have a look at thepsandsockstatoutput.root@media:~ # sockstat -l4USER COMMAND PID FD PROTO LOCAL ADDRESS FOREIGN ADDRESS jellyfin jellyfin 10700 478 udp4 10.0.23.77:7359 *:*jellyfin jellyfin 10700 503 tcp4 10.0.23.77:8096 *:*root@media:~ # ps ax PID TT STAT TIME COMMAND10662 - SsJ 0:00.00 /usr/sbin/syslogd -ss10699 - IsJ 0:00.00 daemon: /usr/local/jellyfin/jellyfin[10700] (daemon)10700 - IJ 0:03.81 /usr/local/jellyfin/jellyfin --datadir /var/db/jellyfin --cachedir /var/cache/jellyfin10706 - SsJ 0:00.00 /usr/sbin/cron -J 60 -s10804 1 IJ 0:00.00 login [pam] (login)10805 1 SJ 0:00.01 -sh (sh)10842 1 R+J 0:00.00 ps axAh yes, Jellyfin is running and listening on port 8096 – which is the designated port for Jellyfin!
Jellyfin all the way!
Since we established that Jellyfin is running and listening, let’s open our webbrowser of choice and navigate over to the install wizard.
$ firefox http://10.0.23.77:8096We are greated with the intital Jellyfin wizard.
I will not go into detail on how to set up the wizard. But don’t worry, there is a excellent guide over on the official Jellyfin website.
The guide can be found here: Jellyfin Setup Wizard guideBe sure to add your
nullfsmounted directory in your library to be able to play said videos and shows.That is all there is to it.
Simple, easy and clean. Everything is done in a Jail and isolated. Also, mounting a media directory is easy and straightforward viabastille mount.Final words
This little howto just shows how versatile jails are. One can of course tweak the setup further and for example add a reverse proxy (like Nginx) to the mix.
The sky is the limit – Tools likebastilleare very powerful and flexible!Enjoy!
…and as always:
Stay Open!
-
undefined stefano@mastodon.bsd.cafe shared this topic