Downloads intermediate ⏱ 45 minutes

NZBGet: Efficient Usenet Downloader

High-performance Usenet client. Low resource usage with excellent arr stack integration.

By Homelab Team • 2025-01-15
#nzbget#usenet#downloads#performance#docker

NZBGet is a highly efficient, resource-friendly binary newsreader designed for Usenet downloading. With its minimal footprint, command-line interface, and powerful API, NZBGet excels on headless servers, low-power devices, and systems where efficiency is paramount.

What is NZBGet?

NZBGet is a streamlined Usenet download client written in C++ that prioritizes performance and efficiency. Despite its lightweight design, it includes advanced features like post-processing, scheduling, RSS automation, and deep integration with media management tools.

Key Features

Efficiency:

  • Low memory footprint (typically under 50MB RAM)
  • Minimal CPU usage during downloads
  • Optimized for headless operation
  • Perfect for ARM devices (Raspberry Pi, etc.)
  • Fast startup and operation

Performance:

  • Multi-threaded downloading
  • Smart connection management
  • SSL/TLS support
  • Multiple server support with priorities
  • Bandwidth throttling

Automation:

  • Comprehensive post-processing
  • Extension script system
  • Category-based handling
  • RSS feed support
  • API for external control

Integration:

  • Native arr stack compatibility
  • RESTful API
  • Web-based interface
  • Docker-friendly
  • Cross-platform support

Why Choose NZBGet?

Resource-Conscious:

  • Ideal for low-power servers
  • Run on Raspberry Pi or similar devices
  • Lower electricity costs
  • More headroom for other services

Simplicity:

  • Clean, responsive web UI
  • Straightforward configuration
  • Command-line interface available
  • Easy to troubleshoot

Powerful Despite Size:

  • Full feature parity with heavier clients
  • Extension system for customization
  • Robust post-processing
  • Professional-grade performance

Prerequisites

Before starting, ensure you have:

  • Docker and Docker Compose installed
  • Usenet provider account with connection details
  • Usenet indexer access for NZB files
  • At least 512MB RAM available (1GB recommended)
  • Storage for downloads and temporary files
  • Basic Usenet knowledge

Understanding NZBGet Architecture

NZBGet operates efficiently through smart resource management:

NZBGet Workflow:
1. NZB file added to queue (via API, RSS, or manual)
2. Articles downloaded from Usenet servers
3. On-the-fly verification and assembly
4. Automatic par2 repair if needed
5. Archive extraction
6. Post-processing scripts execution
7. Cleanup and notification

Components:

  • Core Engine: C++ binary for efficiency
  • Web Interface: Responsive HTML5 UI
  • API Server: RESTful API for integrations
  • Extension System: Python/Bash scripts for customization

Directory Structure

Create organized directories:

# Create NZBGet directories
mkdir -p /opt/nzbget/{config,downloads/dst,downloads/inter,downloads/nzb,downloads/tmp}

# Create category-specific directories
mkdir -p /opt/nzbget/downloads/dst/{movies,tv,music,books}

# Set ownership
sudo chown -R $USER:$USER /opt/nzbget

Directory Explanation:

  • /opt/nzbget/config: Configuration files and scripts
  • /opt/nzbget/downloads/dst: Completed downloads (destination)
  • /opt/nzbget/downloads/inter: Intermediate processing directory
  • /opt/nzbget/downloads/nzb: NZB files directory
  • /opt/nzbget/downloads/tmp: Temporary download files

Docker Compose Configuration

Create /opt/nzbget/docker-compose.yml:

version: '3.8'

services:
  nzbget:
    image: linuxserver/nzbget:latest
    container_name: nzbget
    restart: unless-stopped
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/New_York
      - UMASK=022
    volumes:
      - /opt/nzbget/config:/config
      - /opt/nzbget/downloads:/downloads
      # Optional: Share with media directories
      - /media:/media
    ports:
      - 6789:6789
    # Resource limits (optional but recommended)
    deploy:
      resources:
        limits:
          memory: 512M
        reservations:
          memory: 128M

