Date de dernière mise à jour : le 7 février 2016 à 17 h 28 min

Rtorrent + Rutorrent sur Debian 8

Nous allons voir comment installer rtorrent sur notre serveur, ainsi que rutorrent, une joli interface web. Rtorrent ne doit évidemment pas servir à télécharger des films, le piratage c’est mal.

Installation de Rutorrent

Récupérez la dernière version de Rutorrent avec la commande
git clone https://github.com/Novik/ruTorrent

On va maintenant la mettre dans le répertoire web (/var/www sur mon serveur) avec la commande
sudo mv ruTorrent/ /var/www/

On va modifier le propriétaire du dossier et mettre l’utilisateur Apache propriétaire. Tapez la commande
sudo chown -R www-data:www-data /var/www/ruTorrent/

Par défaut la gestion du mot de passe pour l’accès à l’interface web est géré en basic avec un couple de fichier htaccess/htpasswd. Si vous voulez mettre un système de mot de passe un peu plus sûr, je vous invite à lire cet article

Installation de Rtorrent

Pour Rtorrent, c’est simple, il suffit d’installer la version présente dans les dépôts Debian avec la commande
sudo aptitude install rtorrent.

Si vous êtes sous une autre distribution que Debian, vérifiez bien que le package rtorrent présent dans vos dépôt est compilé avec xmlrpc-c.
Si ce n’est pas le cas il faudra que vous le compiliez vous-même vu que rutorrent en a besoin. Pour rutorrent, on va devoir l’installer à la main vu qu’il n’est pas présent dans les dépôts.

On va commencer par installer libapache2-mod-scgi avec la commande
sudo aptitude install libapache2-mod-scgi .

On va avoir besoin de configurer rtorrent.

Configuration de Rtorrent

Créez un fichier .rtorrent.rc et collez cette config :

# This is an example resource file for rTorrent. Copy to
# ~/.rtorrent.rc and enable/modify the options as needed. Remember to
# uncomment the options you wish to enable.

# Maximum and minimum number of peers to connect to per torrent.
#min_peers = 40
#max_peers = 100

# Same as above but for seeding completed torrents (-1 = same as downloading)
#min_peers_seed = 10
#max_peers_seed = 50

# Maximum number of simultanious uploads per torrent.
#max_uploads = 15

# Global upload and download rate in KiB. "0" for unlimited.
#download_rate = 0
#upload_rate = 0

# Default directory to save the downloaded torrents.
directory = /home/fate/xdcc

# Default session directory. Make sure you don't run multiple instance
# of rtorrent using the same session directory. Perhaps using a
# relative path?
session = /home/fate/.session

# Watch a directory for new torrents, and stop those that have been
# deleted.
#schedule = watch_directory,5,5,load_start=./watch/*.torrent
#schedule = untied_directory,5,5,stop_untied=

# Close torrents when diskspace is low.
#schedule = low_diskspace,5,60,close_low_diskspace=100M

# Stop torrents when reaching upload ratio in percent,
# when also reaching total upload in bytes, or when
# reaching final upload ratio in percent.
# example: stop at ratio 2.0 with at least 200 MB uploaded, or else ratio 20.0
#schedule = ratio,60,60,"stop_on_ratio=200,200M,2000"

# The ip address reported to the tracker.
#ip = 127.0.0.1
#ip = rakshasa.no

# The ip address the listening socket and outgoing connections is
# bound to.
#bind = 127.0.0.1
#bind = rakshasa.no

# Port range to use for listening.
port_range = 6890-6890

# Start opening ports at a random position within the port range.
port_random = no

# Check hash for finished torrents. Might be usefull until the bug is
# fixed that causes lack of diskspace not to be properly reported.
#check_hash = no

# Set whetever the client should try to connect to UDP trackers.
#use_udp_trackers = yes

# Alternative calls to bind and ip that should handle dynamic ip's.
#schedule = ip_tick,0,1800,ip=rakshasa
#schedule = bind_tick,0,1800,bind=rakshasa

