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
mediagroup and useUMASK=002so 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.
SAB handles the download mechanics. Radarr and Sonarr handle final library ownership.
1. JobArr Sends Category
Radarr sends movies, Sonarr sends TV, and the category controls where completed files land.
2. WorkIncomplete Folder
Download, repair, and unpack should use fast local storage for the highest practical throughput.
3. CompleteCategory Folder
Finished files land under a movies or TV staging folder.
4. ImportRadarr / Sonarr
The Arr app imports, renames, and moves or hardlinks into final media roots.
5. VerifyQueue + Permissions
If imports hang, check category, path mapping, permissions, API keys, and mount state.
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
moviesandtvcategories. - 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
- Pick a large legal test download or a known safe workload.
- Set a baseline connection count and record average speed.
- Increase connections by a small amount.
- Watch CPU, disk wait, RAM, and network throughput.
- Repeat until speed stops improving.
- 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:
movieswith folder/data/downloads/usenet/movies. - Sonarr category:
tvwith folder/data/downloads/usenet/tv. - Do not configure SAB sorting to move files into Plex library folders.
Performance Test Procedure
- Set a moderate connection count on the primary server.
- Download one large legal test item.
- Watch SAB speed, CPU, RAM, and disk wait.
- Increase connections in small steps.
- Stop increasing when speed no longer improves.
- 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.iniand 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.
- Plex Homelab Architecture: Storage, GPU Transcoding, and Library Design
- Media Server Storage Design: NAS, CIFS/NFS Mounts, Permissions, and Local Cache
- Prowlarr Setup Guide: Clean Indexer Management for Sonarr and Radarr
- Sonarr Homelab Setup Guide: Install, Update, Optimize, and Connect to Tdarr
- Radarr Homelab Setup Guide: Install, Update, Optimize, Lists, and Tdarr Integration
- SABnzbd Performance Tuning for a Homelab Media Server
- Custom Formats and Quality Profiles Explained for Radarr and Sonarr
- Radarr Import Lists That Do Not Fill Your Library With Junk
- Plex + Tdarr GPU Strategy: Sharing NVIDIA GPUs Without Hurting Playback
- Reverse Proxy for Media Apps: Nginx Proxy Manager, SSL, Access Lists, and Security
- Backup and Disaster Recovery for Plex, Sonarr, Radarr, Tdarr, Prowlarr, and SABnzbd
- Monitoring and Health Checks for a Plex and Arr Homelab
- The Complete Plex, Arr, and Tdarr Homelab Media Automation Series
Related foundation: Building a Production-Grade Tdarr GPU Transcoding Stack for a Homelab.
References
- SABnzbd high speed downloading
- SABnzbd Direct Write
- SABnzbd NNTP pipelining
- SABnzbd Unix permissions
- LinuxServer.io SABnzbd container documentation, independent image and volume guidance
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.