Configuration Notes:

  • Replace PUID and PGID with your user ID (id -u and id -g)
  • Update TZ to your timezone
  • Port 6789 is the web interface (default for NZBGet)
  • Memory limits ensure NZBGet stays efficient
  • Lower limits than SABnzbd due to efficiency

VPN Integration (optional):

version: '3.8'

services:
  vpn:
    image: qmcgaw/gluetun:latest
    container_name: vpn
    cap_add:
      - NET_ADMIN
    environment:
      - VPN_SERVICE_PROVIDER=nordvpn
      - OPENVPN_USER=your_username
      - OPENVPN_PASSWORD=your_password
      - SERVER_COUNTRIES=Netherlands
    ports:
      - 6789:6789
    restart: unless-stopped

  nzbget:
    image: linuxserver/nzbget:latest
    container_name: nzbget
    network_mode: "service:vpn"
    depends_on:
      - vpn
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/New_York
    volumes:
      - /opt/nzbget/config:/config
      - /opt/nzbget/downloads:/downloads

Deployment

Start NZBGet:

cd /opt/nzbget
docker-compose up -d

Verify running:

docker-compose ps
docker logs nzbget

Access web interface at http://YOUR-SERVER-IP:6789

Default Credentials:

  • Username: nzbget
  • Password: tegbzn6789

Change these immediately after first login!

Initial Configuration

Configure NZBGet through the web interface.

Security Settings

Settings → Security:

Control IP:

  • Leave blank for all IPs
  • Or specify: 127.0.0.1,192.168.1.0/24 for local only

Username: admin (or custom)

Password: Strong password (change from default!)

Authorization: Restricted (requires login for all actions)

Secure Control: No (unless using HTTPS)

Cert File: Leave empty (use reverse proxy for SSL)

Key File: Leave empty

Click Save All Changes at bottom.

News Server Configuration

Settings → News-Servers:

Add Primary Server:

Click Add Server and configure:

Active: Yes
Name: Newshosting Primary
Level: 0 (highest priority)
Optional: No
Group: 0
Host: news.newshosting.com
Port: 563
Username: your_username
Password: your_password
Connections: 20
Encryption: Yes
Cipher: Leave empty (auto-detect)
Retention: 4900 (days, check provider)

Add Backup Server:

Active: Yes
Name: UsenetFarm Backup
Level: 1 (lower priority)
Optional: No
Group: 0
Host: news.usenetfarm.com
Port: 563
Username: your_username
Password: your_password
Connections: 15
Encryption: Yes
Retention: 3000

Add Block Account:

Active: Yes
Name: Blocknews
Level: 2
Optional: Yes (only use when needed)
Group: 1
Host: blocknews.net
Port: 563
Username: your_username
Password: your_password
Connections: 8
Encryption: Yes

Server Configuration Tips:

  • Level: Lower = higher priority (0 is highest)
  • Optional: Yes means only use when primary fails
  • Connections: Total should be 30-50 across all servers
  • Group: Separate unlimited (0) from block accounts (1+)

Click Save All Changes.

Paths Configuration

Settings → Paths:

Main Directory: /downloads

Destination Directory: /downloads/dst (completed downloads)

Intermediate Directory: /downloads/inter (processing)

NZB Directory: /downloads/nzb (watch folder)

Queue Directory: /downloads/queue (queue persistence)

Temp Directory: /downloads/tmp (active downloads)

Script Directory: /config/scripts (post-processing scripts)

Lock File: /downloads/nzbget.lock

Log File: /config/nzbget.log

Click Save All Changes.

Download Settings

Settings → Download Queue:

Article Cache: 200 (MB, adjust based on available RAM)

  • Low RAM (1GB): 100-200
  • Medium RAM (2-4GB): 200-300
  • High RAM (8GB+): 300-500

Write Buffer: 1024 (KB, default is fine)

Continue Partial: Yes (resume partial downloads)

