SABnzbd Performance Tuning for a Homelab Media Server

A detailed SABnzbd tuning guide covering incomplete folders, local disk, connection counts, article cache, Direct Write, categories, priorities, API errors, and Sonarr/Radarr imports.

Rights and lawful use: Use SABnzbd categories, providers, and automation only for downloads you are entitled to access and media you may lawfully keep. Faster connections, Direct Write, and automated Sonarr or Radarr imports do not change the rights attached to the downloaded material.

Who this is for: This is for SABnzbd operators who need a safe starting point for incomplete and completed folders, NNTP connections, cache, categories, API access, and reliable handoff to Sonarr and Radarr.

Before You Start: Safe Defaults

  • Use SABnzbd only with media and services you are allowed to use.
  • Create a shared media group and use UMASK=002 so imports, renames, and Tdarr replacements do not break permissions.
  • Keep config directories persistent and backed up before changing install method, profiles, lists, or paths.
  • Keep admin ports private until authentication, reverse proxy rules, VPN, or access lists are in place.
  • Test one item end to end before enabling broad automation.

Rights note: SABnzbd is a download client. Configure it only for providers, downloads, and content you are allowed to access, and keep API access private.

What SABnzbd Is Responsible For

SABnzbd should download, repair, unpack, and report completion. It should not be the system that organizes your final Plex library. Sonarr and Radarr should do that. This role separation is what keeps imports predictable and prevents your final media folders from filling with partial files, failed unpack folders, or oddly named releases.

For beginners, the goal is to make SAB reliable. For technical users, the goal is to make it fast without starving the rest of the system. That means tuning local disk usage, connection counts, article cache, SSL overhead, categories, post-processing, and API integrations.

Folder Strategy

/data/downloads
  /incomplete # local SSD/NVMe recommended
  /usenet
    /movies # completed movie downloads
    /tv # completed TV downloads

The incomplete folder should usually live on local SSD or NVMe. This is where SAB does high-churn work. The completed category folders can be local or on the same filesystem as final media, depending on whether you want fast local processing or hardlink-friendly imports. Do not use a Radarr or Sonarr root folder as a SAB category folder.

Interactive download pipeline
SABnzbd Download, Repair, Unpack, and Import Flow

SAB handles the download mechanics. Radarr and Sonarr handle final library ownership.

  1. 1. JobArr Sends Category

    Radarr sends movies, Sonarr sends TV, and the category controls where completed files land.

  2. 2. WorkIncomplete Folder

    Download, repair, and unpack should use fast local storage for the highest practical throughput.

  3. 3. CompleteCategory Folder

    Finished files land under a movies or TV staging folder.

  4. 4. ImportRadarr / Sonarr

    The Arr app imports, renames, and moves or hardlinks into final media roots.

  5. 5. VerifyQueue + Permissions

    If imports hang, check category, path mapping, permissions, API keys, and mount state.

Speed is not successA fast SAB queue is only healthy if imports complete automatically afterward.
API keys stay privateKeep SAB API keys inside trusted app configs and avoid public reverse-proxy paths.

Categories for Sonarr and Radarr

  • movies: used only by Radarr.
  • tv: used only by Sonarr.
  • manual: optional category for one-off downloads you do not want the Arr apps to import automatically.
  • testing: optional category when validating speed and disk behavior.

Each Arr app should send jobs with its own category. SAB finishes the job and keeps it in that category. Radarr and Sonarr watch their own categories through the SAB API and import completed items. If categories are mixed, imports become unpredictable.

Connection Counts

More connections are not automatically faster. Each connection adds overhead. SABnzbd documentation recommends testing connection numbers rather than assuming the maximum is best. Start with a moderate count, measure speed, increase gradually, and stop when speed stops improving or CPU overhead rises.

  • Start with 8 to 12 connections per primary server.
  • Increase in small steps and test sustained speed.
  • Do not max out every provider and every block account at once.
  • Use backup servers at lower priority so they fill missing articles instead of competing constantly.
  • If speed drops after increasing connections, back down.

Server Priority

