Download Clients

Usenet and torrents. Two different roads to the same destination.

Your arr apps know what you want. Indexers know where to find it. Download clients are the part that actually gets it. There are two major protocols: Usenet and torrents. Many people use both.

Usenet vs torrents: the quick comparison

The common setup: Many people use Usenet as their primary source and torrents as a fallback. The arr apps support both simultaneously -- they'll try Usenet first, then fall back to torrents if the Usenet search comes up empty.

Usenet: how it works

Usenet is a text-based messaging network that's been around since the 1980s. Originally it was like a giant global forum -- people posted messages organized into "newsgroups" on every topic imaginable.

Over the decades, people figured out you could encode binary files (images, software, media) into these text posts. Today, Usenet's binary groups are essentially a massive, high-speed content distribution network. Files are posted, retained by providers for years, and can be downloaded at your full connection speed.

Three pieces make Usenet work:

  1. Providers -- companies that host and serve Usenet content. You pay for access.
  2. Indexers -- sites that catalog what's on Usenet and generate NZB files (like a map to find and reassemble a file from Usenet posts). Covered in the Indexers guide.
  3. Download clients -- software that takes an NZB file, downloads all the pieces from your provider, and reassembles the original file.

Choosing a Usenet provider

Usenet providers store content on their servers. The key specs to compare:

A solid strategy is to have a primary provider with unlimited downloads on one backbone, plus a block account on a different backbone as a backup. Block accounts sell a fixed amount of data (say, 500 GB or 1 TB) that doesn't expire -- you only use them when your primary can't find something.

Some well-known providers:

Black Friday deals: Usenet providers run aggressive sales around Black Friday and other holidays. You can often get annual plans for 50-70% off. If you're not in a rush, wait for a deal.

NZB files

An NZB file is essentially a manifest -- it lists all the individual Usenet posts that make up a file. Your download client reads the NZB, downloads all the listed posts from your provider, reassembles them, verifies integrity, and extracts the result. You never interact with NZB files directly -- the arr apps handle everything through your indexers.

SABnzbd: the recommended Usenet client

SABnzbd is the most popular Usenet download client. It's fast, reliable, has a great web interface, and integrates perfectly with the arr stack.

Docker setup

services:
  sabnzbd:
    image: lscr.io/linuxserver/sabnzbd:latest
    container_name: sabnzbd
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/New_York
    volumes:
      - ./sabnzbd/config:/config
      - /data/downloads:/data/downloads
    ports:
      - "8080:8080"
    restart: unless-stopped

Configuration

Open SABnzbd at http://your-server:8080. The setup wizard will walk you through the basics:

  1. Add your Usenet provider: Enter the server address, port (563 for SSL), username, password, and number of connections. Enable SSL.
  2. Folders: Set your download directory to /data/downloads/complete and incomplete to /data/downloads/incomplete.

Categories

Categories are how the arr apps tell SABnzbd to organize downloads. Go to Settings > Categories and create:

When Sonarr sends a download with category "tv", SABnzbd puts the finished files in the tv folder. Sonarr then picks them up, renames them, and moves them to your media library.

API key

You'll need SABnzbd's API key to connect it to your arr apps. Find it under Settings > General > API Key. Copy it and paste it into Sonarr/Radarr's download client settings.

Recommended settings

NZBGet: the alternative

NZBGet is another solid Usenet client. It was briefly discontinued but development was picked back up by the community. It's known for being extremely efficient with system resources -- great if your server is a low-power device.

services:
  nzbget:
    image: lscr.io/linuxserver/nzbget:latest
    container_name: nzbget
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/New_York
    volumes:
      - ./nzbget/config:/config
      - /data/downloads:/data/downloads
    ports:
      - "6789:6789"
    restart: unless-stopped

Setup is similar to SABnzbd: add your provider, configure folders, set up categories. The interface is more bare-bones but it gets the job done efficiently. Most people choose SABnzbd for the interface, NZBGet for the resource efficiency.

Torrents: how they work

Unlike Usenet's centralized servers, torrents work peer-to-peer. When you download a torrent, you're getting pieces of the file from other people who already have it (seeders), and simultaneously sharing the pieces you've received with others. The more seeders, the faster the download.

The key difference from a privacy standpoint: your IP address is visible to every other peer in the swarm. Anyone (including monitoring companies) can see who's downloading what. This is why a VPN is non-negotiable for torrents.

qBittorrent: the recommended torrent client

qBittorrent is the go-to torrent client for media servers. It's open source, has a powerful web UI, and integrates well with the arr stack.

Docker setup

services:
  qbittorrent:
    image: lscr.io/linuxserver/qbittorrent:latest
    container_name: qbittorrent
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/New_York
      - WEBUI_PORT=8081
    volumes:
      - ./qbittorrent/config:/config
      - /data/downloads:/data/downloads
    ports:
      - "8081:8081"
      - "6881:6881"
      - "6881:6881/udp"
    restart: unless-stopped

Open the web UI at http://your-server:8081. The default login is usually admin / check the container logs for the temporary password:

docker logs qbittorrent

Configuration

