Disclosure: RunAICode.ai may earn a commission when you purchase through links on this page. This doesn’t affect our reviews or rankings. We only recommend tools we’ve tested and believe in. Learn more.

A Usenet setup is five small apps, each doing one job. We have paid for Newshosting Unlimited since December 2022 and use it every day. Our home lab runs NZBGet on a seedbox, Prowlarr with three indexers, Sonarr and Radarr for automation, and Plex for playback. Most problems come from two mistakes: mismatched folder paths and mismatched category names. This guide avoids both from the start.

You’ll set everything up on one Linux machine with Docker, in about an hour.

Disclosure: Newshosting links here are affiliate links. We earn a commission if you sign up, at no cost to you. Apart from these referrals, we are not affiliated with Newshosting or authorized to speak for them. They gave us three free months for joining their program. We have paid for Unlimited since December 2022. Our disclosure policy.

Use it legally. Usenet is an old discussion and file network, and these are general-purpose tools. Only download what you have the right to: open-licensed or public-domain media, software you’re licensed for, and your own files. Copyright law applies on Usenet like anywhere else. We won’t help with finding infringing material.

The 8 steps: 1 Install Docker · 2 Make the /data folder · 3 Start the apps · 4 Connect SABnzbd · 5 Add your indexer · 6 Set up Sonarr and Radarr · 7 Link Prowlarr · 8 Point Plex at the library.

Seven words you need

What you need

Skip this guide if you only want the odd file (Newshosting’s own newsreader, included with every account, is simpler) or your computer sleeps at night (Sonarr and Radarr need an always-on machine).

How the pieces fit

  1. You add a show in Sonarr (or a movie in Radarr).
  2. Sonarr asks Prowlarr’s indexers for an NZB.
  3. Sonarr sends the NZB to SABnzbd.
  4. SABnzbd downloads it from Newshosting, repairs it and unpacks it.
  5. Sonarr moves the file into your library.
  6. Plex plays it.
Diagram: Sonarr or Radarr search your indexer through Prowlarr and send the NZB to SABnzbd. SABnzbd downloads from Newshosting into /data/usenet/complete, Sonarr or Radarr move the file into /data/media, and Plex plays it.
The whole setup on one page: find, download, watch.

Which downloader? We run NZBGet, but SABnzbd is easier for a first setup. Its setup wizard asks for your server right away. Its built-in categories (movies, tv) already match Sonarr and Radarr. NZBGet gets a short box after step 4.

Newshosting server settings

You’ll type these into SABnzbd in step 4. Keep this table handy.

Setting Value
Host news.newshosting.com (picks the nearest location for you)
Host, if speeds are poor in Europe news-eu.newshosting.com
Port 563
SSL / Encryption On
Fallback port if 563 is blocked 443 (still SSL)
Username / Password Your Newshosting login
Connections Start at 20. Plan max (October 2026): 100 on Unlimited and XL, 30 on Lite.

Never use port 119. It works, but it is unencrypted.

How many connections? Start with 20. A home line usually fills with 10 to 30 connections; more just adds overhead. We run 30, well under the 100 our plan allows. If downloads don’t reach your internet speed, add 5 at a time.

Step-by-step setup

1. Install Docker

Why: each app runs in its own container, so updates are one command.

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER

This is Docker’s own convenience script. It installs Docker and Docker Compose, and it’s fine for a home server.

Then log out and log back in (or reboot) so you can run Docker without sudo.

Check it works: docker run hello-world prints “Hello from Docker!” and docker compose version prints a version number.

2. Make the /data folder

Why: when downloads and the library live under one folder on one disk, Sonarr and Radarr can move a finished file instantly instead of copying it byte by byte.

sudo mkdir -p /data/usenet/incomplete /data/usenet/complete/{tv,movies} /data/media/{tv,movies}
sudo chown -R $USER:$USER /data
sudo chmod -R 775 /data

chown makes you the owner. chmod 775 lets you and your group read and write. That gives you this layout:

