Many systems have NZBGet in their repositories, from there you can easily install the program. If you can't find it there or if you want a newer version you need to compile the program from source files. This article explains how to do that. For cross compiling tips please refer to Cross compiling.
NZBGet is developed on a linux-system, but it should run on other POSIX platforms.
NZBGet absolutely needs the following libraries:
And the following libraries are optional:
For par-check and -repair:
V14 doesn't require libpar2 and libsigc++.
For encrypted connections (TLS/SSL):
All these libraries are included in modern Linux distributions and should be available as installable packages. Please note that you also need the developer packages for these libraries too, they package names have often suffix "dev" or "devel". On other systems you may need to download the libraries at the given URLs and compile them (see hints below).
You also need a working C++ compiler.
The following command installs all packages required to compile NZBGet v13:
sudo apt-get install build-essential libncurses5-dev libssl-dev libxml2-dev libsigc++-2.0-dev libpar2-dev -y
The command was tested on Ubuntu Server 14.04 LTS but package names may change from version to version.
For v14 packages "libsigc++-2.0-dev" and "libpar2-dev" are not needed.
Well, the usual stuff:
tar -zxf nzbget-VERSION.tar.gz
maybe you have to tell configure, where to find some libraries. "./configure --help" is your friend! ;-). Also see Configure-options below.
NOTE: if you want to spare some space on the drive you can install the stripped version (which is much smaller) of the binary instead:
The stripped version doesn't include any debugging symbols. You shouldn't do stripping if you compile the binary in debug mode (using ./configure --enable-debug).
NOTE: if you do not have root-access or do not want to install the program system-wide, you can omit the install-step and copy the compiled binary "nzbget" into any location you want.
You may run configure with additional arguments:
NZBGet can check and repair downloaded files for you. For this purpose it uses library par2 (libpar2), which needs sigc++ on its part.
In v14 the par2-module is integrated. Libraries libpar2 and sigc++ are not required. The rest of the chapter "Optional package: par-check" applies to v13 only.
The libpar2 and libsigc++ (version 2 or later) must be installed on your system. On most linux distributions these libraries are available as packages. If you do not have these packages you can compile them yourself. Following configure-parameters may be usefull:
--with-libpar2-includes --with-libpar2-libraries --with-libsigc-includes --with-libsigc-libraries
The library libsigc++ must be installed first, since libpar2 requires it.
Official project libpar2 (http://parchive.sourceforge.net) has not been updated for many years. The last official version of libpar 0.2 contains known bugs which may crash the program during par-check. These bugs have been fixed in the semi-official fork maintained by Debian/Ubuntu team (http://launchpad.net/libpar2). It is highly recommended to use this version of libpar2 (version 0.4 or newer) instead of the last official version 0.2. Recent releases of Debian/Ubuntu include this libpar2 version.
NZBGets configure script checks the installed version of libpar2 and prints an error if it is older than 0.4. The check can be suppressed if the update of libpar2 is not possible.
If you are not able to use libpar2 or libsigc++ or do not want them you can make nzbget without support for par-check using option "--disable-parcheck":
For curses-outputmode you need ncurses or curses on your system. If you do not have one of them you can download and compile ncurses yourself. Following configure-parameters may be usefull:
If you are not able to use curses or ncurses or do not want them you can make the program without support for curses using option --disable-curses:
To enable encrypted server connections (TLS/SSL) you need to build the program with TLS/SSL support. NZBGet can use two libraries: GnuTLS or OpenSSL. Configure-script checks which library is installed and use it. If both are avialable it gives the precedence to GnuTLS. You may override that with the option --with-tlslib=(GnuTLS, OpenSSL). For example to build whith OpenSSL:
Following configure-parameters may be usefull:
If none of these libraries is available you can make the program without TLS/SSL support using option "--disable-tls":
NZBGet needs a configuration file. After make install an example configuration file nzbget.conf is installed into /usr/shared/nzbget/nzbget.conf. Use command:
This command copies the configuration file into /etc/nzbget.conf and makes few changes in the file to adjust to your system paths. If you don't want the file to be system wide available you can instead of "make install-conf" copy the file into your home directory, open the file in a text editor and make sure the option ConfigTemplate is set properly. All other options can be edited later via web-interface.
The program looks for configuration file in following standard locations (in this order):
On POSIX systems:
You can use any other path and name but then you need to pass the full filename of the configuration file when starting NZBGet:
nzbget -c /path/to/nzbget.conf -D
If you put the configuration file in other place, you can use command- line switch "-c <filename>" to point the program to correct location.
In special cases you can run program without configuration file using switch "-n". You need to use switch "-o" to pass required configuration options via command-line.
NZBGet can be used in either standalone mode which downloads a single file or as a server which is able to queue up numerous download requests.
First start the nzbget-server:
A) in console mode:
B) or in daemon mode (POSIX only):
To stop server use:
Depending on which frontend has been selected in the nzbget.conf file (option "outputmode") the server should display a message that it is ready to receive download requests (this applies only to console mode, not to daemon mode).
When the server is running it is possible to queue up downloads. This can be done either in terminal with
nzbget -A <nzb-file>
or by uploading a nzb-file into server's monitor-directory (<MAINDIR>/nzb by default).
To check the status of server start client and connect it to server:
The client have three different (display) outputmodes, which you can select in configuration file (on client computer) or in command line. Try them:
nzbget -o outputmode=log -C nzbget -o outputmode=color -C nzbget -o outputmode=curses -C
To list files in server's queue:
It prints something like:
 nzbname\filename1.rar (50.00 MB)  nzbname\filename1.r01 (50.00 MB)
The numbers in square braces are ID's of files in queue. They can be used in edit-command. For example to move file with ID 2 to the top of queue:
nzbget -E T 2
or to pause files with IDs from 10 to 20:
nzbget -E P 10-20
or to delete files from queue:
nzbget -E D 3 10-15 20-21 16
For more information on using the program via command line see Command line reference.
Since NZBGet communicates via TCP/IP it's possible to have a server running on one computer and control it from another computer.
After the download of nzb-file is completed NZBget can call post-process-scripts, defined in configuration file.
NZBGet distribution comes with two example scripts.