Skip to Content
SABnzbd

SABnzbd

Automated Usenet Binary Newsreader

SABnzbd is a free, open-source Usenet binary newsreader written in Python. It automates downloading from Usenet with powerful post-processing including unpacking, repair, and organization. On QuickBox, SABnzbd runs as a per-user daemon with a Python 3.11 virtual environment at /opt/username/SABnzbd, self-signed SSL certificates for secure connections, par2cmdline-turbo for high-speed repairs, and a web interface published through the nginx reverse proxy.

Usenet Downloads

Automated binary downloading from Usenet newsgroups with NZB support

Post-Processing

Automatic unpacking, repair, and file organization with custom scripts

SSL/HTTPS

Per-user SSL certificates for secure connections to Usenet providers

par2cmdline-turbo

High-speed repair with optimized par2 implementation compiled from source

Python 3.11 venv

Isolated virtual environment with system-site-packages support

Category System

Smart categorization for automated *arr application integration

Usenet Provider Required
Info

SABnzbd requires a Usenet provider subscription to download content. You’ll need server credentials (host, port, username, password) from your provider to configure SABnzbd.


Installation

Have your Usenet provider credentials (host, port, username, password) ready — you enter them in the SABnzbd web interface after installation.

Install from the Dashboard

Open App Dashboard → Package Management (/dashboard?mode=packages), find SABnzbd in the catalog (browse Download Clients or search), and click Install. The install dialog offers a channel choice — Stable (default) or Beta — for the SABnzbd release you want. The dashboard streams the install log live and SABnzbd appears in your Application Control panel when it finishes. Reinstall and Remove are in the same Package Management panel. To update, use the amber Update badge on the SABnzbd row in the App Dashboard.

The default channel is Stable; pick Beta only if you want development releases. See Channels & Versions for how channels work. What you see and can manage is gated by your account: admins manage any user’s apps; regular users manage their own. For the full package flow see App Management.

Install from the CLI (automation)

The CLI runs the same install and is suited to automation and scripting. It installs the Stable release by default; add --beta for the development release:

bash
qb install sabnzbd -u username
CommandDescription
qb install sabnzbd -u username
Install SABnzbd with latest stable version
qb install sabnzbd -u username --beta
Install beta/development release of SABnzbd
qb reinstall sabnzbd -u username
Reinstall while preserving QuickBox integration
qb update sabnzbd -u username
Update SABnzbd to latest stable version
qb remove sabnzbd -u username
Remove SABnzbd and clean up files
qb help sabnzbd
Display comprehensive help information

CLI Options

OptionDescription
-u, --usernameRequired

Target QuickBox username for install/remove/update operations

--beta

Install the beta/development release of SABnzbd

Automatic Port Assignment
Tip

QuickBox automatically assigns ports starting from base values:

  • HTTP port: Base 65080 (auto-incremented per user if port is in use)
  • HTTPS port: Base 65131 (auto-incremented per user if port is in use)

The system checks if each port is available and increments until a free port is found. Your assigned ports are stored in the QuickBox dashboard and in ~/.config/SABnzbd/sabnzbd.ini.


Directory Layout

Path
Description
/opt/username/SABnzbd
.venv/
Python 3.11 virtual environment
SABnzbd.py
Main SABnzbd executable
sabnzbd/
SABnzbd source code
scripts/
Post-processing scripts
Path
Description
/home/username/.config/SABnzbd
sabnzbd.ini
Main configuration file (auto-written with QuickBox defaults)
sabnzbd.log
Application log
Downloads/
Download directories
Downloads/complete/
Completed downloads
Downloads/incomplete/
In-progress downloads
admin/
Admin folder with SSL certificates
scripts/
User post-processing scripts (FileBot integration)
Path
Description
/home/username/.ssl
cacert.pem
CA bundle fetched from curl.se
username-selfsigned.crt
Self-signed cert generated per user (1095 days validity)
username-selfsigned.key
TLS key; permissions 750

Network & Access

SABnzbd binds to localhost on auto-assigned HTTP/HTTPS ports (base ports 65080/65131, auto-incremented per user if already in use). QuickBox publishes the UI through nginx at:

