# Jellyfin: Avoiding subscriptions like the plague

> How I set up an arr stack (Jellyfin, Radarr, Sonarr, Prowlarr and qBittorrent) with Docker Compose on a Raspberry Pi 5 8GB and a 1TB external hard drive.

By Tang Yetong. Published October 29, 2026, updated November 4, 2026. 14 min read. Category: homelab. Tags: Arr Stack, Raspberry Pi, Docker, Jellyfin, Sonarr, Radarr, Self-hosted, Homelab.
Read it with the interactive demos: https://tangyetong.com/blog/raspberry-pi-media-server

A few weeks ago, I got tired of constantly asking my girlfriend to bring her iPad over to my house just to watch shows and movies. I have a TV at home, and constantly using the iPad never felt right.

I've never had a Netflix subscription, because I never knew if I could make it worth it. Would I really watch at least $20 of shows every month?

Then I stumbled onto some YouTube Shorts about setting up an *arr stack (Radarr, Sonarr, Jellyfin and friends), and it piqued my interest. It didn't look difficult or complicated, and it sounded like a fun weekend project.

This post is how I set it up, in the order that worked for me, with bits you can click on as you read.

## What I'm actually building

One Raspberry Pi runs all of the software, and the movies and series sit on an external hard drive. An arr stack is a set of self-hosted apps, most of them named Something-arr, that find, download and organise movies and TV shows for a media server. Nine pieces fit together here: Jellyfin (the media player), Seerr (the request website), qBittorrent (downloads the files), Radarr (movies), Sonarr (TV shows), Prowlarr (indexers), Bazarr (subtitles), FlareSolverr (gets Prowlarr past anti-bot checks) and Maintainerr (auto-deletes old media).

## Why isn't this just one plug-and-play app?

Nine containers is a lot of moving parts for "watch a movie". It makes sense when you think about it: each app does exactly one job, and they talk to each other through plain web addresses and API keys.

The upside is the flexibility to swap, update or switch off any single piece without touching the rest. You will feel the downside while setting everything up, though: more things to set up and keep updated. Debugging can also be a hassle.

## Picking the Pi, and everything else I needed

I went with the Raspberry Pi 5 8GB. The whole shopping list came to S$314.31, using a spare 1TB external hard drive I already had. It took about a week for everything to arrive, since some of the parts came from London.

## Setting it up, step by step

The core components are quite linear: flash the Pi, install Docker, mount the drive, launch the stack, then connect qBittorrent, Radarr, Sonarr, Prowlarr and Jellyfin. The optional apps (Seerr, Bazarr, FlareSolverr and Maintainerr) come in any time.

## My compose file, with your pick of containers

This is my stack written as a docker-compose file, with a builder that checks whether each container has what it depends on.

## Why every app mounts the same /data

Radarr and Sonarr don't copy a finished download into the library, they hardlink it: one file on disk, two names. That only works if both names live on the same mount.

## Getting the apps to talk to each other

Every connection screen asks for a host. The containers all share one Docker network, so the most reliable way is to use the container name. A reserved IP address for the Pi works as well.

## Things that usually go wrong

Nearly every problem I had comes down to a wrong address, a wrong path or a missing permission.

## Day to day

Day to day it's just: open Seerr, request something, wait. All of the TVs have the Jellyfin TV app installed, and can stream pretty smoothly most of the time. Pretty good convenience overall, and I think it's pretty worth it.

I only use this for content I'm legally entitled to download.