Propagation Delay: 0 (minutes to wait before download starts)

Article Timeout: 60 (seconds)

URL Timeout: 60 (seconds)

Flush Queue: Yes (save queue to disk)

Dump Core: No

Par Check: Auto (automatically repair)

Par Repair: Yes (enable repair)

Par Scan: Extended (find all par2 files)

Par Quick: Yes (quick verification when possible)

Par Buffer: 32 (MB for par2 operations)

Par Threads: 0 (auto-detect, use all cores)

Click Save All Changes.

Categories Configuration

Categories organize downloads and trigger appropriate post-processing.

Creating Categories

Settings → Categories:

Movies Category:

Click Add Category:

Name: movies
Dest Dir: /downloads/dst/movies
Unpack: Yes
Post Script: EMail.py,Logger.py
Extensions: VideoSort
Priority: 0

TV Category:

Name: tv
Dest Dir: /downloads/dst/tv
Unpack: Yes
Post Script: EMail.py,Logger.py
Extensions: VideoSort
Priority: 100 (higher priority for new episodes)

Music Category:

Name: music
Dest Dir: /downloads/dst/music
Unpack: Yes
Post Script: Logger.py
Extensions:
Priority: 0

Books Category:

Name: books
Dest Dir: /downloads/dst/books
Unpack: Yes
Post Script: Logger.py
Extensions:
Priority: -50 (lower priority)

Category Parameters:

  • Name: Used by arr apps to assign category
  • Dest Dir: Final location for completed downloads
  • Unpack: Auto-extract archives
  • Post Script: Scripts to run after completion
  • Extensions: Extension scripts (VideoSort organizes media)
  • Priority: Higher = download first

Aliases

Map indexer categories to your categories:

Settings → Categories → Aliases:

movies: Movies*, HD-Movies*, UHD-Movies*
tv: TV*, HD-TV*, UHD-TV*
music: Audio*, Music*
books: Books*, Ebooks*

Asterisk wildcard matches variations.

Post-Processing Configuration

Configure how NZBGet handles completed downloads.

Post-Processing Settings

Settings → Post-Processing:

Post Script: Leave default or add custom scripts

Script Order: Order scripts execute

Script Pause: No (continue downloads during PP)

Unpack: Yes (extract archives)

Unpack Cleanup: Yes (remove archive after extraction)

Unpack Passwd: Leave empty (can set default password)

Par Check: Auto (verify and repair automatically)

Par Repair: Yes

Par Time Limit: 0 (unlimited time for repair)

Par Pause: No (continue downloads during repair)

Health Check: Park (pause unhealthy downloads)

Health Delete: Yes (delete failed downloads)

Click Save All Changes.

Extension Scripts

NZBGet includes several useful scripts by default.

Enable VideoSort:

Settings → Extension Scripts → VideoSort.py:

Enabled: Yes
Movies Format: /downloads/dst/movies/{title} ({year})/{title} ({year}).{ext}
TV Format: /downloads/dst/tv/{title}/Season {season}/{title} - S{season:02}E{episode:02} - {episodename}.{ext}
Satellite Rename: Yes
Cleanup: Yes
Preview Check: Yes

This organizes media files with proper naming.

Enable Notification Scripts:

EMail.py: Send email on completion Logger.py: Enhanced logging Flatten.py: Remove subdirectories

Custom Post-Processing Script

Create custom notification script.

Create /opt/nzbget/config/scripts/discord-notify.py:

#!/usr/bin/env python3

import os
import sys
import json
import requests

# Discord webhook URL
WEBHOOK_URL = "YOUR-DISCORD-WEBHOOK-URL"

# Get NZBGet environment variables
nzb_name = os.environ.get('NZBPP_NZBNAME', 'Unknown')
category = os.environ.get('NZBPP_CATEGORY', 'Unknown')
status = os.environ.get('NZBPP_STATUS', 'UNKNOWN')
total_status = os.environ.get('NZBPP_TOTALSTATUS', 'UNKNOWN')

