Getting Started

Plex + Automated Media Aggregation

Goal: Plex is your media server (the "Netflix" your TV and phone connect to). This guide sets up the other half: a small set of apps that find, download, rename and file movies and TV shows into Plex's libraries automatically.

🐳 Docker📡 Usenet🎬 Radarr + Sonarr💸 ~$130–150 / yr

By the end you'll add a movie or show in a web page, and a few minutes later it appears in Plex.


1How the pieces fit

Piece Role Cost
Plex Media Server Serves your library to every screen Free (Plex Pass optional: $6.99/mo, $69.99/yr, ~$249.99 lifetime)
Newshosting Usenet provider, the source of the files ~$10/mo (frequent promos; roughly $100-130/yr)
NZBgeek Usenet indexer, the search engine ~$12/yr basic membership
SABnzbd, Radarr, Sonarr The automation apps Free
Docker Desktop Runs the three apps Free for personal use

Realistic total: about $130-150/year. Prices are approximate and change; Newshosting and NZBgeek run sales, so check their sites.

Why Usenet? No torrents, no seeding, no swarm seeing your IP, and downloads run at your full internet speed. You pay a provider (Newshosting) and an indexer (NZBgeek) instead.


2Set up Plex Media Server

Plex is the server. Install it directly on the PC (not in Docker); it's simpler on Windows.

  1. Download from https://www.plex.tv/media-server-downloads/ and run the installer. Sign in or create a free Plex account.
  2. Create your media folders now (PowerShell), because the rest of this guide uses them: powershell mkdir C:\media\Movies, C:\media\TV, C:\media\downloads\incomplete, C:\media\downloads\complete (Any drive works; if you use a different path, substitute it everywhere below. Keep downloads and libraries under one parent folder, C:\media, so finished files can be moved instantly instead of copied.)
  3. In Plex: Settings → Manage → Libraries → Add Library
  4. Type Movies → add folder C:\media\Movies
  5. Type TV Shows → add folder C:\media\TV
  6. Settings → Library → turn on Scan my library automatically. This is how Plex notices new files with no extra setup.

Plex is now waiting for content. (Empty libraries are normal at this stage.)


3Create your two accounts

Newshosting (the content provider)

  1. Go to https://www.newshosting.com and choose the unlimited plan.
  2. Create your account and pay.
  3. Write down these four things; SABnzbd needs them:
Setting Value
Server news.newshosting.com
Port 563 (SSL)
Username / Password your Newshosting login credentials
Connections check your plan's limit; 8-20 is plenty

NZBgeek (the indexer)

  1. Go to https://nzbgeek.info and register an account.
  2. Buy a membership from your profile page (the basic tier is enough).
  3. Open your profile and copy your API key. Radarr and Sonarr will use it. Treat it like a password.

4Install Docker Desktop

  1. Download Docker Desktop for Windows: https://www.docker.com/products/docker-desktop/ (free for personal use).
  2. Run the installer, accept the WSL 2 option, and reboot when asked.
  3. Start Docker Desktop and wait for it to say it's running. In its Settings → General, tick Start Docker Desktop when you sign in so the apps come back after a reboot.

5Start SABnzbd, Radarr and Sonarr with one file

Create a folder C:\docker and, inside it, a file named compose.yml with this content:

services:
  sabnzbd:
    image: ghcr.io/linuxserver/sabnzbd:latest
    container_name: sabnzbd
    restart: unless-stopped
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/Chicago        # change to your timezone
    volumes:
      - sabnzbd_config:/config
      - C:/media:/data
    ports:
      - "8080:8080"

  radarr:
    image: ghcr.io/linuxserver/radarr:latest
    container_name: radarr
    restart: unless-stopped
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/Chicago
    volumes:
      - radarr_config:/config
      - C:/media:/data
    ports:
      - "7878:7878"

  sonarr:
    image: ghcr.io/linuxserver/sonarr:latest
    container_name: sonarr
    restart: unless-stopped
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/Chicago
    volumes:
      - sonarr_config:/config
      - C:/media:/data
    ports:
      - "8989:8989"

volumes:
  sabnzbd_config:
  radarr_config:
  sonarr_config:

Start everything:

