SparkBox / Guides / Set up your media server

Set up your media server on SparkBox — from zero to requesting your first movie

This is the full walkthrough for building your own movie-and-TV server on SparkBox: a private, Netflix-style box where you (and your family) search for a film, click "Request," and a few minutes later it's sitting in your library ready to play. The whole point of doing this on SparkBox is that you don't hand-configure five different apps. SparkBox wires them together for you. Your real job is just three clicks and one VPN login. This guide is written for someone who has never touched a terminal — every step is numbered, every command is copy-paste, and there's an honest troubleshooting section for the two or three places people actually get stuck.

The one thing to understand: SparkBox auto-wires the media stack. You will not be copying API keys between apps or "connecting Sonarr to qBittorrent" by hand — SparkBox does all of that. You enable Media, give it your VPN, let it wire itself, set up your watch app, and request a movie. That's the whole story.

1. What you're building

Picture a request box that looks and feels like Netflix — posters, search, "Request" buttons. Someone in your house opens it, searches for a movie or show, and taps Request. Behind the scenes, your server finds it, downloads it safely through a VPN, files it away neatly, and it shows up in your watch app (Jellyfin) ready to stream to the TV, phone, or tablet. No subscription, no "this title left the service," nothing leaves your home except the downloading, which goes through a VPN you control.

Jellyfin home screen on a SparkBox server
Jellyfin home screen on a SparkBox server
The Seerr request box on SparkBox — a Netflix-style page with movie posters, a search bar, and Discover / Movies / Series tabs
This is what you end up with: Seerr — your private, Netflix-style request box. Search for a movie, click Request, and a few minutes later it's in your library ready to play. Everything below is just about getting here.

The grown-up name for this is "the *arr stack" (Sonarr, Radarr, and friends). Normally setting it up means installing a half-dozen apps and painstakingly connecting each one to the others. SparkBox skips all of that. When you enable Media, SparkBox installs the whole stack and connects the pieces together automatically. You end up living in just one app — the request box (Seerr) — and watching in another (Jellyfin). The rest runs in the background and you rarely open it.

2. What you need first (the one hard requirement)

There's exactly one thing you must have before starting:

You'll also need SparkBox already installed with its dashboard claimed (the one-command install + the login code you got from the installer). If you're not there yet, do that first — this guide picks up from a working dashboard.

The mistake everybody makes: your VPN credentials are not your VPN account email and password. You need the service credentials (a WireGuard private key + address) from your provider's "manual setup" page. For Surfshark that's my.surfshark.com/vpn/manual-setup/main → WireGuard → copy your private key and address. If you paste your login instead of the service credentials, the VPN simply won't connect.

3. The cast: what each app does, in one line

You don't need to learn these — SparkBox connects them for you — but here's who's who so the rest of the guide makes sense:

Sonarr series management on a SparkBox server
Sonarr series management on a SparkBox server

SparkBox wires Seerr → Radarr/Sonarr → Prowlarr → qBittorrent → Jellyfin into one chain for you. You enable it; it connects itself.

4. Step 1 — Enable Media + enter your VPN

From the SparkBox dashboard:

SparkBox Apps page — one-click install cards for every module
SparkBox Apps page — one-click install cards for every module

You can always come back and change the VPN later from the dashboard's VPN settings (Edit VPN settings) — rotating a key or switching providers just restarts the media stack and pauses downloads for about 30 seconds.

5. Step 2 — Let SparkBox wire everything

This is the part that would normally be a long, fiddly afternoon. On SparkBox it's automatic. As soon as Media is enabled, SparkBox runs its wiring step in the background — it:

What "give it a few minutes" looks like: the first wiring pass takes roughly 90 seconds to 3 minutes while every app starts up and gets connected. You don't have to watch it. The two signs it's done:

If you ever want to re-run the wiring by hand — for example after changing something — the command is safe to run any number of times:

sudo sparkbox arr-bootstrap

It only does work if something's missing, so re-running it never hurts.

6. Step 3 — Set up your watch app (Jellyfin)

