How to Install SABnzbd Usenet Client on Ubuntu 16.04/18.04

SABnzbd is a free open-source and web-based Usenet client for downloading binary content (image, audio, video, e-book, etc.) on Usenet. It’s cross-platform, available for Linux, BSD, MacOS, UNIX, Windows, Synology, QNAP and so on. This tutorial is going to show you how to install SABnzbd on Ubuntu 16.04 and Ubuntu 18.04.

SABnzbd features:

  • You can access it from anywhere with a web browser.
  • A responsive web interface.
  • Multiple Usenet servers (providers) are supported.
  • Mobile apps are available for Android and iOS
  • Apps like Sonarr, Sickrage, CouchPotato and Headphones can integrate with SABnzbd and automate your download process.
  • SABnzbd can also read and process RSS feeds, activate custom scripts and notify you via mail, growl, prowl, pushover and pushbullet.
  • NZB (Newz Binary) indexer integration. A NZB file is like a torrent file and a NZB indexer is like a torrent site.
  • And many more

How to Install SABnzbd Usenet Client on Ubuntu 16.04/18.04

SABnzbd is available from the default Ubuntu repository. So you can open up a terminal and install it with apt.

sudo apt install sabnzbdplus

SABnzbd is being actively developed. It’s recommended to run the following commands to install the latest stable version (2.3.9 at the time of this writting) from the SABnzbd PPA.

sudo add-apt-repository ppa:jcfp/nobetas

sudo add-apt-repository ppa:jcfp/sab-addons

sudo apt update

sudo apt install sabnzbdplus python-sabyenc par2-tbb

The SABYenc module can help increase the download speed on CPU-limited devices. The par2-tbb package provide the Multicore-par2 module to significantly speed up verification and repair by using all cores on your system.

Create a Sytemd Service Unit for SABnzbd

Although the sabnzbdplus package provides a traditional Init script (/etc/init.d/sabnzbdplus), but I found it wouldn’t work. I ran the following command to start the service.

sudo service sabnzbdplus start

If I list the listening ports on my Ubuntu system with the following command, port 8080 is nowhere to be found, (SABnzbd by default listens on port 8080.) which indicates the it’s not running.

sudo netstat -lnpt | grep 8080

The better way to start SABnzbd is to use Systemd service unit. We can use a command line text editor such as Nano to create a Systemd service for SABnzbd.

sudo nano /etc/systemd/system/sabnzbd.service

Put the following text into the file.

[Unit]
Description=SABnzbd Usenet Client
After=network.target

[Service]
Type=simple
User=sabnzbd
Group=sabnzbd
ExecStart=/usr/bin/python -OO /usr/bin/sabnzbdplus --browser 0 
ExecStop=/usr/bin/pkill sabnzbdplus
Restart=always
SyslogIdentifier=SABnzbd Usenet Client

[Install]
WantedBy=multi-user.target

SABnzbd listens on port 8080 by default. If this port is being used by another process on your system, then SABnzbd will automatically choose a different port. I recommend choosing a port directly in the ExecStart paramter like below, which will make SABnzbd listen on port 8081.

ExecStart=/usr/bin/python -OO /usr/bin/sabnzbdplus -s 127.0.0.1:8081 --browser 0

Save and close the file. (To save a file in Nano text editor, press Ctrl+O, then press Enter to confirm. To close the file, press Ctrl+X.)

Then reload Systemd.

sudo systemctl daemon-reload

Note that SABnzbd doesn’t require root privilege to run. so we’ve specified in the service file that SABnzbd should run as the sabnzbd user and group, which have no root privileges. Create the sabnzbd system user and group with the following command. The home directory will be used to save configuration file (/home/sabnzbd/.sabnzbd/sabnzbd.ini).

sudo adduser --system --home /home/sabnzbd --group sabnzbd

Now we can use the systemd service to start sabnzbd.

sudo systemctl start sabnzbd

Enable auto start at boot time.

sudo systemctl enable sabnzbd

Now check sabnzbd status.

systemctl status sabnzbd

Sample output:

SABnzbdplus systemd service unit

Launch the Setup Wizard

You can enter 127.0.0.1:8080/sabnzbd/wizard in any web browser to launch the quick start wizard.

install sabnzbd ubuntu

Select a language. In the next screen, enter the server details of your Usenet provider. I use NewsDemon, which offers 15 days free trial. These server details can be obtained from your Usenet provider. If your Usenet supports SSL, make sure to check SSL.

sabnzbd newsdemon

In order to download content (image, audio, video, e-book, etc.) from Usenet, you need to feed a NZB file to SABnzbd. NZB file, which is similar to .torrent file, can be download from Usenet index sites like nzbfinder.ws. Most of these sites are based on a freemium model. You have the option to build your own free Usenet indexer, but now for a Usenet beginner it’s a good idea to register free accounts with these Usenet index sites to see what’s available to you. As you can see from the screenshot, the download speed is quite fast. (16.8 MB/s = 134.4 Mbit/s)

sabnzbd newsdemon download speed

How to Change the Download Destination Folder

The default download folder is /home/sabnzbd/Downloads. If you want to change it to another directory, for example, your external hard drive, click the Folder menu in the SABnzbd web interface. Then click the Browser button to change it.

sabnzbd change download destination folder