https://yourserver.com/username/sabnzbd/ 

Authentication Layers:

  • Primary: SABnzbd’s built-in authentication (username/password configured in SABnzbd settings)
  • Secondary: nginx Basic Auth with /etc/htpasswd.d/htpasswd.username (optional additional layer)

During installation, QuickBox automatically configures SABnzbd with your QuickBox username/password for convenience. You can change SABnzbd’s credentials later in Config → General → Security.

Proxy details
Info

Traffic terminates at nginx over HTTPS, then proxies to https://127.0.0.1:<assigned_https_port>/username/sabnzbd. Ports are auto-incremented from base values (65080/65131) until an available port is found, then written to the service and nginx configs. SABnzbd runs with self-signed SSL certificates for the internal connection.

API Access
Tip

The /username/sabnzbd/api endpoint bypasses nginx Basic Auth to allow *arr applications and other automation tools to connect using only the API key. All other paths have dual authentication (nginx + SABnzbd).

Dual Authentication
Info

SABnzbd has its own built-in login. The nginx Basic Auth in front of it is an optional secondary layer for the web UI. The /username/sabnzbd/api endpoint skips nginx Basic Auth so *arr apps can connect with just the API key — all other paths require both.


Services

SABnzbd uses a templated systemd unit (sabnzbd@.service) running as a simple daemon:

bash
# Check status
systemctl status sabnzbd@username
 
# View logs
journalctl -u sabnzbd@username -f
 
# Restart service
systemctl restart sabnzbd@username
 
# Stop service
systemctl stop sabnzbd@username
 
# Start service
systemctl start sabnzbd@username

The service runs SABnzbd in its Python virtual environment and restarts it automatically on failure.

Logs
Tip

Runtime logs live at /home/username/.config/SABnzbd/sabnzbd.log. You can also view systemd logs with journalctl -u sabnzbd@username -f.


Initial Configuration

On first access, SABnzbd presents a Quick-Start Wizard to configure your Usenet provider and basic settings:

1. Complete Quick-Start Wizard

  1. Language Selection - Choose your preferred language
  2. Server Setup - Enter Usenet provider credentials
    • Host: Your provider’s server address (e.g., news.yourprovider.com)
    • Port: Usually 563 for SSL or 119 for standard
    • Username/Password: From your Usenet provider account
    • Connections: Maximum simultaneous connections (check provider limits)
  3. Security - API key is auto-generated, save it for *arr apps

2. Configure Categories

Create categories for automated downloads:

  1. Navigate to Config → Categories
  2. Create categories matching your *arr apps: sonarr, radarr, lidarr, readarr
  3. Set appropriate download paths for each category
  4. Configure post-processing options (unpacking, deletion of archives)

Configuration

Connect *arr apps to SABnzbd using these settings:

SettingValue
Hostlocalhost
Port443
API KeyFound on your QuickBox App Dashboard → SABnzbd row → API & Secrets
Use SSLEnabled
URL Base/username/sabnzbd
UsernameSABnzbd username (initially your QuickBox username, changeable in SABnzbd)
PasswordSABnzbd password (initially your QuickBox password, changeable in SABnzbd)
CategoryCreate as needed: sonarr, radarr, lidarr, etc.
Not seeing the URL Base option?
Info

If you are not seeing the URL Base field, click the cog icon to enable advanced settings in the download client configuration.

Authentication Note(s)
Warning

*arr applications connect directly to SABnzbd using SABnzbd’s built-in authentication, not nginx’s Basic Auth. Make sure you’re using the correct username/password configured in SABnzbd (Config → General → Security).


Why use port 443 and not the SABnzbd HTTPS port directly? Because QuickBox terminates SSL at nginx, so all external connections use standard HTTPS (443) with the URL base to route to SABnzbd. This simplifies firewall rules and ensures secure connections and never exposes SABnzbd’s internal port directly.


FileBot Post-Processing (courtesy setup)

View the FileBot documentation for full FileBot setup and configuration.