# Determine color based on status
if total_status == 'SUCCESS':
    color = 3066993  # Green
    status_text = "Success"
else:
    color = 15158332  # Red
    status_text = "Failed"

# Build Discord message
payload = {
    "embeds": [{
        "title": "NZBGet Download Complete",
        "description": nzb_name,
        "fields": [
            {"name": "Category", "value": category, "inline": True},
            {"name": "Status", "value": status_text, "inline": True}
        ],
        "color": color
    }]
}

# Send to Discord
try:
    response = requests.post(WEBHOOK_URL, json=payload)
    response.raise_for_status()
    print("[INFO] Discord notification sent successfully")
    sys.exit(0)
except Exception as e:
    print(f"[ERROR] Failed to send Discord notification: {e}")
    sys.exit(0)  # Don't fail post-processing

Make executable:

chmod +x /opt/nzbget/config/scripts/discord-notify.py

Add to Category: Settings → Categories → movies → Post Script → discord-notify.py

arr Stack Integration

Connect NZBGet to media automation tools.

Radarr Configuration

Radarr → Settings → Download Clients → Add → NZBGet:

Name: NZBGet
Enable: Yes
Host: nzbget (Docker network) or YOUR-SERVER-IP
Port: 6789
URL Base: Leave empty
Username: admin
Password: Your NZBGet password
Category: movies
Recent Priority: Normal
Older Priority: Normal
Use SSL: No (unless reverse proxy)
Add Paused: No

Advanced Options:

  • Remove Completed: Yes (Radarr handles files)
  • Remove Failed: Yes

Click Test then Save.

Sonarr Configuration

Sonarr → Settings → Download Clients → Add → NZBGet:

Name: NZBGet
Enable: Yes
Host: nzbget or YOUR-SERVER-IP
Port: 6789
Username: admin
Password: Your NZBGet password
Category: tv
Recent Priority: High (new episodes)
Older Priority: Normal (season packs)
Use SSL: No

Click Test then Save.

Lidarr Configuration

Lidarr → Settings → Download Clients → Add → NZBGet:

Name: NZBGet
Category: music
Priority: Normal

Same settings as above.

Readarr Configuration

Readarr → Settings → Download Clients → Add → NZBGet:

Name: NZBGet
Category: books
Priority: Low

RSS and Feeds

Configure RSS automation for content discovery.

RSS Feed Configuration

Settings → RSS Feeds:

Add Feed:

Name: Indexer Feed Name
URL: https://your-indexer.com/rss?t=5000&apikey=YOURAPIKEY
Filter: Leave empty (or add regex filter)
Category: Automatic (or specific category)
Priority: 0
Pause NZB: No
Interval: 15 (minutes)

Filter Examples:

Match 1080p content:

Filter: Accept: 1080p

Reject PROPER/REPACK:

Filter: Reject: PROPER|REPACK

Multiple Filters: Separate with semicolons:

Filter: Accept: 1080p; Reject: CAM|TS

Feed Preview

RSS Feeds → Preview:

  • Click preview to test feed
  • Verify items match filters
  • Check categories assigned correctly

Scheduling and Speed Control

Manage when and how fast NZBGet downloads.

Speed Limit

Settings → Download Queue → Speed Limit:

  • 0 = Unlimited (saturate connection)
  • Specific rate in KB/s: 5000 (5 MB/s)
  • Percentage: Not available (use scheduler)

Task Scheduler

Settings → Scheduler:

Add Task:

Daytime Speed Limit (9 AM - 11 PM):

Time: *,09-23
Week Days: 1-7
Command: Speed
Param: 5000 (KB/s)

Nighttime Unlimited (11 PM - 9 AM):

Time: *,23-09
Week Days: 1-7
Command: Speed
Param: 0 (unlimited)

Pause During Peak (6 PM - 8 PM weekdays):

Time: *,18-20
Week Days: 1-5
Command: PauseDownload
Param: (empty)

Resume After Peak:

Time: *,20
Week Days: 1-5
Command: UnpauseDownload
Param: (empty)

Scheduler Commands:

  • Speed: Set download speed (param in KB/s)
  • PauseDownload: Pause downloading
  • UnpauseDownload: Resume downloading
  • PausePostProcess: Pause post-processing
  • UnpausePostProcess: Resume post-processing
  • ActivateServer: Enable specific server
  • DeactivateServer: Disable specific server
  • FetchFeed: Fetch RSS feed

Time Format:

  • *,HH-HH: Every minute from HH to HH
  • MM,HH: Specific minute and hour
  • MM,*: Every hour at minute MM

Monitoring and Management

Effectively monitor NZBGet operations.

Web Interface

Dashboard:

  • Current speed
  • Downloaded data
  • ETA for queue
  • Server statistics
  • Health status

Downloads Tab:

  • Active queue
  • Download progress
  • Individual speeds
  • Edit priority
  • Pause/delete items

History Tab:

  • Completed downloads
  • Success/failure status
  • Retry failed items
  • View logs
  • Cleanup history

Queue Management

Queue Operations:

  • Sort: Organize by name, category, priority, age
  • Edit: Change category, priority, post-processing
  • Pause: Stop specific download
  • Delete: Remove from queue
  • Move: Reorder in queue

Bulk Operations:

  • Select multiple items
  • Apply actions to selection
  • Pause All / Resume All
  • Delete Completed

Statistics

Status → Statistics:

  • Server usage breakdown
  • Download speeds by server
  • Total downloaded
  • Success/failure rates
  • Average speeds

Status → Log:

  • Real-time log viewing
  • Filter by level (INFO, WARNING, ERROR)
  • Download log messages
  • Debug mode toggle

Troubleshooting

Common issues and resolutions.

Downloads Not Starting

Symptoms: NZB added but stays queued

Diagnostics:

  1. Check Status → Messages for errors
  2. Verify server connections: Settings → News-Servers → Test
  3. Review Status → Log for details

Solutions:

  • Test server credentials
  • Verify Usenet account active
  • Check firewall allowing outbound 563/119
  • Restart NZBGet: docker-compose restart

Slow Download Speeds

Symptoms: Not saturating bandwidth

Diagnostics:

  1. Check Status → Statistics for server usage
  2. Verify connection counts
  3. Check speed limit setting

Solutions:

  • Increase connections per server (up to 30-50 total)
  • Remove speed limit: Settings → Download Queue → Speed Limit → 0
  • Add additional Usenet servers
  • Verify no bandwidth throttling active

Par2 Repair Failures

Symptoms: “Collection failed: Could not repair”

Diagnostics:

  1. Check History for failure details
  2. Verify par2 files downloaded
  3. Check if content beyond retention

Solutions:

  • Enable extended par scan: Settings → Download Queue → Par Scan → Extended
  • Increase par buffer: Settings → Download Queue → Par Buffer → 64
  • Use backup server with longer retention
  • Content may be incomplete or too old

Extraction Failures

Symptoms: Unpack errors in post-processing

Diagnostics:

  1. Check Status → Log for unpack errors
  2. Verify disk space available
  3. Check for password-protected archives

Solutions:

  • Ensure sufficient disk space (10GB+ free)
  • Enable unpack cleanup: Settings → Post-Processing → Unpack Cleanup → Yes
  • Set default password if known: Settings → Post-Processing → Unpack Passwd
  • Manual extraction may be required for password-protected files

Permission Issues

Symptoms: Can’t write files, import failures

Solutions:

# Fix ownership
sudo chown -R 1000:1000 /opt/nzbget

# Fix permissions
sudo chmod -R 755 /opt/nzbget/downloads

# Verify PUID/PGID in docker-compose.yml
docker-compose down
# Edit docker-compose.yml
docker-compose up -d

API Connection Issues

Symptoms: arr apps can’t connect