# Encryption options, set to none (default) or any combination of the following:
# allow_incoming, try_outgoing, require, require_RC4, enable_retry, prefer_plaintext
#
# The example value allows incoming encrypted connections, starts unencrypted
# outgoing connections but retries with encryption if they fail, preferring
# plaintext to RC4 encryption after the encrypted handshake
#
# encryption = allow_incoming,enable_retry,prefer_plaintext

# Enable DHT support for trackerless torrents or when all trackers are down.
# May be set to "disable" (completely disable DHT), "off" (do not start DHT),
# "auto" (start and stop DHT as needed), or "on" (start DHT immediately).
# The default is "off". For DHT to work, a session directory must be defined.
# 
# dht = auto

# UDP port to use for DHT. 
# 
 dht_port = 6881

# Enable peer exchange (for torrents not marked private)
#
# peer_exchange = yes

#
# Do not modify the following parameters unless you know what you're doing.
#

# Hash read-ahead controls how many MB to request the kernel to read
# ahead. If the value is too low the disk may not be fully utilized,
# while if too high the kernel might not be able to keep the read
# pages in memory thus end up trashing.
#hash_read_ahead = 10

# Interval between attempts to check the hash, in milliseconds.
#hash_interval = 100

# Number of attempts to check the hash while using the mincore status,
# before forcing. Overworked systems might need lower values to get a
# decent hash checking rate.
#hash_max_tries = 10
scgi_port = 127.0.0.1:5000

Notez la ligne scgi_port = 127.0.0.1:5000 à la fin du fichier. Si jamais vous voulez lancer plusieurs rtorrent, il vous suffira de modifier le port.

En parlant de port, n’oubliez pas d’ouvrir les différents ports sur votre parefeu.

Ouvrez maintenant le fichier /etc/apache2/apache2.conf et ajoutez la ligne SCGIMount /RPC2 127.0.0.1:5000.

Si vous avez deux session de rtorrent il vous faudra mettre un point de montage différent pour la seconde session, comme par exemple SCGIMount /RPC3 127.0.0.1:5001.

Configuration de Rutorrent

Si vous avez plusieurs utilisateurs de Rtorrent, il va falloir configurer Rutorrent pour lier chaque utilisateur à la bonne session de Rtorrent.

Allez dans le répertoire de Rutorrent puis dans le sous-répertoire conf. Un répertoire users est présent.

Créez un dossier par utilisateur dans le répertoire users avec la commande
sudo mkdir users/nomutilisateur.

Le nom d’utilisateur doit être le login de connexion à l’interface web de rutorrent.

Dans le dossier conf se trouve également un fichier config.php. On va le copier dans les répertoires utilisateurs précédemment créés.

Une fois le fichier copié dans chaque répertoire, lancez ces deux commandes :

sudo chown -R www-data:www-data users
sudo chmod -R 777 users

La première commande sert à changer le propriétaire du dossier pour que le propriétaire des fichiers copiés soit l’utilisateur Apache, et la seconde modifie les accès du dossier users et de son contenu.

Dans chaque fichier config.php, cherchez les lignes

$scgi_port = 5000;
$scgi_host = "127.0.0.1";
$XMLRPCMountPoint = "/RPC2";

Adaptez les pour chaque utilisateur en changeant le numéro du port et le point de montage.

Vous pouvez lancer Rtorrent avec la commande
sudo /etc/init.d/rtorrent-daemon start

L’interface web Rutorrent est accessible à l’adresse http://adresseipdevotreserveur/ruTorrent

Sécurisation du point de montage /RPC2

Une dernière chose à faire, protéger l’accès à rtorrent. N’importe qui connaissant l’adresse ip du pc sur lequel tourne rtorrent et le point de montage (/RPC2) peut contrôler rtorrent. Même si le risque est minime, il vaut mieux blinder l’accès.
Ouvrez le fichier 000-default-ssl.conf avec la commande sudo nano /etc/apache2/sites-enabled/000-default-ssl.conf (si vous n’avez pas le ssl d’activé, il faut modifier le fichier 000-default.conf).
Après la dernière balise </Directory>, rajoutez les lignes suivantes :

  <Location /RPC2>
         AuthType Digest
         AuthName "rtorrent"
         AuthDigestProvider file
         AuthUserFile /etc/apache2/passwords
         Require valid-user
        </Location>