QuickBox can wire SABnzbd to FileBot during FileBot installation:

  1. Install FileBot with the SABnzbd option:
    bash
    qb install filebot -u username -o sabnzbd -mp /path/to/media
  2. QuickBox drops ~/.config/SABnzbd/scripts/sabnzbd-postprocess.sh and rewrites it with your username and media path.
  3. QuickBox automatically updates sabnzbd.ini to enable the script for anime, movies, and tv categories.
  4. In SABnzbd → Settings → Categories, verify the script is assigned to relevant categories.
What the script does
Success

Invokes /usr/local/bin/username/filebot with the AMC preset, duplicates to your media path, skips conflicts, and honors /home/username/.config/Filebot/.excludes.

The script copies matched media into your configured media path using FileBot’s AMC preset (duplicate action, skip on conflict), honoring your exclude list. QuickBox assigns it to the anime, movies, and tv categories automatically.

Manual Configuration

If you need to manually configure FileBot post-processing:

  1. Create or edit categories in SABnzbd → Config → Categories
  2. Assign the script to each category where you want automatic processing
  3. Set download paths per category if desired
  4. Test by adding a download with the appropriate category
Testing the integration
Tip

After setup, add a test NZB file with a category that has the script assigned. Check /home/username/.config/Filebot/amc.log for FileBot processing output and verify files appear in your media directory.

Troubleshooting FileBot Integration

