Installation de ruTorrent sur Debian Squeeze

Publié le 08 septembre 2011 par Openwebtech @openwebtechfr

Après avoir vu comment installer rTorrent depuis les sources, un front-end serait plus que le bienvenu pour gérer rTorrent autrement qu’en ligne de commande. Il en existe plusieurs, plus ou moins mis à jour ou encore supportés.

Pour ma part, j’ai choisi de me tourner vers ruTorrent, car c’est le plus connu et le plus mis à jour d’entre tous et dispose d’une communauté assez grande pour aider en cas de pépin.

Ici nous supposons que vous avez déjà un serveur Web avec PHP fonctionnel !

Dépendances

Pour le fonctionnement de la plupart des plugins, php-cli sera nécessaire, unrar-free et unzip pour la décompression automatique et mediainfo nous sert à obtenir des informations sur les fichiers audio et vidéo. Quant à subversion, ce sera pour récupérer les sources de ruTorrent et pouvoir le mettre à jour très simplement.

apt-get subversion install mediainfo php-cli unzip unrar-free

Installation

cd /var/www/
svn co http://rutorrent.googlecode.com/svn/trunk/rutorrent
chown -R www-data:www-data /var/www/rutorrent

Et voilà, c’est installé. Pour le mettre à jour :

/var/www/rutorrent/
svn up

Configuration

Editer l’adresse et/ou le port scgi sur lequel rTorrent est en écoute :

cd /var/www/rutorrent/conf
nano config.php
$scgi_port = 5001;
$scgi_host = "127.0.0.1";

Ici, rTorrent est en écoute sur localhost (127.0.0.1) et le port 5001. Il faut veiller à ce que ce couple adresse /port correspondent à votre situation.

Vérifiez bien dans le .rtorrent.rc à avoir bien mis le chemin des dossiers de downloads en chemin absolu pour éviter que le chemin ne soit interprété par ruTorrent comment étant relatif à son chemin. Donc, par exemple si on reprend la configuration que l’on avait vu dans le précédents billet :

./downloads

en

/home/rtorrent/downloads

Ajout de plugins

Vous pouvez soit récupérer les plugins un à un ou bien les récupérer tous d’un coup, ici pour les récupérer d’un coup :

cd /var/www/rutorrent
rm -R plugins
svn checkout http://rutorrent.googlecode.com/svn/trunk/plugins/
ldconfig
chown -R www-data:www-data /var/www/rutorrent

Activez les plugins que vous souhaitez avec :

nano conf/plugins.ini

Un exemple de fichier plugins.ini :

;; Plugins' permissions.
;; If flag is not found in plugin section, corresponding flag from "default" section is used.
;; If flag is not found in "default" section, it is assumed to be "yes".
;;
;; For setting individual plugin's permissions you must write something like that:
;;
;; [ratio]
;; enabled = yes
;; canChangeToolbar = yes
;; canChangeMenu = yes
;; canChangeOptions = no
;; canChangeTabs = yes
;; canChangeColumns = yes
;; canChangeStatusBar = yes
;; canChangeCategory = yes

[default]
enabled = yes
canChangeToolbar = yes
canChangeMenu = yes
canChangeOptions = yes
canChangeTabs = yes
canChangeColumns = yes
canChangeStatusBar = yes
canChangeCategory = yes

;; A utiliser par défaut

[_getdir]
enabled = yes
[show_peers_like_wtorrent]
enabled = yes
[erasedata]
enabled = yes
[diskspace]
enabled = yes
[datadir]
enabled = yes
[data]
enabled = yes
[create]
enabled = yes
[cpuload]
enabled = yes
[tracklabels]
enabled = yes
[trafic]
enabled = yes

[theme]
enabled = yes
1
enabled = yes
[seedingtime]
enabled = yes
[rss]
enabled = yes
[extsearch]
enabled = yes
[edit]
enabled = yes
[cookies]
enabled = yes
[autotools]
enabled = yes
[unpack]
enabled = yes
[ratio]
enabled = yes
[chunks]
enabled = yes
[feeds]
enabled = yes
[loginmgr]
enabled = yes
[rssurlrewrite]
enabled = yes
[niouz]
enabled = yes
[pausewebui]
enabled = yes
[lbll-suite]
enabled = yes
[mediainfo]
enabled = yes
[chat]
enabled = yes
[logoff]
enabled = yes
[filemanager]
enabled = yes

Vous pouvez choisir simplement les plugins à activer ou à désactiver par ce fichier ini.

Si vous avez choisi vos plugin un à un et que vous souhaitez utiliser ruTorrent avec une connexion fast-cgi de NGINX ou bien Lighttpd n’oubliez pas d’activer le plugin RPC :

cd /var/www/rutorrent/plugins
svn co http://rutorrent.googlecode.com/svn/trunk/plugins/rpc

Authentification

Ici, nous faisons une installation sur un sheevaplug, nous n’allons donc pas activer le SSL qui serait trop gourmand en ressource. Une authentification HTTP suffit amplement. De plus, nous ne traiterons pas le cas multi-utilisateur, juste une authentification. Cependant, avec la méthode qui suivra, on pourra se logger avec plusieurs identifiants différents mais on aura accès à la même interface. Pour éviter d’installer Apache pour le module de génération de password, on crée un petit script en perl qui fait exactement la même chose.

On se place, par exemple, dans le home de l’utilisateur pour créer le script :

cd
nano htpasswd-perl.pl
#!/usr/bin/perl

if (! scalar @ARGV ) {
        print "Usage: program passwordfile user password\n";
        print "(this program automatically creates the pw file if needed.)\n";
        exit 0;
}

@saltsource = ('a'..'z', 'A'..'Z', '0'..'9','.','/');
$randum_num = int(rand(scalar @saltsource));
$salt = $saltsource[$randum_num];
$randum_num = int(rand(scalar @saltsource));
$salt .= $saltsource[$randum_num];

$outf=$ARGV[0];
$user=$ARGV[1];
$passwd=$ARGV[2];

if ($user & $passwd) {
        $encrypted = crypt($passwd, "$salt");

        if (-f $outf) {
                open(OUT, ">>$outf") || die "htpasswd-b error: $!\n";
        } else {
                open(OUT, ">$outf") || die "htpasswd-b error: $!\n";
        }
        print OUT "$user:$encrypted\n";
        close(OUT);

        exit 0;
}

On le rend exécutable :

chmod +x htpasswd-perl.pl

Utilisation :

./htpasswd-perl.pl /destination/fichier login mdp

Ici la commande passée pour une cohérence avec la suite de l’article :

./htpasswd-perl.pl /var/rutorrent/.htpasswd login mdp

Configuration NGINX

Une configuration exemple nginx qui va bien :

server {
        listen 80;
        server_name yourdomain.com; #name server

        root "/var/www/rutorrent"; # root directory
        index index.php index.html index.htm;

        location  /  {
                auth_basic            "Restricted";
                auth_basic_user_file  /$document_root/.htpasswd;
        }

        # Below there is only what you need to have php-fastcgi
        location ~ \.php$ {
                root "/var/www/rutorrent";
                fastcgi_pass 127.0.0.1:9000; # IMPORTANT: php-fastcgi listening port.
                include /etc/nginx/fastcgi_params; # IMPORTANT: import fastcgi_params
                fastcgi_index index.php;

        }

        location ~ \.htaccess {
                deny all;
        }
}

Un petit reload de la configuration pour la prise en compte des paramètres:

service nginx reload

Et normalement ruTorrent est accessible et vous demande de vous authentifier à l’accès de la page.

Edit : Voilà le petit screenshot :

Interface ruTorrent

Sources