Usenet for Self-Hosting: Setup Guide

What Is Usenet?

Usenet is a decentralized discussion and file-sharing system that predates the web. For self-hosters, it serves as an alternative download method to BitTorrent — with a key advantage: downloads come directly from a Usenet provider’s servers over an encrypted connection. No peer-to-peer, no seeding, no IP exposure to other users.

FeatureUsenetBitTorrent
Download sourceCentral serversPeer-to-peer
SpeedMaxes out your connectionVaries by seeder count
PrivacyEncrypted, provider-onlyIP visible to all peers
VPN neededNo (encrypted by default)Yes (strongly recommended)
RetentionLimited (years, varies)Unlimited if seeded
Cost$3-15/month for a providerFree (plus VPN cost)
Setup complexityHigherLower

How the Usenet Pipeline Works

Indexer (NZBgeek, etc.)
    ↓ NZB file (download instructions)
SABnzbd (download client)
    ↓ Downloads from Usenet provider
    ↓ Assembles, verifies, extracts
Sonarr / Radarr (*arr stack)
    ↓ Renames, organizes
Media Library

Jellyfin / Plex (media server)

Three things you need:

  1. A Usenet provider — the service that hosts files. You pay monthly for access and download speed. Popular options: Newshosting, Eweka, Frugal Usenet.
  2. An indexer — searches Usenet for content and creates NZB files (similar to .torrent files). Popular: NZBgeek, DrunkenSlug, NZBFinder.
  3. A download client — downloads and processes NZB files. SABnzbd is the standard.

Prerequisites

  • A Linux server with Docker and Docker Compose (guide)
  • A Usenet provider subscription ($3-15/month)
  • At least one Usenet indexer account
  • The *arr stack (optional but recommended)
  • 2 GB RAM minimum
  • Enough disk space for downloads plus media storage

Setting Up SABnzbd

SABnzbd handles Usenet downloads — connecting to your provider, downloading, verifying parity data (par2), and extracting archives.

Create the directory structure:

mkdir -p /opt/usenet/sabnzbd/config
mkdir -p /data/downloads/{complete,incomplete,nzb}

Create docker-compose.yml:

services:
  sabnzbd:
    image: lscr.io/linuxserver/sabnzbd:4.5.5
    container_name: sabnzbd
    restart: unless-stopped
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/New_York  # CHANGE to your timezone
    volumes:
      - ./sabnzbd/config:/config
      - /data/downloads:/data/downloads
    ports:
      - "8080:8080"  # Web UI
    networks:
      - usenet-net

networks:
  usenet-net:
    driver: bridge

Start SABnzbd:

docker compose up -d

Configure SABnzbd

  1. Open http://your-server:8080

  2. The setup wizard walks through initial configuration:

    • Language: English
    • Server: Enter your Usenet provider details:
      • Host: news.provider.com (from your provider)
      • Port: 563 (SSL) or 119 (unencrypted — use SSL)
      • SSL: Enabled
      • Username/password from your provider
      • Connections: Start with 20, increase up to your plan’s limit
    • Folders:
      • Temporary: /data/downloads/incomplete
      • Completed: /data/downloads/complete
      • Watched: /data/downloads/nzb (optional — drops NZB files here to auto-download)
  3. Under Config → Categories, create categories that match your *arr apps:

    • tv — complete folder: /data/downloads/complete/tv
    • movies — complete folder: /data/downloads/complete/movies
    • music — complete folder: /data/downloads/complete/music
    • books — complete folder: /data/downloads/complete/books

SABnzbd Performance Settings

Under Config → General:

SettingRecommendedWhy
Connections20-50Match your provider’s plan limit
Article cache500MFaster assembly, uses more RAM
Direct unpackEnabledExtracts while still downloading

Under Config → Switches:

SettingRecommended
Check before downloadEnabled
Abort on par2 failureDisabled (let it try repair)
Auto-sortDisabled (let *arr apps handle sorting)

Connecting to the *arr Stack