Priority decides which news servers SAB uses first. A primary unlimited server usually gets the best priority. Backup or block accounts usually get lower priority so they are used only when the primary source is missing articles or fails. This can improve completion behavior without wasting block account bandwidth.

Article Cache

The article cache lets SAB hold downloaded article data in memory before writing it out. A larger cache can reduce disk pressure on fast connections, but it should not starve the operating system. If your server has plenty of RAM, raising the article cache can help. If RAM is limited, oversized cache can cause swapping, which is worse than disk writes.

Direct Write and High-Speed Setups

SABnzbd has advanced performance features such as Direct Write. The SABnzbd documentation recommends tuning the article cache first, then enabling Direct Write and watching CPU, disk, and RAM behavior. This is a technical setting. It can help high-speed setups, but it should be tested instead of enabled blindly.

CPU, Disk, and Network Bottlenecks

  • CPU bottleneck: SSL, par repair, unpacking, or antivirus scanning can cap speed.
  • Disk bottleneck: incomplete downloads on slow disks or network mounts can cap speed.
  • Network bottleneck: ISP, VPN, router, or provider limits can cap speed.
  • Provider bottleneck: the Usenet provider may not deliver full speed at your chosen connection count.

Use system tools while downloading. Watch CPU, disk wait, network throughput, and RAM. A speed number alone does not tell you where the bottleneck is.

API Key Missing Errors

If SAB logs an API key missing message, some client or proxy reached SAB without the API key expected by SAB. The source IP and user agent matter. It may be Radarr, Sonarr, a browser, a reverse proxy health check, or something else hitting the API endpoint. Do not ignore it. Identify the source, make sure all integrations use the correct API key, and avoid exposing SAB directly to untrusted networks.

Sonarr and Radarr Import Health

SAB can be fast and still fail the stack if Sonarr and Radarr cannot import. Completed jobs must remain visible long enough for the Arr app to see them. The path reported by SAB must be visible to the Arr app. Permissions must allow the Arr app to read and move or copy files. Categories must match.

Recommended Baseline

  • Incomplete folder on local SSD/NVMe.
  • Separate movies and tv categories.
  • Completed download handling enabled in Radarr and Sonarr.
  • Moderate connection count tested empirically.
  • Primary and backup providers balanced with priority.
  • Article cache tuned based on RAM and disk behavior.
  • Direct Write tested only after baseline is stable.
  • SAB interface protected from public exposure.
  • Permissions aligned with Radarr, Sonarr, Plex, and Tdarr.

Beginner Walk-Through: Why Speed Changes During a Download

SAB speed can rise and fall because it is doing more than downloading. It may be waiting on disk writes, repairing articles, unpacking archives, checking free space, handling SSL, or switching servers because articles are missing. A single speed number does not tell the whole story. Look at CPU, disk, RAM, network, and SAB status together.

Validation and Evidence

  1. Pick a large legal test download or a known safe workload.
  2. Set a baseline connection count and record average speed.
  3. Increase connections by a small amount.
  4. Watch CPU, disk wait, RAM, and network throughput.
  5. Repeat until speed stops improving.
  6. Back down one step if overhead increases or speed becomes less stable.

Operational Safety

Do not tune SAB while Radarr, Sonarr, and Tdarr are all doing heavy work unless that is the exact stress test you want. For normal tuning, isolate the workload. Once SAB is stable alone, test it during Tdarr processing and Plex playback. The best settings are the ones that keep the whole stack healthy, not the ones that win a single speed test.

Implementation Playbook: Install and Tune SABnzbd

Ubuntu Native Install

Native SABnzbd installs work well when you want direct systemd control and host paths. Keep incomplete downloads on local disk if possible, and make sure the service user can write the download folders.

sudo apt update
sudo apt install -y sabnzbdplus
sudo usermod -aG media sabnzbd
sudo mkdir -p /data/downloads/incomplete /data/downloads/usenet/{movies,tv}
sudo chgrp -R media /data/downloads
sudo chmod -R 2775 /data/downloads
sudo systemctl enable --now sabnzbdplus
sudo systemctl status sabnzbdplus

Docker Compose Install