/data
├── usenet
│   ├── incomplete
│   └── complete
│       ├── movies
│       └── tv
└── media
    ├── movies
    └── tv

Check it works: ls -ld /data/media/tv shows your username as the owner.

3. Start the apps

Why: one file describes the whole stack, so you can rebuild it anywhere in minutes.

First, make a folder and a small .env settings file with your user ID, group ID and time zone.

mkdir -p ~/mediastack && cd ~/mediastack
echo "PUID=$(id -u)" > .env
echo "PGID=$(id -g)" >> .env
echo "TZ=$(timedatectl show -p Timezone --value)" >> .env
cat .env

cat .env prints three lines, for example PUID=1000, PGID=1000 and TZ=America/New_York. If the TZ= line is empty or says Etc/UTC and that isn’t where you live, run nano .env and fix it by hand, written like America/Chicago (the “TZ identifier” column on Wikipedia’s list of tz database time zones). Save with Ctrl+O, Enter, then Ctrl+X.

Now create the compose file:

nano docker-compose.yml

Paste the file below. To paste in nano, right-click or press Ctrl+Shift+V. Nothing in it needs editing. Keep the spaces exactly as shown, and don’t use tabs. Save with Ctrl+O, Enter, then Ctrl+X.

services:
  sabnzbd:
    image: lscr.io/linuxserver/sabnzbd:latest
    container_name: sabnzbd
    hostname: sabnzbd
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
      - UMASK=002
    volumes:
      - ./config/sabnzbd:/config
      - /data/usenet:/data/usenet
    ports:
      - 8080:8080
    restart: unless-stopped

  prowlarr:
    image: lscr.io/linuxserver/prowlarr:latest
    container_name: prowlarr
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
      - UMASK=002
    volumes:
      - ./config/prowlarr:/config
    ports:
      - 9696:9696
    restart: unless-stopped

  sonarr:
    image: lscr.io/linuxserver/sonarr:latest
    container_name: sonarr
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
      - UMASK=002
    volumes:
      - ./config/sonarr:/config
      - /data:/data
    ports:
      - 8989:8989
    restart: unless-stopped

  radarr:
    image: lscr.io/linuxserver/radarr:latest
    container_name: radarr
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
      - UMASK=002
    volumes:
      - ./config/radarr:/config
      - /data:/data
    ports:
      - 7878:7878
    restart: unless-stopped

  plex:
    image: lscr.io/linuxserver/plex:latest
    container_name: plex
    network_mode: host
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
      - VERSION=docker
      - PLEX_CLAIM=          # only if step 8 needs it
    volumes:
      - ./config/plex:/config
      - /data/media:/data/media
    restart: unless-stopped

Two details matter here.

  1. Same paths everywhere. Sonarr and Radarr see all of /data. SABnzbd sees /data/usenet at the same path. So a file at /data/usenet/complete/tv has the same address in every app.
  2. Apps find each other by name. Inside this stack, each container is reachable by its service name. Sonarr reaches SABnzbd at http://sabnzbd:8080, not at an IP address. You will type these names in steps 6 and 7. The hostname: sabnzbd line lets SABnzbd accept those requests. SABnzbd only reads it on its very first start, so leave it in before you run the next command.

Start it:

docker compose up -d
docker compose ps

The first start downloads each app and can take a few minutes.

Check it works: docker compose ps lists five containers marked “Up”. Find your server’s address with hostname -I (use the first address it prints, such as 10.0.0.25) and put it in place of SERVER-IP below.

App Address
SABnzbd http://SERVER-IP:8080
Prowlarr http://SERVER-IP:9696
Sonarr http://SERVER-IP:8989
Radarr http://SERVER-IP:7878
Plex http://SERVER-IP:32400/web

Keep these on your home network. Do not port-forward them to the internet.

4. Connect SABnzbd