Note that the sabnzbd user needs to have read and write permission to your download destination folder. If you use an external USB hard drive, you can run the following command to grant permission.

sudo setfacl -R -m u:sabnzbd:rwx /media/linuxbabe/

My external USB hard drive is mounted at /media/linuxbabe/, change it as appropriate.

Setting up Reverse Proxy

To access SABnzbd web interface from a remote connection (e.g. outside your LAN) using domain name, you can set up reverse proxy with Nginx or Apache.

If you don’t have a real domain name, I recommend going to NameCheap to buy one. The price is low and they give whois privacy protection free for life.

Nginx

Install Nginx on Ubuntu 16.04 or Ubuntu 18.04:

sudo apt install nginx

Start Nginx web server.

sudo systemctl start nginx

Then create a new server block file in /etc/nginx/conf.d/ directory.

sudo nano /etc/nginx/conf.d/sabnzbd.conf

Paste the following text into the file. Replace sabnzbd.your-domain.com with your preferred domain name and don’t forget to create A record for it. If you use a different port, change 8080 to your own port number.

server {
       listen 80;
       server_name sabnzbd.your-domain.com;

       location / {
              proxy_pass http://127.0.0.1:8080;
              proxy_set_header Host $http_host;
              proxy_set_header X-Real-IP $remote_addr;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
              proxy_set_header X-Forwarded-Proto $scheme;
        }
}

Save and close the file. Then test Nginx configuration.

sudo nginx -t

If the test is successful, reload Nginx.

sudo systemctl reload nginx

Now you can access SABnzbd Web interface via sabnzbd.your-domain.com. If you see the following error:

Access denied - Hostname verification failed

Then you need edit the configuration file (/home/sabnzbd/.sabnzbd/sabnzbd.ini) and add sabnzbd.your-domain.com to the whitelist.

host_whitelist = sabnzbd.your-domain.com

Then restart SABnzbd.

sudo systemctl restart sabnzbd

Apache

If you use Apache web server rather than Nginx, then follow the instructions below to set up reverse proxy.

Install Apache web server.

sudo apt install apache2

To use Apache as a reverse proxy, we need to enable the proxy modules and we will also enable the rewritemodule.

sudo a2enmod proxy proxy_http rewrite

Then create a virtual host file for SABnzbd.

sudo nano /etc/apache2/sites-available/sabnzbd.conf

Put the following texts into the file. Replace sabnzbd.your-domain.com with your actual domain name and don’t forget to set an A record for it. If you use a different port, change 8080 to your own port number.

<VirtualHost *:80>
    ServerName sabnzbd.your-domain.com

    ProxyPass / http://127.0.0.1:8080/
    ProxyPassReverse / http://127.0.0.1:8080/
</VirtualHost>

Save and close the file. Then enable this virtual host.

sudo a2ensite sabnzbd.conf

Reload Apache for the changes to take effect.

sudo systemctl reload apache2

Now you can remotely access SABnzbd by entering the domain name (sabnzbd.your-domain.com ) in browser address bar. If you see the following error:

Access denied - Hostname verification failed

Then you need edit the configuration file (/home/sabnzbd/.sabnzbd/sabnzbd.ini) and add sabnzbd.your-domain.com to the whitelist.

host_whitelist = sabnzbd.your-domain.com

Then restart SABnzbd.

sudo systemctl restart sabnzbd

Enable HTTPS

To encrypt the HTTP traffic when you visit SABnzbd web interface from outside, we can enable HTTPS by installing a free TLS certificate issued from Let’s Encrypt. Run the following command to install Let’s Encrypt client (certbot) on Ubuntu.

sudo apt install certbot

If you use Nginx, then you also need to install the Certbot Nginx plugin.

sudo apt install python3-certbot-nginx

Next, run the following command to obtain and install TLS certificate.

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d sabnzbd.your-domain.com

If you use Apache, then you need to install the Certbot Apache plugin.

sudo apt install python3-certbot-apache

Next, run the following command to obtain and install TLS certificate.

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d sabnzbd.your-domain.com

Where:

  • --nginx: Use the nginx plugin.
  • --apache: Use the Apache plugin.
  • --agree-tos: Agree to terms of service.
  • --redirect: Force HTTPS by 301 redirect.
  • --hsts: Add the Strict-Transport-Security header to every HTTP response. Forcing browser to always use TLS for the domain. Defends against SSL/TLS Stripping.
  • --staple-ocsp: Enables OCSP Stapling. A valid OCSP response is stapled to the certificate that the server offers during TLS.

The certificate should now be obtained and automatically installed.

sabnzbd ssl certificate

Restricting Access

If SABnzbd is accessible from public Internet, then it’s very important to set a username and password, which can be done in Config > General > Security section.

Wrapping Up

That’s it! I hope this tutorial helped you install SABnzbd on Ubuntu 16.04/18.04. As always, if you found this post useful, then subscribe to our free newsletter to get more tips and tricks. Take care 🙂

Rate this tutorial
[Total: 13 Average: 4.5]

Leave a Comment

  • Comments with links are moderated by admin before published.
  • Your email address will not be published.
  • Use <pre> ... </pre> HTML tag to quote the output from your terminal/console.
  • Please use the community (https://community.linuxbabe.com) for questions unrelated to this article.
  • I don't have time to answer every question. Making a donation would incentivize me to spend more time answering questions.