SymptomSolution
Script not executingVerify script_dir = scripts in [misc] section of sabnzbd.ini
Permission denied errorsEnsure script has execute permissions: chmod +x ~/.config/SABnzbd/scripts/*.sh
FileBot license errorInstall FileBot with valid license: qb install filebot -u username
Files not moving to media folderCheck CONFIG_OUTPUT path in script matches your media directory
No processing logsCheck amc.log in SABnzbd download directory or ~/.config/Filebot/
Script shows in SABnzbd but not workingVerify SABnzbd service restarted after FileBot install
FileBot License Required
Warning

FileBot requires a valid license for full functionality. The script will execute but may have limited capabilities without a license. Purchase a license from filebot.net  and activate it via qb install filebot when prompted.


Python Environment & Dependencies

SABnzbd on QuickBox runs in an isolated Python 3.11 virtual environment with the following characteristics:

ComponentDetails
Python VersionPython 3.11 (installed in virtual environment)
Virtual Environment/opt/username/SABnzbd/.venv
Python Executable/opt/username/SABnzbd/.venv/bin/python3.11
System Site PackagesEnabled (--system-site-packages flag)
Par2 Utilitypar2cmdline-turbo (compiled from source for high-speed repairs)
RequirementsInstalled from SABnzbd requirements.txt (includes cryptography, feedparser, etc.)
EncodingUTF-8 (via PYTHONIOENCODING=utf-8 environment variable)
Why Python 3.11?
Info

SABnzbd benefits from Python 3.11’s performance improvements (10-60% faster than 3.10) and better error messages. The virtual environment isolates dependencies while --system-site-packages allows access to system-wide packages.


Browser Download Index

SABnzbd gets the same per-user browser file index as the torrent clients. It lists your SABnzbd completed-download folder in a dark-themed fancyindex view, which is useful for grabbing a single finished file without loading the SABnzbd web interface. The Download Activity panel in the dashboard links to it as Open download folder.

https://your-server-ip/username.sabnzbd.downloads 
How it works
Info

The nginx config at /etc/nginx/software/username.dlindex.conf serves your SABnzbd completed-download folder through the shared fancyindex snippet. By default that is /home/username/.config/SABnzbd/Downloads/complete. Access is protected by auth_basic against /etc/htpasswd.d/htpasswd.username, which is the same credential file used for other QuickBox user endpoints.

  • The listing is the folder set as complete_dir in SABnzbd (the completed download folder in sabnzbd.ini), not a fixed location. Change it in SABnzbd and QuickBox re-renders the index on its own, usually within seconds, with an hourly check as a safety net. If the folder can’t be served (it is a symlink, it is outside your home folder, /mnt and /media, it doesn’t exist, or the web server can’t read it), the index keeps serving the default folder and the dashboard shows a note beginning “Showing the default folder.” See Open download folder for each note.
  • Removing SABnzbd keeps your finished downloads. qb remove sabnzbd deletes the client’s configuration and install files but never the completed-download folder or what is inside it, so the default folder and the path leading to it stay while the rest of ~/.config/SABnzbd is deleted, and the remove output names the folder it kept. Reinstalling keeps the folder you had by writing complete_dir back into the fresh configuration.
  • If the page fails to load while the rest of the dashboard works, see Downloads / browse index page not loading.

Troubleshooting

SABnzbd Won’t Start

Check service status and logs:

bash
# Check service status
systemctl status sabnzbd@username
 
# View recent logs
journalctl -u sabnzbd@username -n 50
 
# View live logs
journalctl -u sabnzbd@username -f
 
# Check SABnzbd's own log file
tail -f ~/.config/SABnzbd/sabnzbd.log

Common causes:

  • Port conflicts (another service using 65080 or 65131)
  • Corrupted Python virtual environment
  • Permission issues on config directory
  • Missing or corrupted SSL certificates

Check for port conflicts:

bash
# Check assigned ports
grep -E 'https_port|port' ~/.config/SABnzbd/sabnzbd.ini
 
# Check if ports are in use
ss -tulpn | grep -E '65080|65131'

Cannot Connect to Usenet Server

Symptoms

  • Connection refused errors in SABnzbd logs
  • Authentication failures with Usenet provider
  • SSL handshake failures
  • Downloads not starting

Resolution

  • Verify credentials are correct on provider website
  • Check SSL port (usually 563) vs standard port (119)
  • Ensure firewall allows outbound connections
  • Verify provider account is active and paid up

Python Virtual Environment Issues

If SABnzbd fails to start with Python-related errors:

bash
# Check Python version in venv
/opt/username/SABnzbd/.venv/bin/python3.11 --version
 
# Check if venv is intact
ls -la /opt/username/SABnzbd/.venv/bin/
 
# Reinstall SABnzbd (preserves config)
qb reinstall sabnzbd -u username

Symptoms of corrupted venv:

  • ImportError or ModuleNotFoundError in logs
  • SABnzbd fails to start with Python traceback
  • Missing Python executable or pip in .venv/bin/

Permission Issues

Fix file ownership and permissions:

bash
# Check current ownership
ls -la /opt/username/SABnzbd
ls -la ~/.config/SABnzbd
 
# Fix permissions via QuickBox
qb fix permissions -u username
 
# Or manually fix
sudo chown -R username:username /opt/username/SABnzbd ~/.config/SABnzbd
sudo chmod 0750 ~/.config/SABnzbd/sabnzbd.ini
 
# Restart service
systemctl restart sabnzbd@username

SSL Certificate Issues

If you see SSL handshake errors or certificate warnings:

bash
# Check certificate files exist
ls -la ~/.ssl/
ls -la ~/.config/SABnzbd/admin/
 
# Verify certificate validity
openssl x509 -in ~/.ssl/username-selfsigned.crt -noout -dates
 
# Regenerate certificates if needed
cd ~/.ssl
openssl req -config /opt/quickbox/config/system/ssl/openssl.conf \
  -x509 -nodes -days 1095 -newkey rsa:2048 \
  -keyout username-selfsigned.key \
  -out username-selfsigned.crt
 
# Copy to SABnzbd admin folder
cp -f ~/.ssl/*.{crt,key,pem} ~/.config/SABnzbd/admin/
chown username:username ~/.config/SABnzbd/admin/*
 
# Restart service
systemctl restart sabnzbd@username

*arr Apps Can’t Connect

If Sonarr/Radarr/etc. can’t connect to SABnzbd:

SymptomSolution
Connection refusedVerify SABnzbd is running: systemctl status sabnzbd@username
SSL handshake failedEnsure "Use SSL" is checked and port is the HTTPS port (65131+)
API key invalidCopy exact API key from SABnzbd → Config → General → Security
Unable to connect to localhostUse 127.0.0.1 instead of localhost
URL Base errorSet URL Base to /username/sabnzbd (enable advanced settings)
401 UnauthorizedVerify SABnzbd username/password (not nginx auth, SABnzbd auth)
Authentication failedCheck credentials in SABnzbd → Config → General → Security
Test API Connection
Tip

Test SABnzbd API access from command line (replace port and API key with your values):

bash
curl -k "https://127.0.0.1:65131/username/sabnzbd/api?mode=version&apikey=YOUR_API_KEY"

Should return JSON with SABnzbd version information. If this fails, SABnzbd isn’t responding properly.

Important: SABnzbd Authentication
Warning

*arr applications authenticate directly to SABnzbd using SABnzbd’s own username/password system, which is separate from nginx Basic Auth. Make sure you’re entering the correct credentials configured in SABnzbd (Config → General → Security), not your nginx/htpasswd credentials.

Downloads Stalling or Failing

If downloads won’t start or complete:

Symptoms

  • Downloads stuck at 0% or paused
  • Articles missing or incomplete
  • SSL certificate verification failures to Usenet server
  • PAR2 repair failures
  • Unpacking errors after download

Resolution

  • Verify Usenet provider credentials and account status
  • Check SSL port (563) vs standard port (119) settings
  • Ensure provider account is active with remaining data quota
  • Verify download has enough PAR2 files for repair
  • Check disk space: df -h /home/username
  • Review SABnzbd logs for specific error messages

Web Interface Not Loading

If nginx reverse proxy isn’t working:

bash
# Check nginx configuration
sudo nginx -t
 
# Check if nginx is running
systemctl status nginx
 
# Verify nginx config file exists
ls -la /etc/nginx/software/username.sabnzbd.conf
 
# Check htpasswd file
ls -la /etc/htpasswd.d/htpasswd.username
 
# Reload nginx
sudo systemctl reload nginx

Configuration Reset

bash
# Backup current configuration
cp ~/.config/SABnzbd/sabnzbd.ini ~/.config/SABnzbd/sabnzbd.ini.backup
 
# Remove configuration (will be regenerated)
rm ~/.config/SABnzbd/sabnzbd.ini
 
# Restart service
systemctl restart sabnzbd@username

Downloads / browse index page not loading

QuickBox builds a per-user nginx fancyindex view of each user’s completed downloads, and SABnzbd’s completed folder is included in it. This browse index is a single shared per-user config — /etc/nginx/software/username.dlindex.conf — that covers every download client that user has installed, not SABnzbd alone. It has no service of its own.

Symptoms

  • The per-user downloads / file-browse index page fails to load — returns a 502 or 404, shows blank, or errors — while the rest of the dashboard works normally
  • Only the directory-listing page is affected; SABnzbd itself keeps running

Resolution

  • Rebuild for one user: qb fix dlindex -u username
  • Rebuild for all users: qb fix dlindex
  • The fix re-renders /etc/nginx/software/username.dlindex.conf, runs nginx -t, and reloads nginx only on a successful test
  • See the qb fix reference: /docs/cli-reference/fix#fix-dlindex

The same fix applies to the browse page for every download client — see the Download Clients overview.


Best Practices

Do

  • Use qb update sabnzbd to keep SABnzbd and dependencies updated
  • Configure categories for different *arr applications
  • Enable SSL connections to your Usenet provider when available
  • Monitor disk space regularly—Usenet downloads can be large
  • Set appropriate retention for history and logs
  • Use post-processing scripts for advanced automation
  • Configure bandwidth limits during peak hours if needed
  • Keep API key secure—treat it like a password

Don't

  • Don't share your API key publicly—it grants full access to SABnzbd
  • Don't manually edit systemd or nginx configs without backing up first
  • Don't expose SABnzbd directly to the internet without nginx in front
  • Don't ignore incomplete downloads—check Usenet provider health
  • Don't disable SSL for Usenet connections—unencrypted NZB traffic is visible
  • Don't set connection count higher than provider allows—risks bans
  • Don't delete Python venv manually—use qb remove instead
  • Don't manually edit sabnzbd.ini while service is running


Additional Resources


Join the Community

Media server operators sharing configs, getting support, and shaping the future of QuickBox Pro.

  • Dedicated Support
  • Feature Previews
  • Community Configs
  • Active Discussions
Join Discord Server
Last updated on