If you’re using the *arr stack, add SABnzbd as a download client in each app.

In Sonarr/Radarr:

  1. Go to Settings → Download Clients → Add → SABnzbd
  2. Configure:
    • Name: SABnzbd
    • Host: sabnzbd (container name, if on same Docker network)
    • Port: 8080
    • API Key: found in SABnzbd → Config → General → Security
    • Category: tv (for Sonarr) or movies (for Radarr)
  3. Click Test then Save

Volume Mount Alignment

SABnzbd and the *arr apps must share the same filesystem view for hard links to work:

# SABnzbd
volumes:
  - /data/downloads:/data/downloads

# Sonarr (needs both downloads and media)
volumes:
  - /data:/data

Both containers see /data/downloads/complete at the same path. When Sonarr imports a completed download, it creates a hard link from /data/downloads/complete/tv/show.mkv to /data/media/tv/Show Name/Season 01/show.mkv — instant, no copy needed.

See *arr stack setup for the full volume mount explanation.

Usenet Provider Tips

Block Accounts

Most providers offer two pricing models:

  • Unlimited: Fixed monthly fee ($7-15), unlimited downloads at full speed
  • Block: One-time purchase of a download quota (e.g., 500 GB for $10). Never expires. Good as a backup.

Best practice: One unlimited provider as primary + one block account on a different backbone as backup. Different backbones have different content retention — a block account fills gaps where the primary provider has takedowns.

Retention

Usenet providers advertise retention in years (e.g., “5,000+ days”). This means files posted within that retention window are available. Older files are gone. Most content you’ll want is within the last 2-3 years. Don’t overpay for maximum retention unless you need older content.

SSL/TLS

Always connect with SSL enabled. Usenet traffic over SSL is encrypted between you and the provider. Port 563 is the standard SSL port. This eliminates the need for a VPN for privacy — unlike BitTorrent, there’s no peer-to-peer connection exposing your IP.

Usenet Indexers

Indexers search Usenet and create NZB files — structured instructions for what to download. Without indexers, Usenet content is unsearchable.

IndexerTypeCost
NZBgeekPrivate$12/year
DrunkenSlugPrivateFree (limited) / $10/year
NZBFinderPrivateFree (limited) / $15/year
NZBPlanetPrivate$10/year

Private indexers require registration (some have open registration periods). They provide better results and API access for the *arr apps.

Adding Indexers to *arr Apps

If using Prowlarr (recommended): add indexers once in Prowlarr, then sync to all *arr apps automatically.

If configuring directly: go to Settings → Indexers → Add in each *arr app and enter your indexer’s API URL and key.

Resource Requirements

ComponentRAMCPUDisk
SABnzbd (idle)~100 MBLow500 MB config
SABnzbd (downloading)500 MB-1 GBMediumVariable
Article cache+500 MB
Total~1-1.5 GB activeMediumVariable

SABnzbd is CPU-intensive during par2 repair and archive extraction. A modern 4-core CPU handles this well. On a Raspberry Pi, extraction of large files can be slow.

Common Issues

Download speed is slow

  • Increase connections (Config → Servers). Most providers allow 20-50 connections.
  • Enable SSL but try different ports (563, 443)
  • Try a different server endpoint from your provider
  • Check if your ISP throttles Usenet traffic (switch to port 443 to avoid DPI)

Par2 repair failing

  • Your provider has incomplete retention for that file. Add a block account on a different backbone.
  • Increase “Extra Par2 Safety Margin” in SABnzbd settings
  • The upload itself was corrupted — try a different indexer result

Files not extracting

  • Archive is password-protected (some uploads require passwords from the indexer page)
  • Insufficient disk space for extraction
  • RAR format requires unrar — included in the LinuxServer.io image

Next Steps

  • Set up the complete *arr stack for automated media management
  • Add Sonarr for TV show automation
  • Add Radarr for movie automation
  • Connect to Jellyfin or Plex for streaming
  • Implement backups for your configuration

Comments