I do pay for two streaming services: Amazon Prime (because it's bundled with my Amazon account) and YouTube Premium (I watch a ton of YouTube and refuse to watch ads). But beyond that? I've never been someone who shells out for Netflix, Hulu, Disney+, or any of the others. Meanwhile, I had 6TB of my own media sitting on my NAS, perfectly organized and completely unwatched. The solution was obvious: Jellyfin.
But getting here took a while. If you're coming from a similar history of media center software, you'll appreciate why Jellyfin was the final destination.
The Long Road to Jellyfin
I've been running my own media setup for longer than I care to admit. Here's the abbreviated timeline:
GeexBox — Way back, one of my first media boxes was GeexBox. It was a lightweight Linux distro that booted from a Live USB or CD and could be pointed at a network drive to stream content. Simple, lightweight, and fantastic for its time. It just worked.
XBMC → Kodi — From there I moved to XBMC (Xbox Media Center), which was originally built for modded Xbox consoles back in 2002 but grew into a cross-platform powerhouse. When it became Kodi in 2014, the ecosystem exploded with skins, add-ons, and customization. I went deep into Kodi — found the perfect skin, Trakt integration for sync, library scrapers, the whole deal.
But over the years I got tired of the same recurring problems. An update would break my meticulously configured skin. The fancy skin I thought I needed would stop working entirely. My watched and unwatched status would randomly reset even though it should have been synced to Trakt. I fought with that layout more than I'd like to admit.
MrMC — Then I found MrMC. It's essentially a stable, commercial fork of Kodi built for Apple TV, iOS, and Android TV. No more broken libraries from updates. No more skins breaking things. It was reliable and just played media. I used it for a long time and it was genuinely good — but it still had occasional issues with thumbnails not loading and a few minor quirks that never quite got fixed.
Jellyfin — The big upgrade was finally deciding to install the Jellyfin server on my Synology NAS and switch to Jellyfin clients across all my devices. And honestly, I should have done it sooner.
Why Jellyfin (the honest answer)
Jellyfin is 100% free and open source. No paid tier for hardware transcoding, no subscription nagware, no phone-home analytics. The server runs wherever you want it — I run it on my Synology NAS via Docker — and the clients are available for literally every platform.
The server handles all the heavy lifting: metadata scraping, transcoding, user management, remote access. The clients are thin, fast, and don't care about skins because the UI is consistent across platforms. After years of fighting with Kodi's skin system and Trakt sync, that was a relief.
Setup on Synology (the Simple Way)
I run Jellyfin via Docker on my Synology DS923+. The DS916+ I started with is still a good box if you can find one — I gave it to a friend who is also using it for Jellyfin and she has built a mass video library of old movies and TV shows on it. Here's the streamlined version:
- Install Container Manager (Synology's Docker UI) from Package Center
- Create a jellyfin folder on your NAS volume for config data — I use
/docker/jellyfin/config - Pull the image: Open Container Manager → Registry → search "jellyfin/jellyfin" → download the latest tag
- Run with port mapping: Map local port 8096 → container port 8096 for the web UI. Mount your media folder (e.g.,
/volume1/media) as a volume. Mount the config folder as/config
After that, open http://synology-ip:8096 and you're in. The first-run wizard walks you through adding your media libraries and creating user accounts.
Hardware Transcoding: Make It Actually Work
This is the trickiest part. The Synology DS923+ has an AMD Ryzen R1600 — it doesn't have integrated Quick Sync Video like Intel chips, so hardware transcoding isn't as straightforward. For serious transcoding needs, you'll want to pair it with an Intel-based NAS or offload transcoding to a separate machine. For direct play (which is most of what I do on the local network), it handles everything flawlessly. For hardware acceleration:
- SSH into your NAS
- Run
sudo -ithenapt update && apt install intel-media-va-driver-non-free - In your Docker run command, add
--device /dev/dri:/dev/dri - In Jellyfin dashboard → Playback → enable VAAPI hardware decoding
If you need multiple 4K transcodes or a dozen simultaneous streams, you'll want a more powerful server — but for one family watching on phones, tablets, and TVs at the same time, this works great.
Remote Access via Tailscale
I don't expose Jellyfin to the open internet. Instead, I use Tailscale. Every family member installs Tailscale on their phone or laptop, and they access Jellyfin at http://100.x.x.x:8096 over a WireGuard tunnel. Zero configuration, zero attack surface, works flawlessly.
If you want to self-host the control server instead of using Tailscale's hosted service, setting up Headscale is the way to go — but fair warning, it's not a straightforward setup and you'll be digging through GitHub issues and forum posts to get it right. Marius Hosting has some good Synology guides that may cover it.
The Hardware: NVIDIA Shield TV Pro
For the actual TV-side experience, I use NVIDIA Shield TV Pro units in multiple rooms. I've had these for years, and even though they're getting a bit dated at this point, they're still consistently rated as one of the best streaming devices you can buy. The upscaling alone makes older content look noticeably better, and it handles every codec Jellyfin throws at it including Dolby Vision and TrueHD audio passthrough. If you're building a Jellyfin setup and want a dedicated client for your TV, the Shield is still the recommendation I'd make.
Jellyfin Clients Worth Using in 2026
The official Jellyfin apps are good, but the ecosystem has matured a lot. Here are the clients I'd recommend based on the XDA rundown and my own testing:
- Fladder — The standout client in 2026. It looks genuinely modern with smooth animations, supports intro and commercial skipping, integrates with Jellyseerr for requests, and runs on Windows, macOS, Linux, and iOS. This is what I'd use on a desktop or laptop.
- Jellyfin Media Player — The official desktop client, built on MPV. Supports every codec you can think of, audio passthrough, subtitle customization, and refresh rate switching. Reliable and no-frills.
- Swiftfin — The go-to for iOS and Apple TV users. Open source, multi-user support, live TV. Still in active development with a solid roadmap.
- Wholphin — Built from scratch for Android TV (not forked from the official client). Has a Plex-like feel if you're coming from that world, with auto refresh rate switching and PIN-protected profiles. My main client on the Shield.
- Feishin — A dedicated music client that looks like Spotify. Separate from your video library, fast library browsing, automatic playback recording. If you self-host your music library, this is the way to listen.
Bottom Line
Jellyfin replaced the streaming subscriptions I never wanted to pay for in the first place. Setup took an evening, and the only ongoing cost is the electricity the NAS uses. If you already have a Synology with media files on it, you're leaving free, better-than-Netflix streaming on the table by not setting this up.