Before creating this SABnzbd service, resolve the host identities that will write and import /data/downloads. The displayed PUID and PGID are placeholders: substitute the SABnzbd account's UID and the shared media GID, then confirm new completed files remain writable by the Sonarr and Radarr import processes.

sudo groupadd -f media
id -u mediauser
getent group media | cut -d: -f3

sudo mkdir -p /opt/media-stack
cd /opt/media-stack
cat > .env <<'EOF'
PUID=1000
PGID=1001
TZ=America/Chicago
UMASK=002
EOF

Production Docker note: The sample names the LinuxServer SABnzbd image clearly, but a durable deployment should pin the exact release tag or digest that passed your download and import checks. Preserve /opt/media-stack/sabnzbd/config before an update, change SABnzbd independently, and verify categories, API connectivity, permissions, and queue recovery before retaining the new image.

services:
  sabnzbd:
    image: lscr.io/linuxserver/sabnzbd:latest
    container_name: sabnzbd
    env_file: .env
    volumes:
      - /opt/media-stack/sabnzbd/config:/config
      - /data/downloads:/data/downloads
    ports:
      - "127.0.0.1:8080:8080"
    networks:
      - media
    restart: unless-stopped

networks:
  media:
    name: media
    driver: bridge

Only bind SABnzbd to the LAN or a public hostname after authentication is enabled and the reverse proxy or VPN rules are in place. SAB has download-client authority and an API key, so it deserves the same protection as Radarr and Sonarr.

Folder Settings

  • Temporary download folder: /data/downloads/incomplete.
  • Completed download folder: /data/downloads/usenet.
  • Radarr category: movies with folder /data/downloads/usenet/movies.
  • Sonarr category: tv with folder /data/downloads/usenet/tv.
  • Do not configure SAB sorting to move files into Plex library folders.

Performance Test Procedure

  1. Set a moderate connection count on the primary server.
  2. Download one large legal test item.
  3. Watch SAB speed, CPU, RAM, and disk wait.
  4. Increase connections in small steps.
  5. Stop increasing when speed no longer improves.
  6. Only then test Direct Write or larger article cache settings.
docker logs --tail=100 sabnzbd
df -h /data/downloads /data/cache
iostat -xz 1
curl -I http://127.0.0.1:8080

The fastest single download setting is not always the best media-server setting. Tune SAB while watching the whole host, especially if Plex and Tdarr share it.

This guide is documentation-backed; TechGeeks did not run the example download, connection-count sweep, disk comparison, or Direct Write test for this revision. A higher dashboard rate does not prove the setting is stable, that repair and unpack complete, or that Sonarr and Radarr can import. Low CPU use does not prove the disk, provider, VPN, or network is not the bottleneck. Record the legal test item, SABnzbd and image version, provider, connections, cache, storage path, filesystem, CPU, memory, and repeated measurements before comparing results.

Security, Privacy, Legal, and Recovery Boundaries

  • Security: keep the SABnzbd interface and API private, rotate exposed keys, restrict service and container permissions, and do not place active downloads in a trusted media root.
  • Privacy: queue history, filenames, provider details, client addresses, categories, and logs can reveal viewing interests and infrastructure. Restrict access and retention.
  • Legal: use only providers and downloads you are authorized to access. Performance tuning does not change copyright, provider, or account-sharing obligations.
  • Recovery: back up sabnzbd.ini and container configuration, record the baseline values, change one variable at a time, and restore the known-good settings if repairs, imports, or host workloads regress.

Related TechGeeks and Series Navigation

This SABnzbd chapter occupies the download stage of the Plex, Arr, and Tdarr series. Its folder, category, API, and permission choices feed the Sonarr and Radarr import paths linked below; the later monitoring and disaster-recovery chapters cover how to detect and recover failures in that handoff.

Related foundation: Building a Production-Grade Tdarr GPU Transcoding Stack for a Homelab.

References

Need help applying this?

Bring TechGeeks into the real environment.

If you are working through this on a live network, WordPress site, Linux server, AI workflow, or PisoWiFi deployment, send the context and we can help turn it into a practical plan.

Request helpGet field notesRecommended gear

Leave a Reply

Your email address will not be published. Required fields are marked *