Solutions:

  • Verify credentials match
  • Check host accessible: curl http://nzbget:6789 from arr container
  • Review Settings → Security → Control IP (ensure not blocking)
  • Disable username/password for localhost (optional)
  • Check container networking

Performance Optimization

Maximize NZBGet efficiency.

Memory Optimization

Article Cache:

Optimal settings based on RAM:

  • 512MB RAM: Article Cache = 50
  • 1GB RAM: Article Cache = 100-150
  • 2GB RAM: Article Cache = 200-300
  • 4GB+ RAM: Article Cache = 300-500

Settings → Download Queue → Article Cache: 200

Write Buffer: Default (1024) is optimal for most systems.

CPU Optimization

Par Threads:

Settings → Download Queue → Par Threads: 0 (auto-detect)

Uses all available CPU cores for par2 operations.

Par Buffer:

  • Default: 16 MB
  • More RAM available: 32-64 MB
  • Speeds up verification and repair

Disk Optimization

Separate Directories:

  • Temp: Fast SSD for active downloads
  • Destination: HDD acceptable for completed files
  • Intermediate: SSD for processing

Direct Unpack: Settings → Download Queue → Direct Unpack: Yes

Unpacks while downloading instead of after.

Network Optimization

Connection Distribution:

Optimal for most providers:

Primary Server (unlimited): 20-30 connections
Backup Server: 10-15 connections
Block Account: 5-8 connections
Total: 30-50 connections

Server Priorities:

  • Level 0: Unlimited primary
  • Level 1: Backup or second unlimited
  • Level 2+: Block accounts and fill servers

Security Best Practices

Secure your NZBGet installation.

Authentication

Enable Strong Authentication:

Settings → Security:

  • Username: Complex username
  • Password: Strong password (20+ characters)
  • Authorization: Restricted

API Security:

  • Keep credentials secret
  • Don’t share in scripts (use environment variables)
  • Regenerate password periodically

Network Security

Restrict Access:

Settings → Security → Control IP:

127.0.0.1,192.168.1.0/24

Only allows localhost and local network.

Reverse Proxy with SSL:

Nginx configuration:

