Jellyfin, the free, open-source media server and streaming system, has been my first pick for building a home media server. Yet, one aspect of making it work has been particularly difficult: remote streaming.
Most configuration methods I’ve tried were either too complex or had me second-guessing every decision. Then I came across Tailscale, a free app that made it effortless to access my media server from anywhere!
The usual ways to reach Jellyfin all work, sort of
Each workaround had its own homework assignment
Setting up Jellyfin in itself isn’t difficult. You download and run the installer, choose your configuration, and start managing your server through the web interface. I’ve used this method to access movies and TV series on my SSD, with features like subtitles, watch-progress sync, and library organization.
The challenge arose whenever I wanted to stream the same content from my smartphone or another device. There are several popular methods to access your local content from a non-local network: Port Forwarding, Reverse Proxy, and Cloudflare Tunnel. However, all these options require careful security setup, router-level changes, or a domain name.
Depending on your choice, you may need to purchase a domain name or set up a dedicated IP address. Then there are the security issues that come with exposing your home network to the Internet. I’ve always found these security issues holding me back. It’s also why something like Tailscale sounded so appealing.
Tailscale makes my server act like it never left home
No open ports, no public IP, no drama
For starters, Tailscale is a powerful utility that builds a WireGuard-based private network for your devices. When connected, these devices behave as though they’re on the same LAN. Tailscale solves most of the problems you’d encounter using the methods we’ve already discussed.
- You don’t need to keep any router port open.
- Since it uses a private network, only the devices you’ve authorized can access your server.
- You don’t have to pay for a custom domain, because Tailscale gives each device a private 100.x.y.z address (and a MagicDNS name).
The result? You get an easy-to-set-up way to stream your home media server from anywhere in the world. Before you bring up Plex, let me remind you that remote streaming via Plex now requires a paid Plex Pass. Tailscale, on the other hand, offers a Personal plan that’s free for non-commercial use and allows unlimited remote connections.
This convenience is also why Jellyfin itself recommends Tailscale as one of the setup options, especially if you can’t or don’t want to open a port.
- OS
-
Windows, macOS, Linux, Android, iPhone
- Developer
-
Tailscale
- Price model
-
Free, paid plans available
Setting it up took less time than picking a movie
Two installs, one login, and an IP starting with 100
It’s not only the free, remote streaming that makes Tailscale a better choice. The free tool helped me set up remote connections to your home server in a few minutes. For context, I set up the server on a Windows PC connected to the SSDs in question.
Because I wanted Jellyfin to start even before I logged in, I chose the Run as a Windows Service option. Right after this simple setup, the server was accessible through http://localhost:8096. Then, I had to configure the media server and add the SSD folders as directories. With that, the server-side setup was done.
Before I set up Jellyfin on my Android, I had to configure Tailscale on both my PC and my Android smartphone. I downloaded the setup file from the official site and installed it on my PC. During setup, I had to create a Tailscale account and authorize both devices. With this, a tailnet (a Tailscale network) associated with my email ID was ready.
Now, I had to connect both devices to the tailnet to bring them onto the same private virtual LAN. At this point, the Tailscale app displayed an IP address next to each connected device. I could use this IP address and the port (which is 8096 by default) instead of localhost to access the Jellyfin server. I also had to enter the IP address when the Android app asked for server information.
And that was it. My Jellyfin server on a Windows PC was accessible through any device connected to my tailnet. I haven’t set this up yet, but I can invite five other people into my tailnet and offer them access to the network. So, if I want, I can let my family or friends access the server.
My phone now streams from home like it’s on Wi-Fi
The bitrate slider became my best friend
My media server routine is very different these days.
For starters, my Windows PC doesn’t sleep as long as it’s connected to power. I’ve also set up Tailscale with Run unattended so that it keeps running even after a restart. In other words, my PC (and the Jellyfin server) is always connected to the tailnet.
Now, whenever I want to stream something, I connect the client device to Tailscale, and I’m good to start. Because the primary setup is complete, the Jellyfin app for Android automatically connects to the Jellyfin server, and I can use all the features I want.
I’ve used this method to stream via mobile data and other Wi-Fi networks, and the performance has been pretty great. I also use the streaming bitrate limiter option to keep everything under control. Additional features, like app-based split tunneling (letting you include or exclude specific apps), are also great.
From start to finish, the setup took only a few minutes, and I now have access to my favorite media content wherever I am.
Tailscale still can’t fix every Jellyfin headache
Tailscale has solved one of the biggest challenges of Jellyfin remote streaming for me, but it’s not a universal solution by any means. For instance, you need a device with the Tailscale app to access your tailnet, so a smart TV that can’t run Tailscale could be in trouble. I’ve also come across occasional stutters while streaming. Regardless, any day, I’d prefer the Jellyfin + Tailscale combo to options like Plex because it just works out of the box.
