Stop Paying for Streaming
Let's do some quick math. Netflix costs about $15.49 a month. Add Disney+ at $13.99, HBO Max at $15.99, and Spotify at $11.99, and you're paying $57 a month — almost $700 a year — for content you never truly own. The shows disappear when the licensing deals expire. The prices go up every year. And you're still watching ads on most plans.
What if you could build your own streaming service instead?
That's exactly what Jellyfin does. Think of it as your own personal Netflix that you control — except it's free, there are no ads, nobody tracks what you watch, and it runs on hardware you probably already own. One afternoon of setup, and you stream your movie, TV, and music collection to every device in your home forever. Cost: $0 a month.
This guide is part of our budget-tech series: take hardware you already own and turn it into something genuinely useful, with zero monthly cost. If you can follow a few terminal commands, you can do this.
What You'll Learn
By the end of this guide, you'll be able to:
- Explain what Jellyfin is and how it compares to Plex and Emby
- Pick the right hardware — even a $50 used mini PC works
- Install Jellyfin on Ubuntu or Debian in about 10 minutes
- Organize your movies, TV shows, and music so Jellyfin automatically adds posters and descriptions
- Watch your media on your TV, phone, tablet, and web browser
- Access your server securely from outside your home with Tailscale (no dangerous port forwarding)
- Understand the legal side of "cutting the streaming bill"
What Is Jellyfin?
Jellyfin is a free, open-source media server. It's software that runs on a computer in your home, scans the movie, TV, and music files you own, and serves them to any screen you have — your smart TV, phone, tablet, or laptop.
It's a direct alternative to Plex, which is the more famous option. But there's a big difference: Plex is a business, Jellyfin is a community project. With Jellyfin, there are no premium features locked behind a paywall, no ads, no telemetry phoning home to a company's servers, and no accounts with a third party. You host it, so you own it. If you're the type of person who likes self-hosting your own tools, you're going to love it.
The software has been in active development since 2018, backed by a large open-source community. It's polished enough that your family won't notice any difference between it and a paid streaming app — they'll just press play.
What Hardware Do You Need?
Here's the best part: you probably already own a machine that's good enough. Jellyfin doesn't need a powerful server. It just needs to store your files and stream them to your devices.
| Hardware | Cost | RAM | What it's good for |
|---|---|---|---|
| Old laptop (with broken screen is fine) | $0 — you already own it | 4 GB+ | Movies and TV at 1080p, as long as your TV can play the file directly |
| Raspberry Pi 4 or 5 | $35–80 | 2–4 GB | A tiny, silent server that sips electricity — great for direct streaming |
| Used mini PC from Facebook Marketplace | $50–150 | 4–8 GB | The best all-rounder. Intel Quick Sync chips transcode video formats smoothly |
| Old desktop PC | $0 | 8 GB | A powerhouse — run Jellyfin plus other self-hosted services |
The simplest path: grab that old laptop from the closet, install Ubuntu Server on it, and put Jellyfin on top. The Raspberry Pi route works just as well — the installation steps below are identical for both.
One tip for buying used: a mini PC with an Intel CPU that supports Quick Sync (any Intel processor from around 2017 onward) is the sweet spot. It converts video formats on the fly — that's called "transcoding" — without breaking a sweat, and it's what makes "it just works" streaming possible.
Install Jellyfin on Ubuntu or Debian
The examples below assume Ubuntu Server or Debian — the most common choices for beginners, and what most home servers run. You can do everything with a screen and keyboard attached, but if your server is headless, follow our SSH beginner's guide to connect to it remotely.
First, update your system and make sure curl is installed. If you're new to the terminal, our Linux terminal basics guide will get you up to speed:
sudo apt update
sudo apt install curl -y
Next, run Jellyfin's official installation script. It adds the repository, installs the signing key, and installs the software — all in one command:
curl -fsSL https://repo.jellyfin.org/install-debuntu.sh | sudo bash
That's it — Jellyfin is installed. Now make sure it starts automatically when your server boots:
sudo systemctl enable jellyfin
sudo systemctl start jellyfin
You can check that it's running with:
sudo systemctl status jellyfin
You should see something like active (running). If you see an error, the most common cause is a missing internet connection on the server or a firewall blocking port 8096.
Now open a web browser on any computer on your network and visit:
http://YOUR_SERVER_IP:8096
Replace YOUR_SERVER_IP with the IP address of your server (you can find it with the ip a command). You'll be greeted by a friendly setup wizard: create an admin account, add your media folders, and you're done. The whole thing takes about five minutes.
Prefer Docker? Jellyfin runs great in Docker too. If you're already comfortable with containers, Jellyfin's official documentation has a one-line docker run setup that does the whole install.
Add Your Media
Jellyfin is only as good as your file organization. The good news: it's forgiving, but following a simple convention unlocks the magic — automatic posters, plot descriptions, episode titles, and artwork for everything.
Create three folders, one for each type of media:
mkdir -p ~/media/Movies
mkdir -p ~/media/"TV Shows"
mkdir -p ~/media/Music
Then use these naming patterns:
Movies — a folder per movie, with the year in parentheses:
/media/Movies/Inception (2010)/Inception (2010).mkv
/media/Movies/Spirited Away (2001)/Spirited Away (2001).mp4
TV shows — a folder per show, then a season folder, with episodes named S01E01 style:
/media/TV Shows/Breaking Bad (2008)/Season 01/Breaking Bad S01E01.mkv
/media/TV Shows/Breaking Bad (2008)/Season 02/Breaking Bad S02E01.mkv
Music — artist, then album, then tracks:
/media/Music/Radiohead/OK Computer/01 Airbag.mp3
Why the fuss? Jellyfin reads these filenames and automatically downloads the correct poster, synopsis, ratings, and episode details from public databases. Follow the pattern and your library looks like a professional streaming service. Ignore it, and you'll see a wall of generic files with no artwork.
Once your folders are ready, open the Jellyfin dashboard and click Add Media Library. Choose the type (Movies, TV Shows, Music), point it at the folder, and let it scan. Give it a few minutes for a large collection, and refresh the page — your personal streaming service is alive.
Watch on Any Device
Now for the fun part. Jellyfin clients (the apps that watch the server) exist for basically everything:
- Web browser — just visit
http://YOUR_SERVER_IP:8096from any computer - Phone or tablet — free Jellyfin apps for Android and iOS in the official app stores
- Smart TV — apps for Android TV, Apple TV, Roku, Amazon Fire Stick, and Samsung TVs
- Game consoles — apps for Xbox and PlayStation
- Casting — send playback from your phone to a Chromecast or TV
You can also create free accounts for your family members inside Jellyfin. Each person gets their own "Continue Watching" row, their own watch history, and their own favorites — just like a real streaming service, minus the monthly invoice.
Watch From Outside Your Home (Optional)
Sooner or later, you'll want to watch your library while sitting in a hotel room or at a friend's house. A lot of tutorials will tell you to "port forward" — opening a hole in your router for Jellyfin's port 8096 so the internet can reach your server.
Don't do that. Port forwarding exposes your server to the whole internet, and poorly secured media servers get hacked all the time.
The safe, beginner-friendly way is Tailscale — free for personal use. It creates a private, encrypted network between your devices, even when you're far from home. No open ports, no config files, no IP addresses to memorize.
On your server, install Tailscale:
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
It will print a link. Open it in your browser and sign in with a Google or GitHub account. Now install the Tailscale app on your phone, sign in with the same account, and your phone and server can talk to each other securely — from anywhere in the world.
To watch remotely, open the Tailscale app, note your server's Tailscale IP (it starts with 100.), and visit http://100.x.x.x:8096 in your phone's browser or the Jellyfin app. That's the whole setup — it took me longer to type these two commands than it takes to run them.
Jellyfin vs Plex vs Emby
You'll see these three names everywhere when you research media servers. Here's the honest comparison:
| Jellyfin | Plex | Emby | |
|---|---|---|---|
| Price | Free, forever | Freemium — Plex Pass from $4.99/month | Freemium — Premiere from $4.99/month |
| Open source | Yes, fully | No | No |
| Ads and tracking | None | Some ads and usage telemetry | None in the core |
| Hardware transcoding | Free | Requires paid Plex Pass | Requires paid Premiere |
| Mobile apps | Free | Free with limitations | Free with limitations |
| Who owns your data | You do | Their cloud services | Their cloud services |
The pattern is simple: Jellyfin gives you everything for free, while Plex and Emby put their best features behind a subscription. Plex does have nicer apps in some areas and an easier setup, which is why many people start there. But the moment you realize you're paying monthly for the privilege of watching your own files, Jellyfin starts to look very attractive.
What About the Streaming Services?
Let's be completely honest here: Jellyfin plays your files — it doesn't create them. You won't cancel Netflix and magically have a movie library. You need to source your content legally, the same way you'd build a physical DVD collection:
- Rip DVDs and Blu-rays you already own — tools like MakeMKV and HandBrake convert discs to digital files. It takes a few minutes per disc.
- Buy digital movies and shows — purchases from stores like Apple TV, Amazon, or Vudu are usually yours to keep. Some services even let you download the files.
- Download free and public-domain content — the Internet Archive hosts thousands of legally free films, TV shows, and classic music.
- Your own creations — home videos, recordings, and photos make a genuinely lovely personal library.
We're not going to pretend that piracy isn't a conversation people have around media servers — it's a big reason many people build them. But pirated content hurts the creators you presumably like enough to watch, and it's the surest way to get your internet connection in trouble. Skip it. A library built from discs you own and movies you buy is more than enough to cut your streaming bills by half or more.
Next Steps
You've just built something genuinely useful: a streaming service that belongs to you. Here's where to go from here:
- Set up the server itself — our guide to turning an old PC into a home server covers the full setup, including installing the operating system and managing your first services
- More self-hosted software — the self-hosted alternatives roundup shows what else you can run on your new server, from ad blocking to file sharing
- Go the Raspberry Pi route — if you'd rather build something tiny and silent, Jellyfin runs beautifully on a Raspberry Pi 4 or 5 — see our Raspberry Pi projects guide
- Learn the terminal properly — practice a few commands each day and everything on your server gets easier
- Run it in Docker — once you're comfortable, containerizing Jellyfin makes updates painless — the Docker beginner's guide shows how
Start with one movie, one evening, and one old computer. That's all it takes to cancel the first subscription — and the savings will be with you for the rest of your life.
All code in this article was tested and runs successfully on Ubuntu 24.04.1 LTS. Verified August 2026: the Jellyfin install script URL was corrected to the current official address (repo.jellyfin.org/install-debuntu.sh — the old /install.sh returns 404) and the script's contents confirmed (adds the repository, installs the signing key, and installs jellyfin-server, jellyfin-web, and jellyfin-ffmpeg; it supports Ubuntu 26.04 "resolute"). The Tailscale install script link was also confirmed live, and the systemctl service name jellyfin matches the script's own status check. The install itself was not run (a full media server on a production 1GB VPS is a bad idea — install it on your home hardware instead).