Installer NzbGet sur Debian
Cet article présente l’installation de NzbGet, sur Debian Wheezy 7.5 64 bits, qui sert de client de download à NzbDrone. NzbGet est disponible dans les packages debian, malheureusement, il s’agit d’une version antique sur debian wheezy. A nouveau, il est donc préférable de compiler. La version stable la plus récente est la 13.0 à l’heure actuelle.
Pré-Requis à la Compilation de NzbGet
Quelques packages sont nécessaires. Attention, cet article suit l’installation de NzbDrone et il est probable qu’un certain nombre de packages installés précédemment soient aussi nécessaires.
1 | root@server:~# apt-get install libstdc++6 libxml2 libxml2-dev libncurses5 libncurses5-dev libsigc++-2.0-dev openssl libssl-dev libpar2-0-dev |
Il va ensuite falloir compiler la librairie libpar en version 2.0.4. Un patch est nécessaire afin de pouvoir compiler sans problème NzbGet par la suite. Libpar est une librairie intéressante à avoir étant donné qu’elle permet à NzbGet de vérifier et réparer les fichiers chargés. Normalement elle devrait être inclue à partir de la version 14 de ce dernier. En attendant…
1 2 3 4 5 6 7 8 9 10 11 12 | root@server:~# wget https://launchpad.net/libpar2/trunk/0.4/+download/libpar2-0.4.tar.gz root@server:~# tar xvf ./libpar2-0.4.tar.gz root@server:~# cd ./libpar2-0.4/ root@server:~/libpar2-0.4# wget http://nzbget.net/files/libpar2-0.4-external-verification.patch [...] 2014-11-03 20:30:05 (105 MB/s) - `libpar2-0.4-external-verification.patch' saved [1339/1339] root@server:~/libpar2-0.4# patch < libpar2-0.4-external-verification.patch patching file par2repairer.h root@server:~/libpar2-0.4# ./configure root@server:~/libpar2-0.4# make && make install root@server:~/libpar2-0.4# apt-get purge libpar2-0 |
Apparemment, il n’est pas possible de compiler libpar en 2.0.4 sans libpar2-0-dev, qui installe automatiquement libpar2-0 ce qui empêchera la compilation de NzbGet. D’où la nécessité du dernier apt-get purge
Compilation de NzbGet
Il ne reste plus maintenant qu’à compiler (enfin) NzbGet.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | root@server:~/libpar2-0.4# cd .. root@server:~# wget http://sourceforge.net/projects/nzbget/files/nzbget-13.0.tar.gz --2014-11-03 20:35:35-- http://sourceforge.net/projects/nzbget/files/nzbget-13.0.tar.gz Resolving sourceforge.net (sourceforge.net)... 216.34.181.60 Connecting to sourceforge.net (sourceforge.net)|216.34.181.60|:80... connected. [...] 100%[==================================================================================================>] 1,229,936 2.94M/s in 0.4s 2014-11-03 20:35:37 (2.94 MB/s) - `nzbget-13.0.tar.gz' saved [1229936/1229936] root@server:~# tar xvf ./nzbget-13.0.tar.gz root@server:~# cd ./nzbget-13.0/ root@server:~/nzbget-13.0# ./configure root@server:~/nzbget-13.0# make root@server:~/nzbget-13.0# make install |
La commande make install-conf
va installer le fichier de configuration
1 2 | root@server:~/nzbget-13.0# make install-conf root@server:~/nzbget-13.0# nano /usr/local/etc/nzbget.conf |
Le fichier nzbget.conf permet de paramétrer les serveurs de news utilisés, les répertoires de chargement, les paramètres de connexion, etc.
Script de Démarrage Automatique
Un script est proposé par nzbdrone : /usr/local/sbin/nzbgetd
, mais disons qu’il est un peu sobre. A la place, vous pouvez aussi utiliser le suivant. Dans tous les cas, le script nzbgetd est à placer dans le répertoire /etc/init.d/
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 | root@server:~# cat /etc/init.d/nzbgetd #!/bin/bash ### BEGIN INIT INFO # Provides: nzbget # Required-Start: $local_fs $network $remote_fs # Required-Stop: $local_fs $network $remote_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: starts instance of NzbGet # Description: starts instance of NzbGet using start-stop-daemon ### END INIT INFO . /lib/lsb/init-functions #set -e NAME=nzbgetd DESC="NZBGet" DAEMON=/usr/local/bin/nzbget # Additional options, e. g. config file location: # DAEMONOPTS="-c /mnt/hdd/tools/nzbget/conf/nzbget.conf" DAEMONOPTS="-c /usr/local/etc/nzbget.conf" PIDDIR=/var/run/${NAME} PIDFILE=${PIDDIR}/${NAME}.pid RUNASUSER=nzbget RUNASGROUP=nogroup RUNAS=$RUNASUSER:$RUNASGROUP if ! [ -r ${DAEMON} ]; then echo "Can't read: ${DAEMON}" 2>&1; exit 1; fi get_pid() { pgrep -of "^${DAEMON}" } check_pid() { if [ ! -d ${PIDDIR} ]; then mkdir -p ${PIDDIR}; chown ${RUNASUSER}:root ${PIDDIR}; chmod 0750 ${PIDDIR}; fi if [ -e ${PIDFILE} ]; then if ! kill -0 $(cat ${PIDFILE}) &> /dev/null; then rm -f $PIDFILE fi fi if [ ! -e ${PIDFILE} ] && get_pid >/dev/null; then get_pid > ${PIDFILE} chown ${RUNASUSER}:root ${PIDFILE} fi } do_start() { RETVAL=1 log_daemon_msg "Starting ${DESC}" "${NAME}" if get_pid >/dev/null; then log_progress_msg "(already running?)" else start-stop-daemon -q -c $RUNAS --start --background --make-pidfile --pidfile ${PIDFILE} --exec $DAEMON -- $DAEMON_OPTS -D RETVAL=$? fi log_end_msg $RETVAL } do_stop() { RETVAL=1 log_daemon_msg "Stopping ${DESC}" "${NAME}" if ! get_pid >/dev/null; then log_progress_msg "(not running?)" else start-stop-daemon -q --stop --pidfile $PIDFILE --retry 15 RETVAL=$? fi log_end_msg $RETVAL } # Check status of PID check_pid case "$1" in start) do_start ;; stop) do_stop ;; status) status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit $? ;; restart|force-reload) do_stop; do_start; ;; *) N=/etc/init.d/$NAME echo "Usage: $0 {start|stop|restart|force-reload}" >&2 exit 1 ;; esac exit 0 |
Il ne reste plus qu’à créer un utilisateur nzbget et activer le script.
1 2 3 4 | root@server:~# useradd nzbget -r --gid nogroup -m -s /usr/sbin/nologin root@server:~# chmod a+x /etc/init.d/nzbgetd root@server:~# update-rc.d nzbgetd defaults update-rc.d: using dependency based boot sequencing |
Quelques Vérifications et Conclusions
1 2 3 4 5 6 | root@server:~# service nzbgetd start [ ok ] Starting NZBGet: nzbgetd. root@server:~# service nzbgetd status [ ok ] nzbgetd is running. root@server:~# netstat -ntpul | grep nzbget tcp 0 0 0.0.0.0:6789 0.0.0.0:* LISTEN 1079/nzbget |
En se connectant sur le port 6789 de son serveur avec son navigateur préféré, on devrait maintenant voir ça :
Voilà, c’est tout pour NzbGet. J’expliquerai dans un prochain article comment configurer et sécuriser NzbDrone et NzbGet en les rendant accessibles derrière Nginx configuré en reverse proxy ssl.