Why: this is the only app that talks to Newshosting. Everything else talks to it.

  1. Open http://SERVER-IP:8080. The Quick-Start wizard opens.
  2. Pick your language. On the Server Details page, enter host news.newshosting.com and your Newshosting username and password. Turn SSL on, check that Port says 563, and set Connections to 20.
  3. Click Test Server. Next stays blocked until the test passes, so a wrong password shows up right here. Then click Next and finish the wizard.
  4. Open the gear icon (Config) → Folders. Set Temporary Download Folder to /data/usenet/incomplete and Completed Download Folder to /data/usenet/complete. Click Save Changes.
  5. Config → Categories. Set the Folder/Path of movies to movies and click that row’s Save. Then do the same for tv. (Saving reloads the page, so finish one row at a time.) Downloads in category tv now land in /data/usenet/complete/tv, and movies in /data/usenet/complete/movies.
  6. Config → General → Security. Copy the API Key into a note. Sonarr and Radarr need it in step 6.
SABnzbd Quick-Start Wizard Server Details form with Host news.newshosting.com, a placeholder username, a masked password, SSL switched on, Port 563 and Connections 20.
Step 4: SABnzbd's Server Details page. Host, your Newshosting login, then SSL on, port 563 and 20 connections.
SABnzbd Folders settings with Temporary Download Folder set to /data/usenet/incomplete and Completed Download Folder set to /data/usenet/complete, with the Save Changes button highlighted.
Config → Folders: both download folders live under /data/usenet.
SABnzbd Categories table where the movies row has Folder/Path movies and the tv row has Folder/Path tv, with each row's Save button highlighted.
Config → Categories: set the folder for movies and tv, saving one row at a time.

Check it works: SABnzbd’s main page shows no red warning at the top. Config → Servers lists news.newshosting.com with a green icon, and Test Server there still succeeds.

Alternative: NZBGet instead of SABnzbd. In the compose file, replace the whole sabnzbd block with this one (same indentation), then run docker compose up -d --remove-orphans (that also removes the old SABnzbd container):

  nzbget:
    image: lscr.io/linuxserver/nzbget:latest
    container_name: nzbget
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
      - NZBGET_USER=pick-a-username
      - NZBGET_PASS=pick-a-password
    volumes:
      - ./config/nzbget:/config
      - /data/usenet:/data/usenet
    ports:
      - 6789:6789
    restart: unless-stopped