Ces lignes vont sécuriser le point de montage /RPC2 avec un utilisateur et mot de passe stockés dans le fichier Digest /etc/apache2/passwords.

La commande pour créer le fichier Digest est la suivante (à taper en root) :
htdigest -c /etc/apache2/passwords Realm Username

  • Realm sera affiché à l’utilisateur lors de la connexion pour qu’il sache quel nom et mot de passe il peut utiliser, et il doit correspondre au AuthName dans le fichier de configuration Apache. Dans l’exemple que je vous ai donné, le AuthName est « rtorrent ». Si vous ne souhaitez pas le modifier, il faudra donc que votre Realm soit également « rtorrent » quand vous créerez votre fichier Digest.
  • Username correspond à l’utilisateur qui aura les droits pour accéder à votre interface.

/!\Si dans le futur vous avez besoin de créer d’autres utilisateurs ou que vous avez déjà un fichier passwords existant, il suffira de taper la même commande mais sans le « -c ».
Ca rajoutera le nouvel utilisateur à la suite de l’ancien dans le fichier.

Si vous laissez le « -c », la commande va écrire le nouvel utilisateur à la place de l’ancien.
Après avoir tapé la commande, un mot de passe vous sera demandé. Il vous reste plus qu’à redémarrer Apache.

Voila, l’accès au point de montage /RPC2 est maintenant sécurisé. Si vous avez plusieurs sessions de rtorrent sur d’autres points de montage (/RPC3, /RPC4, etc) il vous faudra également les sécuriser de la même manière.

Lancement automatiquement de Rtorrent

Si vous voulez pouvoir lancer rtorrent en arrière plan, voici un petit script qui fait l’affaire. Vous devez par contre avoir Screen d’installé pour qu’il fonctionne.

#!/bin/sh -e
# Start/Stop rtorrent sous forme de daemon.
user=fate
NAME=rtorrent-daemon
SCRIPTNAME=/etc/init.d/$NAME
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

case $1 in
        start)
                echo "Starting rtorrent... "
                su -l ${user} -c "screen -fn -dmS rtd nice -19 rtorrent"
                echo "Terminated"
        ;;
        stop)
                if [ "$(ps aux | grep -e '.*rtorrent$' -c)" != 0  ]; then
                {
                        echo "Shutting down rtorrent... "
                        killall -r "^.*rtorrent$"
                        echo "Terminated"
                }
                else
                {
                        echo "rtorrent not yet started !"
                        echo "Terminated"
                }
                fi
        ;;
        restart)
                if [ "$(ps aux | grep -e '.*rtorrent$' -c)" != 0  ]; then
                {
                        echo "Shutting down rtorrent... "
                        killall -r "^.*rtorrent$"
                        echo "Starting rtorrent... "
                        su -l ${user} -c "screen -fn -dmS rtd nice -19 rtorrent"
                        echo "Terminated"
                }
                else
                {
                        echo "rtorrent not yet started !"
                        echo "Starting rtorrent... "
                        su -l ${user} -c "screen -fn -dmS rtd nice -19 rtorrent"
                        echo "Terminated"
                }
                fi
        ;;
        *)
                echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2
                exit 2
        ;;
esac

Il faudra que vous changiez le nom d’utilisateur dans le script.

Il faut copier le script dans le répertoire /etc/init.d puis le rendre exécutable avec la commande
sudo chmod +x /etc/init.d/rtorrent-daemon

On va ensuite configurer le système pour qu’il exécute ce script (et donc lance Rtorrtent) au démarrage avec la commande
sudo update-rc.d rtorrent-daemon defaults 99

Si vous avez plusieurs sessions de Rtorrent, il faudra créer autant de script que vous avez de session et changer l’utilisateur dans le script.

Ce script provient de ubuntu-fr

Ca sera tout pour aujourd’hui 🙂

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.