Newznab on Ubuntu 14.04.2 x64
=============================
This guide will help you install everything you need to get Newznab+ running on a fresh Ubuntu server.
It will run through all the requirements for intalling: PHP, Apache2, phpmyadmin, Percona, unrar, Lame, Mediainfo, subversion, screen, tmux, Sphinxsearch, ffmpeg and of course Newznab+ itself.
It will then go on to help you get Newznab+ basically configured and background scripts running.
.. note:: This assumes you know linux in general, and know how to use CLI.
.. note:: This is a step-by-step guide. I am assuming that you are not tinkering with locations of installation et cetera. If you decide to install Newznab+ elsewhere or put unrar in your home directory, there will be other changes you will have to make.
:sub:`Guide written by Stifler. Find me on synIRC #newznab`
:sub:`Version 0.1 - Initial Release`
:sub:`Version 0.2 - fixed typos; fixed incorrect character encoding; added install nano; fixed subversion install; added key_buffer change`
:sub:`Version 0.3 - sphinxsearch installation change;`
:sub:`Version 0.4 - removed references to tokudb`
Step 1: Install Ubuntu 14.04.2
------------------------------
Download the iso image of Ubuntu Server 14.04.2 amd64.
On the start page (after you select your language) hit F4 and select "install a minimal system" (or if you are doing it in a VM, "Install a minimal virtual machine") and hit Enter.
Hit Enter again to start the install.
During the install choose region, keyboard, hostname, user name, timezone, partitions, etc and go get a beverage.
.. note:: When it comes to asking what software to install, select "OpenSSH server" only.
Step 2: Update Ubuntu
---------------------
Login into your new server and run::
sudo apt-get -y update
sudo apt-get -y upgrade
sudo apt-get -y dist-upgrade
The Next step is optional, it will update the kernel to version 4.0.
::
cd /tmp/
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.0-vivid/linux-headers-4.0.0-040000_4.0.0-040000.201504121935_all.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.0-vivid/linux-headers-4.0.0-040000-generic_4.0.0-040000.201504121935_amd64.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.0-vivid/linux-image-4.0.0-040000-generic_4.0.0-040000.201504121935_amd64.deb
sudo dpkg -i linux-headers-4.0.0-*.deb linux-image-4.0.0-*.deb
sudo reboot
At this point you have a basic Ubuntu x64 Linux kernel 4.0.0 with SSH. Which if you haven't already, can start using for the rest of the process if you need to.
Step 3: Install the necessities for NN+
---------------------------------------
Install php5 and some additional modules for it. At time of writing version 5.5.9
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
::
sudo apt-get install -y php5 php5-dev php-pear php5-gd php5-mysql php5-curl
Install Percona. At time of writing version 5.6
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
::
sudo apt-key adv --keyserver keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A
sudo gpg -a --export CD2EFD2A | sudo apt-key add -
sudo sh -c "echo \"deb http://repo.percona.com/apt trusty main \ndeb-src http://repo.percona.com/apt trusty main\" >> /etc/apt/sources.list"
sudo apt-get -y update
sudo apt-get install percona-server-server-5.6 percona-server-client-5.6
.. note:: You will be asked to **create** a password for the DB server root user.
Install apache2
+++++++++++++++
::
sudo apt-get install -y apache2
Install unrar
+++++++++++++
::
sudo apt-get install -y unrar
Install Lame
++++++++++++
::
sudo apt-get install -y lame
Install MediaInfo
+++++++++++++++++
::
sudo apt-get install -y mediainfo
Install Subversion (SVN)
++++++++++++++++++++++++
::
sudo apt-get install -y subversion
Install Screen and tmux
+++++++++++++++++++++++
::
sudo apt-get install -y screen tmux
Install Sphinx search
+++++++++++++++++++++
.. note:: OMG! sphinxsearch is so far behind in Ubuntu!! Notice I even had to goto Precise to get one :-P
Lets get a daily build instead.::
sudo gpg --keyserver hkp://keys.gnupg.net --recv-keys B9D8946B16932B16
sudo gpg -a --export 16932B16 | sudo apt-key add -
sudo sh -c "echo \"deb http://ppa.launchpad.net/builds/sphinxsearch-daily/ubuntu precise main \ndeb-src http://ppa.launchpad.net/builds/sphinxsearch-daily/ubuntu precise main\" >> /etc/apt/sources.list"
sudo apt-get -y update
sudo apt-get install -y sphinxsearch
Install nano
++++++++++++
::
sudo apt-get install -y nano
Install ffmpeg
++++++++++++++
You have two options, either follow this https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu or better yet, do this:
Copy the script from here: https://gist.github.com/xdamman/e4f713c8cd1a389a5917
Create a new script file::
sudo nano ~/install_ffmpeg_ubuntu.sh
Paste the script in and save the file. Then make it executable::
sudo chmod 777 ~/install_ffmpeg_ubuntu.sh
And run it::
sudo ~/install_ffmpeg_ubuntu.sh
Whichever way you choose, you will be spending a lot of time drinking the beverage of your choice waiting for ffmpeg...
Install phpmyadmin
++++++++++++++++++
::
sudo apt-get install -y phpmyadmin
Now let's improve phpmyadmin security a bit::
sudo a2disconf phpmyadmin
sudo nano /etc/apache2/ports.conf
Add ``Listen 12322`` directly under ``Listen 80``. This is where we will make phpmyadmin available.
Save the file.
Now we will create the new site phpmyadmin::
sudo nano /etc/apache2/sites-available/phpmyadmin.conf
Add this to the new file::
ServerName phpmyadmin
DocumentRoot /var/www/phpmyadmin
Save the file.
Create a symlink to phpmyadmin::
sudo ln -s /usr/share/phpmyadmin /var/www/phpmyadmin
Enable the site::
sudo a2ensite phpmyadmin
sudo service apache2 restart
You will now be able to access phpmyadmin at ``http://yourserver:12322/``
Step 4: Modifying various settings to how we want.
--------------------------------------------------
Editing php configuration (php.ini)
+++++++++++++++++++++++++++++++++++
.. note:: There are two php.ini files, edit both of them and make the same changes to both files.
::
sudo nano /etc/php5/cli/php.ini
and::
sudo nano /etc/php5/apache2/php.ini
Find these settings (under [PHP] section) and check/add/modify as necessary::
ADD: register_globals = Off
MODIFY: max_execution_time = 120
CONFIRM: memory_limit = -1
Next set date.timezone (under [Date] section)
Remove the ';' from the start of the line. For example::
date.timezone = Europe/London
.. note:: The timezone can be whatever, but it will need to be set the same as the database later.
Creating the NN+ Website
++++++++++++++++++++++++
::
sudo nano /etc/apache2/sites-available/newznab.conf
Add this to the new file::
Options FollowSymLinks
AllowOverride All
Order allow,deny
allow from all
ServerAdmin admin@example.com
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/newznab/www
LogLevel warn
ServerSignature Off
Save the file.
Now to enable the new site, disable the default site and enable modrewrite.
::
sudo service apache2 stop
sudo a2dissite 000-default.conf
sudo a2ensite newznab
sudo a2enmod rewrite
sudo service apache2 start
Editing Percona configuration (mysql.cnf)
+++++++++++++++++++++++++++++++++++++++++
::
sudo nano /etc/mysql/my.cnf
Find these settings (under [mysqld] section) and check/add/modify as necessary::
CONFIRM: max_allowed_packet = 16M
ADD: group_concat_max_len = 8192
ADD: default_time_zone='Europe/London'
ADD: sql_mode = ''
MODIFY: key_buffer = 16M to key_buffer_size = 16M
Save the file.
.. note:: ``key_buffer`` is deprecated, and now becomes ``key_buffer_size``
.. note:: ``sql_mode`` removing only_full_group_by which became default in mysql 5.7
.. note:: **BEFORE** you restart mysql import the timezones from Ubuntu into Percona database.
Run the following::
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
.. note:: This will ask for your database password.
Now restart the database service::
sudo service mysql restart
.. note:: The timezone can be whatever, but it will need to be set the same as PHP. See the PHP section prior.
Step 5: The one you have been waiting for! Installing Newznab.
--------------------------------------------------------------
::
cd /var/www
sudo mkdir newznab
sudo chmod 777 newznab
sudo svn co svn://svn.newznab.com/nn/branches/nnplus /var/www/newznab
.. note:: You will need your username and password from newznab to access the svn. When you run this command first time, it will ask you for the password of the user you are logged in with. Ignore that and just hit Enter, it will then ask for your svn username.
::
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/anime
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/
Once you have completed all that you should now be able to login at ``http://yourserver/``
Step 6: Make Newznab+ do what you want it to do.
------------------------------------------------
Here we are going to setup some basics to get Newznab+ running. There are many more things can can and will need to be done. This is not going to cover everything, but you will be running after this.
Configuration from the home page.
+++++++++++++++++++++++++++++++++
Login to your server ``http://yourserver/``
::
Click on "Go to step one: Pre flight check"
Confirm that the preflight checklist is all **OK**. If not, you will need to fix those problems first.
Click on "Go to step two: Set up the database"
Enter your database username ``root`` and your password. Leave the other settings as is.
Click on "Setup Database"
Click on "Step three: Setup news server connection"
Enter your details for your news server.
Click on "Test Connection"
Click on "Step four: Cache Settings"
Leave Caching Type on "None"
Click on "Save configuration file"
Click on "Step five: Setup admin user"
Enter the details you want for the administrator of Newznab+
Click on "Create Admin User"
Click on "Step Seven: Set NZB File Path"
Leave the location as ``/var/www/newznab/nzbfiles/``
Click on "Set NZB File Path"
Done! Click on the link to the admin page. Leave the browser open.
Configure Sphinx
++++++++++++++++
Log into your Newznab server shell.
First generate a config for sphinxsearch.::
cd /var/www/newznab/misc/sphinx
sudo ./nnindexer.php generate
Next we need create the indexes.::
sudo ./nnindexer.php daemon
sudo ./nnindexer.php index full all
sudo ./nnindexer.php index delta all
sudo ./nnindexer.php daemon --stop
sudo ./nnindexer.php daemon
Configure Site Settings
+++++++++++++++++++++++
Back in your browser at the ``Admin Home``. Click on the "hide this welcome message" so you can see the ``Status Alerts``. There will probably be a couple of them.
.. note:: Most obvious and important is the one that is telling you that your Newznab ID is missing.
Now click on ``Edit Site`` and we will set a couple of basic items up.
Scroll to the bottom of ``Main Site Settings, HTML Layout, Tags`` and you will see ``newznab ID:``. Paste your ID in there.
Scroll down to ``3rd Party Application Paths`` and change the following::
Unrar Path to : /usr/bin/unrar
Mediainfo Path to: /usr/bin/mediainfo
ffmpeg Path to : /usr/local/bin/ffmpeg
Lame Path to : /usr/bin/lame
Now scroll down further to ``Password Settings`` and change ``Check For Passworded Releases:`` to ``Deep (requires unrar)``
Now scroll further to ``Sphinx Settings`` and change ``Use Sphinx`` to ``Yes``. Then change ``Index ReleaseFiles`` to ``Yes``.
Now scroll all the way to the bottom and hit ``Save Site Settings``.
Configure Groups
++++++++++++++++
Under the Admin Functions click on ``View`` in ``View Add BulkAdd Groups``.
Click on ``Activate`` for a couple of the groups you want to index.
You will probably want to add more groups later and you can do that by clicking on ``Add`` or ``BulkAdd`` under Admin Functions, ``View Add BulkAdd Groups``.
Step 7: Running the scripts.
----------------------------
To run the scripts we need to do it in either ``screen`` or ``tmux``. The choice is yours, if you dont know either then I suggest screen first for its simplicity.
I'll use ``screen`` for this guide.
Go back to your shell login and change to ''nix_scripts'' directory. We will create our own script based on the default and modify it::
cd /var/www/newznab/misc/update_scripts/nix_scripts
sudo cp newznab_screen.sh mynewznab.sh
sudo chmod 744 mynewznab.sh
sudo nano mynewznab.sh
Now modify the ``export NEWZNAB_PATH`` to::
export NEWZNAB_PATH="/var/www/newznab/misc/update_scripts"
Save the file and start screen.::
screen -S newznab
Run the script.::
sudo ./mynewznab.sh
You should now see the script start to run. To exit the ``screen`` and leave the script running press [CTRL]-[a] and then [d].
At anytime you wish to go back into the ``screen`` to see what is happening run::
screen -r newznab