cd C:\docker
docker compose up -d

Two things in that file matter a lot:

  • C:/media:/data is on all three apps. Inside every container your files live under /data (/data/Movies, /data/TV, /data/downloads/...). Because they all see identical paths, handoffs between apps just work. Always type /data/... paths inside the apps, never C:\....
  • /config uses named volumes (sabnzbd_config, etc.), not a Windows folder. On Windows, these apps' databases can throw "database is locked" errors on a normal folder mount, and imports silently stop. Named volumes avoid it.

Check that all three are running: docker ps. The web pages are:

App Address
SABnzbd http://localhost:8080
Radarr http://localhost:7878
Sonarr http://localhost:8989

To update later: docker compose pull then docker compose up -d.


6Configure SABnzbd (the downloader)

Open http://localhost:8080.

a. Add Newshosting (the first-run wizard asks; otherwise Config → Servers → Add Server): - Host: news.newshosting.com - Port: 563 - SSL: checked - Username / Password: from Newshosting - Connections: 8 to 20 - Click Test Server. It should say the connection succeeded.

b. Folders (Config → Folders): - Temporary Download Folder: /data/downloads/incomplete - Completed Download Folder: /data/downloads/complete - Save.

c. Categories (Config → Categories). Categories keep movie and TV downloads separate. Add two:

Name Folder/Path
movies movies
tv tv

(The name must match exactly, in lowercase; Radarr and Sonarr will send jobs tagged with these.)

d. Copy the API key: Config → General → Security → API Key. You'll paste it into Radarr and Sonarr.

Everything else can stay at defaults.


7Configure Radarr (movies)

Open http://localhost:7878. On first launch it makes you set authentication: choose Forms and create a username and password.

7a. Media Management (Settings → Media Management)

Turn on Show Advanced (top of the page) if you don't see these.

Setting Value
Rename Movies On
Replace Illegal Characters On
Colon Replacement Delete
Standard Movie Format {Movie Title} ({Release Year})
Movie Folder Format {Movie Title} ({Release Year})
Propers and Repacks Prefer and Upgrade
Use Hardlinks instead of Copy On
Analyse video files On

Under Root Folders, click Add Root Folder → /data/Movies. Save.

7b. Quality Profile (Settings → Profiles): the "right quality" part

A quality profile tells Radarr which kinds of releases you'll accept. My setup is 1080p-focused, with 720p as an acceptable fallback, and no 4K or remux. That keeps files a sensible size and plays everywhere without transcoding.

Click + to add a profile and name it HD - 720p/1080p:

  • Upgrades Allowed: On
  • Upgrade Until (cutoff): Bluray-720p
  • Qualities checked (leave everything else unchecked):
  • Bluray-1080p
  • WEB 1080p
  • HDTV-1080p
  • Bluray-720p
  • WEB 720p
  • HDTV-720p

Order matters: higher in the list is preferred. Radarr grabs the best available quality on the list, so it goes for Bluray-1080p first, then WEB 1080p, and so on. The cutoff means "once I have Bluray-720p or better, stop hunting for upgrades," which prevents constant re-downloading.

Leave everything else in the profile at defaults. When you add a movie, you'll pick this profile.

