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
- Usenet -- Direct downloads from central servers. Fast, private (no sharing with peers), and very reliable. Requires a paid provider subscription ($3-10/month) and good indexers. Your ISP can't see what you're downloading (it's SSL-encrypted), and there's no uploading involved.
- Torrents -- Peer-to-peer file sharing. Free to use, wider content availability for some things, but your IP address is visible to other peers. Requires a VPN for privacy. Slower for less popular content (fewer seeders).
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:
- Providers -- companies that host and serve Usenet content. You pay for access.
- 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.
- 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:
- Retention -- how far back they keep content. Most good providers offer 5,000+ days (roughly 14 years). Higher is better.
- Connections -- how many simultaneous download threads you can use. More connections = faster downloads. 20-50 is typical.
- Backbone -- the underlying infrastructure. There are a handful of major backbones (Omicron, Highwinds/Eweka, UsenetExpress). If content is missing from one backbone, it might be available on another.
- SSL -- encrypted connections. All modern providers support this. Use port 563 for SSL.
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:
- Newshosting -- popular, reliable, Omicron backbone
- Eweka -- excellent retention, Eweka/Highwinds backbone
- UsenetExpress -- independent backbone, good for block accounts
- Frugal Usenet -- budget-friendly, Omicron backbone
- NewsDemon -- frequent deals, good value
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:
- Add your Usenet provider: Enter the server address, port (563 for SSL), username, password, and number of connections. Enable SSL.
- Folders: Set your download directory to
/data/downloads/completeand incomplete to/data/downloads/incomplete.
Categories
Categories are how the arr apps tell SABnzbd to organize downloads. Go to Settings > Categories and create:
- tv -- output folder:
/data/downloads/complete/tv - movies -- output folder:
/data/downloads/complete/movies - music -- output folder:
/data/downloads/complete/music - books -- output folder:
/data/downloads/complete/books
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
- Enable Direct Unpack (Settings > Switches) -- starts extracting files while still downloading the rest. Saves time.
- Set Article Cache to about 500MB-1GB if you have RAM to spare. Speeds up downloads.
- Enable the Deobfuscation script -- some indexers scramble file names to avoid DMCA takedowns. This fixes them.
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):
- Downloads: Set the default save path to
/data/downloads/complete - Connection: Set the listening port (6881 is default). If your VPN supports port forwarding, use the forwarded port for better speeds.
- Speed: Consider setting upload limits if you want to control how much bandwidth seeding uses
- 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:
- tv -- save path:
/data/downloads/complete/tv - movies -- save path:
/data/downloads/complete/movies - music -- save path:
/data/downloads/complete/music
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:
- Supports WireGuard (fastest VPN protocol)
- Allows port forwarding (dramatically improves torrent speeds by making you connectable)
- Has a strict no-logs policy
- Allows P2P traffic
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:
network_mode: "service:gluetun"routes all qBittorrent traffic through the VPN container- Port mappings go on the gluetun container (since it owns the network)
- If the VPN disconnects, qBittorrent has no internet. Perfect kill switch.
- Your other services (Sonarr, Plex, etc.) are unaffected -- they use normal networking
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:
- Mullvad: Port forwarding via their website or API. They assign you a port that you configure in qBittorrent and gluetun.
- AirVPN: Port forwarding available in your account panel
- ProtonVPN: Port forwarding on paid plans through their API
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
- In Sonarr: go to Settings > Download Clients > Add
- Select SABnzbd
- Host:
sabnzbd(Docker service name) or your server IP - Port:
8080 - API Key: from SABnzbd's settings
- Category:
tv(for Sonarr) ormovies(for Radarr) - Click "Test" then "Save"
Adding qBittorrent to Sonarr/Radarr
- In Sonarr: go to Settings > Download Clients > Add
- Select qBittorrent
- Host:
gluetun(if using the VPN setup above) orqbittorrentor your server IP - Port:
8081 - Username & password: your qBittorrent web UI credentials
- Category:
tv(for Sonarr) ormovies(for Radarr) - Click "Test" then "Save"
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:
- Public trackers: No strict requirements, but seeding is good etiquette. Many people set a ratio limit (e.g., seed until you've uploaded 1x what you downloaded) or a time limit (seed for 24 hours).
- Private trackers: Strict ratio requirements. You must maintain a minimum upload-to-download ratio. Not seeding enough will get you banned. Don't use private trackers unless you can commit to seeding.
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.