Jellyfin is where you'll actually watch. There's one thing only you can do (because it's a security step), and one thing SparkBox can do for you.

The part you do: create the admin account

Open Jellyfin from the dashboard. The first time, it runs a short setup wizard:

(SparkBox can't create that first admin account for you — Jellyfin won't allow an account to be made through automation on a brand-new server, by design. Everything after this point can be automated.)

The part SparkBox does: create your libraries

After you've created the Jellyfin admin and signed in to Seerr once (Step 4 below), run:

sudo sparkbox media-finish

That command creates your Movies and TV Shows libraries in Jellyfin automatically, tells Seerr to sync them, and finishes off Seerr's setup wizard so you land straight on the request page. Like the wiring step, it's safe to re-run.

Want the truly hands-off version? SparkBox can even drive Jellyfin's first-run wizard for you and create the admin account with a generated password:

sudo sparkbox media-autoseed   # creates the Jellyfin admin + signs Seerr in
sudo sparkbox media-finish     # then creates the libraries

If you used media-autoseed, your generated Jellyfin admin password is saved on the server and shown in the dashboard's credentials area. Most people just do the wizard by hand (it takes a minute) and then run media-finish — either path lands in the same place.

7. Step 4 — Request your first movie

This is the payoff. Open Seerr from the dashboard:

Now watch the chain do its thing on its own: Seerr hands the request to Radarr → Radarr asks Prowlarr where to find it → qBittorrent downloads it through your VPN → Radarr files it into your Movies folder → Jellyfin picks it up. A few minutes later (longer for big or rare files) it appears in Jellyfin, ready to play on any screen.

That's the entire loop. From here on, everyone in the house just uses Seerr to request and Jellyfin to watch — they never touch the apps underneath.

One optional manual step: for results to actually show up, your search engine (Prowlarr) needs at least one search source ("indexer") added. SparkBox can't add these for you because they're tied to your own accounts. Open Prowlarr from the dashboard, go to Indexers → Add Indexer, and add the ones you choose to use — SparkBox doesn't recommend specific sources, so pick indexers you're entitled to use. The more you add, the more results you get. You only do this once.

8. Troubleshooting (the spots people get stuck)

Almost everyone who hits a snag hits one of these. Each has a one-line fix.

Seerr's "Add Radarr/Sonarr" shows an empty root-folder dropdown, or "Add Server" is greyed out

This is the most common one. It means the movie/TV manager has no root folder set yet — which is almost always a folder-permissions issue on your media drive. Fix it with:

sudo sparkbox up

On current versions, up re-runs the wiring and self-heals the folder permissions. If that doesn't clear it, force the wiring step:

sudo sparkbox arr-bootstrap

For a stubborn case where the folder ownership is wrong, fix the ownership and bring the stack back up (replace <MEDIA_ROOT> with your media folder, e.g. /volume1/data on a UGREEN NAS):

sudo chown -R 1000:1000 <MEDIA_ROOT> && sudo sparkbox up

(1000:1000 is the user the SparkBox apps run as — don't change it.)

"Failed to authenticate with qBittorrent" in Sonarr or Radarr

The download client's password drifted out of sync. Reset it and bring the stack back up:

sudo sparkbox reset-password qbit
sudo sparkbox up

VPN won't connect / downloads are stuck

Check the VPN banner on the dashboard — green means tunneled, anything else means it's not connected. The usual culprit is the credentials mistake from Step 1 (you pasted your VPN login instead of the WireGuard service credentials). Re-open Edit VPN settings and double-check the private key and address against your provider's manual-setup page. For deeper VPN diagnosis, see the Media Guide's VPN troubleshooting section in the docs.

Seerr's wizard won't let you continue at the "select libraries" step

This means your Jellyfin libraries haven't been created yet, so Seerr has nothing to select. Let SparkBox create them:

sudo sparkbox media-finish

(Or add a Movies and a TV library in Jellyfin by hand first, then continue the Seerr wizard.)

You just want to start the media side over from scratch

If Seerr has gotten into a confused state and you'd rather restart its setup cleanly without touching the rest of your box:

sudo sparkbox repair-seerr

That resets Seerr to a fresh wizard. Then sign in with your Jellyfin account again and run sudo sparkbox media-finish to finish.

9. Where to get help

If you've worked through the troubleshooting above and you're still stuck, post in the SparkBox community at d/sparkbox. Include a screenshot of what you're seeing and, if you can, the output of sudo sparkbox doctor. Real humans answer (often Tom), and every report helps us make the setup smoother for the next person.

Next steps

Your own request box, no per-app config.

SparkBox is the free, open-source self-hosting platform built for people who don't want to learn Linux. Enable Media, add your VPN, and SparkBox wires the whole movie-and-TV stack together for you — so you and your family just request and watch.

Get SparkBox → Or watch movies you already own →

About this guide: The enable-Media flow, auto-wiring, and every sparkbox command here are taken straight from the SparkBox CLI and the Media Guide. If something doesn't match what you see, tell us in d/sparkbox and we'll fix it.