7c. Add the NZBgeek indexer (Settings → Indexers)

  1. Click + → choose Newznab → (there's an NZBgeek preset if listed; use it).
  2. Name: NZBgeek
  3. URL: https://api.nzbgeek.info
  4. API Key: your NZBgeek API key
  5. Categories: leave the defaults (they cover movies: 2000-series)
  6. Click Test, then Save.

7d. Add SABnzbd as the download client (Settings → Download Clients)

  1. Click + → SABnzbd
  2. Name: SABnzbd
  3. Host: sabnzbd (not localhost; see note below)
  4. Port: 8080
  5. API Key: from SABnzbd (step 6d)
  6. Category: movies
  7. Click Test, then Save.

8Configure Sonarr (TV shows)

Same pattern as Radarr. Open http://localhost:8989 and set authentication (Forms + username/password).

8a. Media Management (Settings → Media Management)

Turn on Show Advanced.

Setting Value
Rename Episodes On
Replace Illegal Characters On
Colon Replacement Smart Replace
Standard Episode Format {Series Title} - S{season:00}E{episode:00} - {Episode Title}
Daily Episode Format {Series Title} - {Air-Date} - {Episode Title}
Anime Episode Format {Series Title} - S{season:00}E{episode:00} - {Episode Title}
Series Folder Format {Series Title}
Season Folder Format Season {season:00}
Multi-Episode Style Extend
Create empty series folders On
Unmonitor Deleted / previously downloaded episodes On
Propers and Repacks Prefer and Upgrade
Use Hardlinks instead of Copy On
Import Extra Files On (extensions srt, nfo, tbn)
Analyse video files On

Under Root Folders → Add Root Folder → /data/TV. Save.

8b. Quality Profile (Settings → Profiles)

Add a profile named HD - 720p/1080p:

  • Upgrades Allowed: On
  • Upgrade Until (cutoff): HDTV-1080p
  • Qualities checked:
  • Bluray-1080p
  • WEB 1080p
  • HDTV-1080p
  • Bluray-720p
  • WEB 720p
  • HDTV-720p

Same idea as movies: 1080p preferred (Bluray, then WEB, then HDTV), 720p accepted, no 4K. For TV, WEB releases are usually the first to appear after an episode airs, so including WEB is what lets new episodes arrive within hours.

8c. NZBgeek indexer (Settings → Indexers)

+ → Newznab → NZBgeek preset: - URL: https://api.nzbgeek.info - API Key: your NZBgeek API key - Categories: leave defaults (TV: 5030 SD, 5040 HD) - Test, then Save.

8d. SABnzbd download client (Settings → Download Clients)

+ → SABnzbd: - Host: sabnzbd - Port: 8080 - API Key: from SABnzbd - Category: tv - Test, then Save.


9Your first test: the "steel thread"

Do this with a movie first, because it's the simplest.

  1. In Radarr, click Add New, search for a movie, and select it.
  2. Set: Root Folder /data/Movies, Quality Profile HD - 720p/1080p, Monitor = Movie Only, and check Start search for missing movie. Click Add.
  3. Watch it flow:
  4. Radarr → Activity → Queue: it shows the download as pending, then downloading.
  5. SABnzbd (http://localhost:8080): you'll see the job download, then unpack.
  6. When SABnzbd finishes, Radarr imports it: renames it and moves it to C:\media\Movies\Movie Name (Year)\.
  7. Open Plex. Within a minute or two the movie appears in your Movies library.

Repeat in Sonarr with a TV show: Add New → pick series → Root Folder /data/TV, profile HD - 720p/1080p, Monitor = All Episodes (or Future Episodes only) → check Start search for missing episodes → Add.

From now on: search, add, wait. Sonarr also keeps watching your shows and grabs new episodes as they release.


10If something doesn't work

Symptom Likely cause
Radarr/Sonarr Test fails for SABnzbd Host set to localhost instead of sabnzbd, or wrong API key
Test fails for NZBgeek Wrong API key, or your membership hasn't activated
Search finds nothing Quality profile too narrow, or the release is too new/old for Usenet; try Interactive Search (the magnifying-glass person icon) to see what was found and why it was rejected
Download finishes but never imports Category mismatch (movies / tv must match exactly in SABnzbd and the app), or paths not under /data
Imports randomly stop, "database is locked" in logs /config is on a Windows folder instead of a Docker named volume
Movie is in the folder but not in Plex Plex library folder doesn't point to C:\media\Movies or C:\media\TV, or "Scan my library automatically" is off
Files show up with odd names in Plex Renaming was left off in Media Management

The first places to look: Radarr/Sonarr → Activity → Queue (warnings show on the item), then System → Logs.


11Where to go next (all optional)

Get the steel thread working before adding anything else. When you're ready:

  • Seerr: a request website so family and friends can ask for movies/shows without touching Radarr/Sonarr.
  • Tautulli: stats on who's watching what.
  • Lidarr: same idea as Sonarr, for music.
  • Kometa: prettier Plex collections and poster overlays.
  • Tdarr: re-encode big files to save disk space.
  • Caddy: HTTPS remote access to your apps under your own domain (needs a domain, ~$10-15/yr).