In NZBGet (http://SERVER-IP:6789, log in with the username and password above), open Settings:

  1. PATHS: set DestDir to /data/usenet/complete and InterDir to /data/usenet/incomplete. The defaults point at /downloads, which Sonarr can’t see.
  2. NEWS-SERVERS → Server1: Active yes, Host news.newshosting.com, Port 563, Encryption yes, your username and password, Connections 20. Click Test connection.
  3. CATEGORIES: rename Category1 to movies and Category2 to tv. Leave their DestDir empty.
  4. Click Save all changes, then reopen CATEGORIES and check that nothing got duplicated.

Later, in step 6: add NZBGet instead of SABnzbd, with host nzbget, port 6789 and the username and password above. Radarr’s default NZBGet category is Movies with a capital M. Change it to movies.

5. Add your indexer

Why: you enter the indexer once here, and Prowlarr keeps Sonarr and Radarr in sync.

  1. Open http://SERVER-IP:9696. On first launch, an Authentication Required box asks you to set a login. Set Authentication Method to Forms (Login Page), choose a username, type a password twice and click Save. Leave Authentication Required on Enabled. (“Disabled for Local Addresses” also needs the Allowed Hosts field filled in, or Save silently fails.)
  2. Go to Indexers → + (Add Indexer). Type your indexer’s name. If it isn’t listed, pick Generic Newznab and enter the URL from your indexer’s API page.
  3. Paste the API key from your indexer’s profile page.
  4. Click Test, then Save.
Prowlarr Authentication Required dialog with Authentication Method Forms (Login Page), Authentication Required Enabled, a username and masked password fields, and a Save button.
Step 5: the first-launch login screen. Sonarr and Radarr show the same one.
Prowlarr Add Indexer - Newznab dialog with a placeholder URL and placeholder API key filled in, and the Test, Cancel and Save buttons highlighted.
Adding an indexer in Prowlarr: its URL and API key, then Test and Save.

Check it works: the indexer shows in the list with no warning icon. On Prowlarr’s Search page, search for ubuntu and you should get results.

6. Set up Sonarr and Radarr

Why: these watch for what you add, hand the jobs to SABnzbd, then file the results.

Do this in Sonarr first, then repeat in Radarr using the values in parentheses.

  1. Open http://SERVER-IP:8989 (Radarr: 7878) and set a login the same way as Prowlarr.
  2. Settings → Media Management → Add Root Folder: type /data/media/tv (Radarr: /data/media/movies) in the file browser and click Ok. On the same page, turn on Rename Episodes (Radarr: Rename Movies) and save. (Renaming is optional but keeps your library tidy.)
  3. Settings → Download Clients → + → SABnzbd. Host sabnzbd, port 8080, the API key from step 4, category tv (Radarr: movies). Click the ✓ button at the bottom to test it, then Save.
  4. Completed Download Handling is on by default and is what imports finished files. You only see it on the Download Clients page after clicking Show Advanced. Leave it on.
  5. Settings → General → Security. Copy the API key. Prowlarr needs it next.
Sonarr Media Management settings with Rename Episodes ticked, the Root Folders table listing /data/media/tv, and the Save Changes button in the toolbar.
Step 6: Sonarr's root folder is /data/media/tv. Renaming keeps the library tidy.
Sonarr Add Download Client - SABnzbd form with Host sabnzbd, Port 8080, the API key hidden, Category tv, and a green check mark on the test button.
Sonarr talks to SABnzbd by its container name. The green check means the test passed.

If the SABnzbd test says “Hostname verification failed”, go to SABnzbd’s Config → Special → host_whitelist, type , sabnzbd at the end, and click Save Changes (restart SABnzbd if it asks). Then test again. Typing your server’s IP address as the Host in Sonarr also works.

Check it works: the download client test shows a green check. System → Status may say “No indexers available with Automatic Search enabled”. That is expected and goes away after step 7. Any warning about root folders is a real problem: recheck step 2.

Why: this pushes your indexer into both apps so you never enter it twice.

In Prowlarr, go to Settings → Apps → + → Sonarr. Change both server fields. They start as localhost, which doesn’t work between containers.

Field Sonarr Radarr
Sync Level Full Sync Full Sync
Prowlarr Server http://prowlarr:9696 http://prowlarr:9696
Sonarr Server / Radarr Server http://sonarr:8989 http://radarr:7878
API Key From Sonarr From Radarr
Prowlarr Add Application - Sonarr form with Sync Level Full Sync, Prowlarr Server http://prowlarr:9696, Sonarr Server http://sonarr:8989, the API key hidden, and a green check mark on the test button.
Step 7: replace both localhost addresses with the container names.

Click the ✓ button to test, then Save. Click + again, choose Radarr, and use the Radarr column.

Check it works: in Sonarr, Settings → Indexers now lists your indexer with “(Prowlarr)” after its name. The “No indexers available” warning is gone.

8. Point Plex at the library

Why: Plex only reads /data/media, so it never sees half-finished downloads.

  1. Open http://SERVER-IP:32400/web and sign in. If Plex says no server was found: get a code from plex.tv/claim and paste it after PLEX_CLAIM= in the compose file. Then run docker compose up -d within 4 minutes (the code expires).
  2. Add Library → TV Shows → folder /data/media/tv. Add another for Movies → /data/media/movies. Those are the same folders from step 2, as Plex sees them.

Check it works (end to end):

  1. In Radarr, click Movies → Add New and search for Big Buck Bunny. It is a Creative Commons film from the Blender Foundation.
  2. Pick root folder /data/media/movies and any quality profile (Any is fine for a test). Tick Start search for missing movie, then click Add Movie.
  3. Within a minute the job appears in SABnzbd’s queue.
  4. When it finishes, Radarr’s Activity → History shows it as Imported. Plex shows it after the next library scan.
Radarr add dialog for Big Buck Bunny (2008) with Root Folder /data/media/movies, Quality Profile Any, Start search for missing movie ticked, and the green Add Movie button.
The end-to-end test with Big Buck Bunny, an open film by the Blender Foundation (poster CC BY 3.0).

If your indexer has no release of it, try another open-licensed title. That is a search result, not a setup problem.

Prefer Jellyfin? Replace the whole plex block with this (no network_mode, VERSION or PLEX_CLAIM), run docker compose up -d --remove-orphans, and open http://SERVER-IP:8096. Its setup wizard asks for the same two library folders:

  jellyfin:
    image: lscr.io/linuxserver/jellyfin:latest
    container_name: jellyfin
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
    volumes:
      - ./config/jellyfin:/config
      - /data/media:/data/media
    ports:
      - 8096:8096
    restart: unless-stopped

Common mistakes

Troubleshooting

Problem Likely cause Fix
“Authentication failed” from the server Wrong username or password, or the account isn’t active yet Log in to the Newshosting website with the same details. Retype them in the downloader, with no trailing spaces.
SSL or certificate errors SSL on a non-SSL port, or antivirus intercepting traffic Use port 563 with SSL on, or 443 with SSL if 563 is blocked.
“Permission denied” in logs PUID/PGID in .env don’t match the owner of /data Check id -u and id -g against ~/mediastack/.env, run sudo chown -R $USER:$USER /data, then docker compose up -d.
Downloads stuck in incomplete Disk full, or a failed repair/unpack Check df -h /data. In SABnzbd’s History, open the failed job for the reason.
“Hostname verification failed” sabnzbd not in SABnzbd’s host_whitelist Config → Special → host_whitelist, add , sabnzbd, Save Changes. Or use the server’s IP as the Host.
Download finished but Sonarr never imports it Path or category mismatch SABnzbd must mount /data/usenet at the same path Sonarr sees. The category in Sonarr must equal the downloader’s.
Slow speeds Too few or too many connections, or a distant server Try 20, then 30 connections. Europe: try news-eu.newshosting.com. Test with a wired connection.

For any of these, docker compose logs -f sonarr (or the app name) usually shows the real error in the last few lines. Paste the last 30 lines into Claude Code and ask what failed; it is good at reading these logs. Delete any API keys or passwords from the paste first. Our Claude Code complete guide shows how.

Keeping it sane

Advanced: if /data is a NAS mount, make Docker wait for it, or the apps can start against an empty folder. Run sudo systemctl edit docker, add the lines below, save, then run sudo systemctl daemon-reload. Keep _netdev on the /etc/fstab line.

[Unit]
RequiresMountsFor=/data

FAQ

Is there a free trial? No. At the time of writing (October 2026) Newshosting doesn’t offer one. Every plan has a 30-day money-back guarantee instead (see their terms).

Which plan should I get? For this setup, Unlimited. It allows 100 connections and has no data cap. At the time of writing (October 2026) it was $12.95 a month on the 1-year term (billed $155.40 up front) or $14.95 month to month, and it auto-renews at the then-current rate. Lite’s data cap and 30 connections are tight for automation. We have used Unlimited since 2022. You can see the current plans on the partner page (affiliate link).

Do I need a VPN? Not for Usenet itself. With SSL on port 563, the connection between your downloader and Newshosting is already encrypted. Newshosting bundles a VPN on some plans for general browsing (as of October 2026); check the plan page for which ones.

How far back do posts go? As of October 2026, Newshosting advertises 6,650+ days of retention (that works out to over 18 years), though their terms don’t guarantee it.

Our recommendation

Follow the steps in order and get one test item from Radarr into Plex before you change anything else. After that, add the shows and movies you have the rights to and let it run. If you don’t have an account yet, Newshosting’s partner signup page (affiliate link) is the one we recommend, and you can compare plans on the main site. If you get stuck, ask on our Discord (pick the Self-Hoster role when you join).