In the web UI settings (gear icon):

  1. Downloads: Set the default save path to /data/downloads/complete
  2. Connection: Set the listening port (6881 is default). If your VPN supports port forwarding, use the forwarded port for better speeds.
  3. Speed: Consider setting upload limits if you want to control how much bandwidth seeding uses
  4. BitTorrent: Enable DHT and PeX for finding more peers on public trackers

Categories

Right-click in the left sidebar to create categories. Same as SABnzbd:

VPN: essential for torrents

When torrenting, you need a VPN. No exceptions. Without one, your IP address is directly visible to every peer in the swarm, and copyright monitoring companies actively join popular torrents to log IP addresses.

A VPN encrypts your traffic and routes it through a server in another location, hiding your real IP address. For a media server, you want a VPN that:

Popular choices: Mullvad, AirVPN, ProtonVPN (paid plans), Private Internet Access.

VPN-bound torrenting with Docker

The safest setup is to route only your torrent client through the VPN, not your entire server. If the VPN goes down, the torrent client loses internet access (a built-in kill switch), but the rest of your services stay online.

A popular approach uses the gluetun container as a VPN gateway:

services:
  gluetun:
    image: qmcgaw/gluetun:latest
    container_name: gluetun
    cap_add:
      - NET_ADMIN
    environment:
      - VPN_SERVICE_PROVIDER=mullvad  # or your provider
      - VPN_TYPE=wireguard
      - WIREGUARD_PRIVATE_KEY=your_private_key_here
      - WIREGUARD_ADDRESSES=10.x.x.x/32
      - SERVER_COUNTRIES=Netherlands  # pick a P2P-friendly country
      - FIREWALL_VPN_INPUT_PORTS=12345  # your forwarded port
    ports:
      - "8081:8081"    # qBittorrent web UI
      - "12345:12345"  # forwarded port for torrents
    restart: unless-stopped

  qbittorrent:
    image: lscr.io/linuxserver/qbittorrent:latest
    container_name: qbittorrent
    network_mode: "service:gluetun"  # route ALL traffic through gluetun
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/New_York
      - WEBUI_PORT=8081
    volumes:
      - ./qbittorrent/config:/config
      - /data/downloads:/data/downloads
    depends_on:
      gluetun:
        condition: service_healthy
    restart: unless-stopped

Key points about this setup:

Verify your VPN is working! After setup, go to the qBittorrent web UI, open a search or check your external IP. Make sure it shows the VPN's IP, not your real one. You can also use a torrent IP checking service to verify.

Port forwarding

Port forwarding makes your torrent client "connectable" -- meaning other peers can initiate connections to you, not just the other way around. This dramatically improves download speeds, especially for less popular torrents.

The process varies by VPN provider:

In qBittorrent: go to Settings > Connection and set the listening port to your forwarded port. Make sure "Use UPnP / NAT-PMP" is disabled (it won't work through a VPN anyway).

Transmission: the alternative

Transmission is a lightweight alternative to qBittorrent. It uses fewer resources and has a simpler interface. Good for low-power devices, but qBittorrent's web UI and feature set are generally preferred for media server use.

services:
  transmission:
    image: lscr.io/linuxserver/transmission:latest
    container_name: transmission
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/New_York
    volumes:
      - ./transmission/config:/config
      - /data/downloads:/data/downloads
    ports:
      - "9091:9091"
      - "51413:51413"
      - "51413:51413/udp"
    restart: unless-stopped

Connecting download clients to the arr apps

Once your download clients are running, connect them to Sonarr, Radarr, and the rest:

Adding SABnzbd to Sonarr/Radarr

  1. In Sonarr: go to Settings > Download Clients > Add
  2. Select SABnzbd
  3. Host: sabnzbd (Docker service name) or your server IP
  4. Port: 8080
  5. API Key: from SABnzbd's settings
  6. Category: tv (for Sonarr) or movies (for Radarr)
  7. Click "Test" then "Save"

Adding qBittorrent to Sonarr/Radarr

  1. In Sonarr: go to Settings > Download Clients > Add
  2. Select qBittorrent
  3. Host: gluetun (if using the VPN setup above) or qbittorrent or your server IP
  4. Port: 8081
  5. Username & password: your qBittorrent web UI credentials
  6. Category: tv (for Sonarr) or movies (for Radarr)
  7. Click "Test" then "Save"
Priority: If you have both SABnzbd and qBittorrent configured, you can set priorities in each arr app. Put SABnzbd at priority 1 and qBittorrent at priority 2 to prefer Usenet downloads with torrent as fallback.

Seeding and ratio

After downloading a torrent, you're expected to "seed" -- keep sharing the file with other peers. How long you seed depends on whether you're using public or private trackers:

In qBittorrent, you can configure seeding limits under Settings > BitTorrent > Seeding Limits. The arr apps also have options for handling completed downloads -- you can configure them to remove torrents from the client after the files are imported, but make sure your seeding requirements are met first.

Next steps

Your download clients are set up and connected to your arr apps. Now you need content sources -- head to the Indexers guide to learn about Usenet indexers, torrent trackers, and how Prowlarr ties them all together.