The Bolg

Back to coding blogs 🧏🏾‍♂️

From part 1, i ended the day with minidlna on my linux box and using the inbuilt library app on my home samsung smart TV to view vids and photos. The inbuilt library app is hard to navigate and the pic/vid support is very barebones, so I wanted something that is more similar to google photos with some folder management, and in the long run if I am curious enough, to try out building my own android client for viewing videos from a server.

Round 2 starts with finding an alternative to the library app, and I read about Jellyfin which ticks all the boxes,

  • code is available on github to read, and you can even build from source
  • fully hosted on my linux server
  • easy to use and manage out of the box, and boomer proof (for parents)

The first version assumes that everyone will be accessing the jellyfin server only whilst connected to the home router network, as such no wacky network services need to be incorporated yet

it looks something like this, where jellyfin is hosted on the linux home server, and all the other devices are able to connect to it via the local IP address (something like 192.168.X.X)

loading...

my linux server has a local IP of 192.168.1.34, and the jellyfin server is running on all interfaces at port 8096 on HTTP, so all i have to do is navigate to http://192.168.1.34:8096 to access the jellyfin server from any device that is connected to the same router, either via WIFI or LAN.

loading...

The next step, is to install jellyfin on my TV. Since Samsung app store is kind of limited, I went to get the xiaomi tv box (i forgot which version) and downloaded the jellyfin client, and connected with the local IP as the TV is also connected to the same network, and can access

One very important thing to take note, my home server is connected to my router with a LAN cable, and this was a requirement to make sure the videos load fast, especially those high resolution stuff.

Anyway, the biggest limitation with this is, outside the home network, we cannot view the videos. Lets see how we can solve this, in part 3. hint, tailscale is involved.