server {
    listen 443 ssl http2;
    server_name nzbget.yourdomain.com;

    ssl_certificate /etc/ssl/certs/cert.pem;
    ssl_certificate_key /etc/ssl/private/key.pem;

    location / {
        proxy_pass http://localhost:6789;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Firewall:

# Local network only
sudo ufw allow from 192.168.1.0/24 to any port 6789

# Or specific IP
sudo ufw allow from SPECIFIC-IP to any port 6789

VPN

Route through VPN for privacy (see Docker Compose VPN section).

Backup and Restore

Protect your configuration.

Backup Configuration

Manual Backup:

cd /opt/nzbget
docker-compose down

# Backup config
tar -czf nzbget-backup-$(date +%Y%m%d).tar.gz /opt/nzbget/config

docker-compose up -d

Automated Backup:

#!/bin/bash
# /opt/scripts/backup-nzbget.sh

BACKUP_DIR="/opt/backups/nzbget"
DATE=$(date +%Y%m%d)

mkdir -p "$BACKUP_DIR"

cd /opt/nzbget
docker-compose stop nzbget

tar -czf "$BACKUP_DIR/nzbget-$DATE.tar.gz" /opt/nzbget/config

docker-compose start nzbget

# Keep 30 days
find "$BACKUP_DIR" -name "nzbget-*.tar.gz" -mtime +30 -delete

Schedule:

# Weekly on Sunday 3 AM
0 3 * * 0 /opt/scripts/backup-nzbget.sh

Restore

cd /opt/nzbget
docker-compose down

tar -xzf nzbget-backup-YYYYMMDD.tar.gz -C /

sudo chown -R 1000:1000 /opt/nzbget/config

docker-compose up -d

Advanced Features

Extend NZBGet capabilities.

API Usage

NZBGet provides comprehensive RESTful API.

Add NZB via API:

curl -u admin:password   "http://localhost:6789/jsonrpc/append"   --data '{"method":"append","params":["URL-TO-NZB.nzb"]}'

Check Status:

curl -u admin:password   "http://localhost:6789/jsonrpc/status"

Pause/Resume:

# Pause
curl -u admin:password   --data '{"method":"pausedownload"}'   "http://localhost:6789/jsonrpc"

# Resume
curl -u admin:password   --data '{"method":"resumedownload"}'   "http://localhost:6789/jsonrpc"

Custom Extensions

Create custom extension scripts.

Example: Size Validator:

#!/usr/bin/env python3
# Reject downloads over 50GB

import os
import sys

MAX_SIZE = 50 * 1024 * 1024 * 1024  # 50GB in bytes

size = int(os.environ.get('NZBNA_SIZE', '0'))

if size > MAX_SIZE:
    print(f"[WARNING] Download too large: {size/1024/1024/1024:.2f}GB")
    sys.exit(93)  # POSTPROCESS_ERROR

print("[INFO] Size validation passed")
sys.exit(93)  # POSTPROCESS_SUCCESS

Exit Codes:

  • 93: Success
  • 94: Failed, retry
  • 95: Failed, no retry

Notifications

Configure completion notifications.

Email (using EMail.py extension):

Settings → Extension Scripts → EMail.py:

Enabled: Yes
From: [email protected]
To: [email protected]
Server: smtp.gmail.com
Port: 587
Encryption: TLS
Username: [email protected]
Password: app-password

Custom Notifications: Use custom scripts (see discord-notify.py example earlier).

Maintenance

Keep NZBGet healthy.

Regular Tasks

Daily:

  • Monitor Status → Messages for warnings
  • Check disk space
  • Review failed downloads

Weekly:

  • Clean history: History → Cleanup
  • Review and retry failed items
  • Check server statistics

Monthly:

  • Update NZBGet: docker-compose pull && docker-compose up -d
  • Backup configuration
  • Audit categories and scripts
  • Review and optimize settings

Database Maintenance

NZBGet uses simple file-based storage, minimal maintenance needed.

Clear History:

  • History → Cleanup → Delete All
  • Or set automatic cleanup: Settings → Logging → History Days → 30

Log Management

Settings → Logging:

Log File: /config/nzbget.log

Rotate Log: 3 (keep 3 rotated logs)

Detail Level: INFO (or DETAIL for troubleshooting)

Clear old logs:

docker exec nzbget rm /config/nzbget.log.1
docker exec nzbget rm /config/nzbget.log.2

Comparison: NZBGet vs SABnzbd

Choosing between the two popular Usenet clients:

NZBGet Advantages

  • Lower memory usage (50MB vs 200MB+)
  • Faster startup and operation
  • Better for ARM/low-power devices
  • Simpler codebase
  • API-first design

SABnzbd Advantages

  • More mature project
  • Richer web interface
  • More built-in features
  • Better Windows integration
  • Larger community

Recommendation

  • Choose NZBGet if: Running on limited hardware, prefer efficiency, want minimal resource usage
  • Choose SABnzbd if: Have resources available, prefer feature-rich interface, want extensive built-in tools

Both work excellently with arr stack automation!

Conclusion

You now have a fully configured NZBGet installation optimized for efficient Usenet downloading with complete arr stack integration.

Key Takeaways

  • Lightweight and efficient - runs on minimal resources
  • Powerful despite size - full feature set included
  • arr stack integration - seamless automation
  • Extension system - customize with scripts
  • Professional performance - production-ready

Next Steps

  1. Configure Usenet servers with provider credentials
  2. Set up categories for content types
  3. Integrate with arr stack automation
  4. Enable extension scripts for organization
  5. Configure scheduling for bandwidth management
  6. Set up notifications for completion alerts
  7. Schedule backups to protect configuration
  • SABnzbd alternative Usenet client
  • Sonarr TV show automation
  • Radarr movie automation
  • Prowlarr indexer management
  • Usenet provider selection

Enjoy efficient, automated downloading with NZBGet!