There are plenty of NZB Indexers out there such as NZB Matrix and NZBs(dot)ORG , but they only index SOME of Usenet. Here’s how to build your own indexer so you can index what you want.

Things You Will Need:

  • A computer running Ubuntu.
  • A Usenet account.
  • A basic understanding of the Linux terminal.
  • A decent internet connection.

If you have all of the above you are good to go, let’s get started.

Installing NewzNab

We are going to be doing pretty much the whole install from a terminal, so fire up terminal and execute the following:

sudo gnome-terminal

This is going to give us a terminal running under the root security context, this way we don’t have to keep typing sudo.

The first thing you are going to want to do is update your repositories:

apt-get update

Most website-related stuff on Ubuntu lives in /var/www,so lets make a directory for our install and set writable permissions on the folder:

mkdir –p /var/www/newznab

chmod 777 /var/www/newznab

Next we need to install PHP:

apt-get install –y php5 php5-dev php-pear

We need to install a few extra PHP extensions as well:

apt-get install –y php5-gd php5-mysql php5-curl

The next thing we need to do is edit the PHP configuration, we’ll be using nano for this:

nano /etc/php5/cli/php.ini

There are two settings that need to be changed,  firstly you will need to change:

max_execution_time = 120

You will also need to change the date.timezone setting, you can get a full list of possible values over here.

Next we need to install some kind of database, I opted to go for MySQL:

apt-get install mysql-server-5.5

apt-get install mysql-client-5.5

apt-get install libmysqlclient-dev

You will be prompted for a password during configuration, make sure to choose a strong password, especially if you plan on making it a publicly available indexer.

The last thing we need to install is Apache:

apt-get install –y apache2

We will need to make the same changes that we made to the base PHP configuration, to the Apache configuration, there is also an additional setting that needs to be changed, again we will use nano:

nano /etc/php5/apache2/php.ini

These are the settings you will need to change:

  • memory_limit =  -1
  • max_execution_time = 120
  • date.timezone =  Europe/London

We now need to create the appropriate Apache configuration for our website, so run:

nano /etc/apache2/sites-available/newznab

When nano opens paste the following into the file:

<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName localhost

DocumentRoot /var/www/newznab/www
ErrorLog /var/log/apache2/error.log
LogLevel warn

The go ahead and commit the changes to the file.

Now that all the pre-requisites are installed we can install NewzNab, so head over to the download page and grab a copy of NewzNab Classic.

Once it has downloaded extract it.

Now copy all the extracted files.

Paste them in:


Now open a new terminal and run the following commands to register NewzNab as the default website, as well as enable mod-rewrite.

sudo a2dissite default
sudo a2ensite newznab
sudo a2enmod rewrite
sudo service apache2 restart

You may notice an error when you execute the restart command, this is because we used localhost in our config file, just ignore it and continue.

Finally to sort out some permission issues run the following:

sudo chmod 777 /var/www/newznab/www/lib/smarty/templates_c
sudo chmod 777 /var/www/newznab/www/covers/movies
sudo chmod 777 /var/www/newznab/www/covers/music
sudo chmod 777 /var/www/newznab/www
sudo chmod 777 /var/www/newznab/www/install
sudo chmod 777 /var/www/newznab/nzbfiles/


Now that we have NewzNab installed we need to configure it, after all there wouldn’t be any point in running your own indexer if you didn’t customize it. So open up your browser of choice and head over to http://localhost/install. Once the page has loaded click on the button to check the status of your pre-requisites.

Note: You will get two settings that have a warning status, those are the date.timezone and the memory_limit settings. Just ignore these and continue.

Once you move on you will need to put in the credentials to access your MySQL database.

You will also need the details to your Usenet account.

Then go ahead and choose a username and password for yourself, these are the credentials you will use to log into your website with.

You might get an error when it asks you where you want to store the nzb files, just run the provided chmod command from a terminal as a quick fix.

Congratulations you have made it to the admin hangout.

One thing you will need to do before I send you on your way is change the  way the nzb categories work, to do this click on your name in the top right hand corner.

Then click on the Edit link.

Now uncheck the boxes for Movies, Music and Console.

Once you have that done, head back over to http://localhost/admin and go through the steps to finish configuring your indexer.

That’s all there is to it. Be sure to follow me on Twitter: @taybgibb

Profile Photo for Taylor Gibb Taylor Gibb
Taylor Gibb is a professional software developer with nearly a decade of experience. He served as Microsoft Regional Director in South Africa for two years and has received multiple Microsoft MVP (Most Valued Professional) awards. He currently works in R&D at Derivco International.
Read Full Bio »