Wednesday, 13 June 2018

SSH Stuff

I've just managed to install a load of stuff onto my desktop as I didn't realise I wasn't connected to a remote machine via ssh.

G+ gave me a suggestion about changing the login colours on the remote machine so a bit of searching came up with this.

Connect via ssh and run

nano .bashrc

Add this lot in just above the last fi

#Make prompt colored when logged in remote
export NON_LOCAL_LOGIN=`env | grep SSH`
if [ "$NON_LOCAL_LOGIN" != "" ]; then
       PS1="\033[33m[\u@\h:\w]#\033[0m "
fi;

Save and close and you're sorted

Original answer came from here

Saturday, 9 June 2018

More NewzNab Stuff

Back to getting Newznab running on a Raspberry Pi, I want to add some extra storage for the NZB files, so I'll be connecting 2 x 32Gb USB sticks in a RAID 1 array, I'll initially use the sticks in an lvm in case I want to increase the size at a later date, I won't be going through how to install Raspbian or configure the Pi with a static address, plenty of articles about this elsewhere. I would encourage you to make a new super user on the Pi and then delete the Pi user for security reasons

Once the initial install has finished it's time to ssh into the server with:


ssh servername


And then we'll get started with some updates and installation of the required packages.


First off we need to run:


sudo nano /etc/apt/sources.list 


Uncomment the line that says 




deb-src http://archive.raspbian.org/raspbian/ jessie main contrib non-free rpi

Once we've done that we can begin

sudo -s

cd  /root

apt update && apt upgrade

apt-get build-dep unrar-nonfree


apt-get source -b unrar-nonfree


sudo dpkg -i unrar_5.2.7-0.1_armhf.deb

Next we install ZRAM to imrpove the performance

sudo wget -O /usr/bin/zram.sh https://raw.githubusercontent.com/novaspirit/rpi_zram/master/\zram.sh

chmod +x /usr/bin/zram.sh

And then add a line to /etc/rc.local to get it running on boot

sudo nano /etc/rc.local

Insert the line shown below before the exit 0, save the file and reboot

/usr/bin/zram.sh


Time now to install some software

sudo -i

apt install ssh screen apache2 php mysql-server libapache2-mod-php php-pear php-gd php-mysql php-curl php-json unrar lame mediainfo subversion ffmpeg memcached mc nfs-common lvm2 mdadm -y


Once that's all finished we will tighten up the SQL security with this:

mysql_secure_installation


Now it's time to create the SQL database:

mysql -u root -p


CREATE DATABASE newznab;

USE mysql;
UPDATE user SET plugin='mysql_native_password' WHERE User='root';
FLUSH PRIVILEGES;
exit;


And then we edit the mysql config


nano /etc/mysql/conf.d/mysql.cnf


Add the following to the bottom


[mysqld]

group_concat_max_len=8192
innodb_flush_log_at_trx_commit = 2

Save that and then edit this file


nano /etc/mysql/my.cnf


Add this to the bottom


[mysqld]

sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

Time now to add the external storage, plug the drives in, if you plug them into the sockets nearest the ethernet connector they should be recognised as /dev/sda and /dev/sdb and stay that way too.


Run 


fdisk /dev/sda


Delete any existing partion and creat a new one, then do the same for /dev/sdb


Might be worth a restart if you get any messages about the kernel using the old table.


Prepare the partitions with


sudo pvcreate /dev/sda1 /dev/sdb1


Make two volume groups for each drive with this command


Now we create two  "Volume Groups" with the command:


sudo vgcreate newznab1 /dev/sda1


sudo vgcreate newznab2 /dev/sdb1


Now we give all the drive space to the volume with:


sudo lvcreate -l 100%FREE -n newznablv1 newznab1


sudo lvcreate -l 100%FREE -n newznablv2 newznab2


This creates two devices called /dev/newznab1/newznablv1 and 
/dev/newznab2/newznablv2

Next it's time to create the filesystem with the command:


sudo mkfs.ext4 /dev/newznab1/newznablv1


sudo mkfs.ext4 /dev/newznab2/newznablv2



Time to make the RAID 1 array


sudo mdadm --create /dev/md0 --level=mirror --raid-devices=2 /dev/newznab1/newznablv1 /dev/newznab2/newznablv2


Create a filesystem with 


sudo mkfs.ext4 /dev/md0


Now we create a mount point

sudo mkdir  /var/www/newznab

Update fstab to start mount on reboot

echo "/dev/md0 /var/www/newznab/ ext4 defaults,noatime 0 1" | sudo tee -a /etc/fstab

And finally update mdadm to start it at boot, don't run this twice

sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

Now we make the directory structure:

sudo -i


mkdir /var/www/newznab

mkdir /var/www/newznab/htdocs
mkdir /var/www/newznab/logs

Now it's time to get Newznab, you can get it here, I suggest you get the paid version, it's cheap and it's much better and these instructions are written with it in mind.


Let's get it installed with 


svn co svn://svn.newznab.com/nn/branches/nnplus /var/www/newznab/htdocs/


Now we make the directories writable with


chmod 777 /var/www/newznab/htdocs/www/lib/smarty/templates_c
chmod 777 /var/www/newznab/htdocs/www/covers/movies
chmod 777 /var/www/newznab/htdocs/www/covers/anime
chmod 777 /var/www/newznab/htdocs/www/covers/music
chmod 777 /var/www/newznab/htdocs/www/covers/tv
chmod 777 /var/www/newznab/htdocs/www
chmod 777 /var/www/newznab/htdocs/www/install
chmod -R 777 /var/www/newznab/htdocs/nzbfiles/

And then make a config for Apache to use


nano /etc/apache2/sites-available/newznab.conf


Paste this into it:


<VirtualHost *:80>
    <Directory /var/www/newznab/htdocs/www/>
        Options FollowSymLinks
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    DocumentRoot /var/www/newznab/htdocs/www

    ErrorLog /var/www/newznab/logs/error.log
    CustomLog /var/www/newznab/logs/access.log combined
</VirtualHost>

You can change the port in the top line to something else if you want but you have to add a line to


etc/apache2/ports.conf


That says


Listen 8080 or whatever port you choose.


Now some config file changes with:


nano /etc/php/7.0/apache2/php.ini


Find these values and change them as shown below, they are listed in order:


max_execution_time = 120

memory_limit = -1
date.timezone = 'Europe/London'

Now we activate the server and deactivate the default one with:


a2dissite 000-default.conf

a2ensite newznab
a2enmod rewrite
service apache2 restart
service mysql restart


And point your browser to:



http://server:port to finish setting up Newznab itself


Once you've finished the initial setup, go the admin section and click on edit site, find these options and change the values to the ones shown below, you don't have to change the default home page if you don't want to.


default home page : /browse

newznabID : <provided in signup email>
unrar path : /usr/bin/unrar
mediainfo path : /usr/bin/mediainfo
ffmpeg path : /usr/bin/ffmpeg
lame path : /usr/bin/lame
integrated cleanup : yes
save audio preview : yes
check for password : deep
delete passworded releases : yes


Activate one group, probably alt.binaries.teevee


Then let's try running an update



cd /var/www/newznab/htdocs/misc/update_scripts

php update_binaries.php
php update_releases.php

Once completed you should see some articles appearing

There's a lot more information here on how to get Newznab running to continuously pull updates here, the one thing that you shouldn't do is use a cron job.

Hope that helps, it's not fast but it's quiet and it works