Configurer l'interface web de rutorrent avec Apache2

L'interface de rutorrent

rutorrent est une "interface" web ou plus simplement une page web dynamique.
Elle restitue sur le web, le client BitTorrent nommé : rtorrent (utilisable uniquement en CLI).
On parle généralement du couple : rtorrent/rutorrent, et ils sont développés indépendamment.
Je les découvert en 2011 avec la version 3, libre et performante, façonnez la à votre image !

Les pré-requis pour adopter rutorrent

Avant de vous lancer dans l'installation de cette interface, il vous faudra utiliser un serveur web !
Aussi, n'oubliez pas que rutorrent fonctionne uniquement avec le client BitTorrent : rtorrent.
Je vous conseille, d'avoir les éléments suivant installés et fonctionnels sur votre serveur Linux :

  • Le serveur web en fonctionnement : Apache2 (dans notre cas).
  • Le client BitTorrent : rtorrent configurer pour un seul utilisateur.
  • Une distribution Linux à jour et de préférence en version stable. (Ubuntu LTS par exemple)

Une dernière chose, voici les dépendances requises pour installer rutorrent.

 apt-get install subversion libapache2-mod-scgi

Le paquet "Subversion" va servir pour l'installation et  la mise à niveau de rutorrent, tandis que "libapache2-mod-scgi" va permettre d’interagir avec rtorrent.
L'installation et la configuration se déroule dans le répertoire par défaut : /var/www

Installation de rutorrent

L'installation est très simple, nous allons télécharger les dépôts sur le SVN.

svn co http://rutorrent.googlecode.com/svn/trunk/rutorrent

Une fois le dépôt téléchargé , on retrouve l’arborescence suivante dans le dossier "rutorrent" :

conf  css  favicon.ico  images  index.html  js  lang  php  plugins  share
  • Le répertoire "conf" contient l'ensemble de la configuration de rutorrent mis à part "plugins".
  • Le répertoire "css"  contient la configuration des règles CSS de rutorrent.
  • La répertoire "images" contient l'ensemble les favicons et  différentes icônes issues de rutorrent.
  • Le répertoire "js" contient le code java script qui permet de modifier le fonctionnement de rutorrent.
  • Le répertoire "lang" contient + de 20 langues différentes.
  • Le répertoire "php" contient le code en php qui influe sur l'affichage dynamique des contenus.
  • Le répertoire "plugins" est dédié au plugin de rutorrent il en existe une multitude !
  • Le répertoire "share" est utilisé généralement pour la gestion et la configuration des utilisateurs..

L'interface de rutorrent ressemble à ceci :

Installation de plugin

Rendez vous dans le répertoire "plugins" de rutorrent :

cd /var/www/rutorrent/plugins

Ensuite, il ne vous restera plus qu'a suivre ce schéma :

svn co http://rutorrent.googlecode.com/svn/trunk/plugins/PLUGIN_NAME

Les plugins de rutorrent sont disponibles sur le wiki officiel.
Je vous recommande d'utiliser les plugins, et notamment certains qui sont vraiment intéressants !
Voici une liste de plugins que je vous recommande :

  • Cookies : Permet de stocker des cookies d'un site tiers.
  • Diskspace : Affiche l'état actuel de votre partition, on parle du "home directory".
  • Cpuload : Affiche le CPU avec un temps de "x" secondes.
  • erasedata : Le menu contextuel du clic droit se voit ajouté : effacer et supprimer les données.
  • trafic : Permet de suivre l'évolution dans le temps du débit d'un fichier ajouté.
  • getdir : Il permet le téléchargement du fichier en "direct download".
  • loginmgr : Ajoute un bouton de déconnexion dans le menu principal.
  • extsearch : Une panoplie de nouveaux trackers sont disponibles dans la recherche rutorrent.
  • goip : Permet de faire un "whois" sur un client précis (uploader/downloader).
  • noty : Il permet d'afficher une petite popup sur votre interface lors de l'ajout d'un torrent.

Il existe une multitude d'autres plugins disponibles sur le web, le mieux reste encore de les développer soi-même.

Configurer  votre Vhost

Les vhost sont importants, ne les négligez pas. En voici deux versions (http et https):

  • Un vhost : "http" :
ServerName mon_domaine.tld
   ServerAdmin webmaster@localhost
   DocumentRoot /var/www/

   Redirect permanent / https://mon_domaine.tld

   Options Indexes FollowSymLinks MultiViews
   AllowOverride None
   Order allow,deny
   allow from all
        
   ErrorLog /var/log/apache2/error.log
   LogLevel warn
   CustomLog /var/log/apache2/access.log combined
  • Un vhost sécurisé en "https" :
ServerName mon_domaine.tld
  ServerAdmin webmaster@localhost
  DocumentRoot /var/www/rutorrent
        
  SSLEngine on
  SSLCertificateFile /etc/apache2/ssl/ssl.crt
  SSLCertificateKeyFile /etc/apache2/ssl/ssl.key
        
  Options Indexes FollowSymLinks MultiViews
   AllowOverride None
   Order allow,deny
   allow from all
        

  ErrorLog /var/log/apache2/error.log
   LogLevel warn
   CustomLog /var/log/apache2/access.log combined
        
   AuthType Digest
   AuthName "votre_texte"

   AuthDigestProvider file
   AuthUserFile /etc/apache2/passwords
   Require valid-user
   SetEnv R_ENV "/var/www/" 

N'oubliez pas de générer un certificat auto-signer ou bien d'utiliser un certificat gratuit startcom.

Sécurité de base sur rutorrent

Votre serveur peut être exposé aux yeux de tous sur le web, l'ajout d'un "htaccess" est recommandé.
Le cas le plus pratique pour cela est l'option "htdigest" d'apache2 :

htdigest /etc/apache2/passwords votre_texte ffonaissak

Le résultat de la commande est enregistré dans le fichier "passwords".
Il vous faudra modifier la valeur suivante dans votre vhost (https):

AuthName "votre_texte"

A l'ouverture de rutorrent, il vous est alors possible de mettre votre couple : login/password.

Configurer plusieurs utilisateurs

Il est possible d'avoir plusieurs comptes sur rutorrent et c'est franchement génial !
La configuration SCGI d'apache2 et la structure de rutorrent permettent les multi-utilisateurs.
Nous allons configurer un second utilisateur en plus de celui déjà existant.

  1. Ajoutez le second utilisateur avec la commande "htdigest" vu précédemment.
  2. Ajoutez vos différents SCGI afin que rtorrent/rutorrent communique.
    nano /etc/apache2/apache2.conf

    Les montages des SCGI seront renseignés à la fin du fichier, comme ceci :

    SCGIMount /RPC2 127.0.0.1:5000
    SCGIMount /RPC3 127.0.0.1:5001
    servername localhost
  3. Configurez l'utilisateur numéro 2  dans /var/www/rutorrent/conf/users/
    mkdir user2
    
  4. Copier le fichier de configuration "php" déjà présent dans /var/www/rutorrent/conf/
    cp config.php users/user2
    
      Effectuez les changements de propriétaire et de droit comme ci-dessous :
    chown -R www-data:www-data /var/www/rutorrent/conf/users/
    chmod -R 777 /var/www/rutorrent/conf/users/
    
  5. Modifiez le fichier de configuration  du second utilisateur et ses variables :
    nano user/user1/config.php
       $scgi_port = 5001;
       $scgi_host = "127.0.0.1";
       $XMLRPCMountPoint = "/RPC3";
    
    (ce sont les montages "SCGI" et "RPCmount" présentés dans apache2 précédemment)

Retenez bien que chaque nouvel utilisateur doit avoir un répertoire personnel avec le "fichier.php"
N'oubliez pas que rtorrent doit être configuré, je ne détaille pas la configuration du client BitTorrent.

Mise à jour de rutorrent

Le système SVN permet de  mettre à jour très simplement votre interface rutorrent.
Il est recommandé d’éteindre le serveur web : (/etc/init.d/apache2 stop) pour éviter un crash !
Ensuite il vous suffit de vous rendre à la racine de votre répertoire rutorrent et de lancer :

svn up

La mise à niveau est en cours, il faut attendre le message suivant :

Updated to revision 2471.

Une fois terminé, relancez votre serveur web :

/etc/init.d/apache2 start

La découverte de rutorrent est terminée, je vous invite à vous rendre sur le site officiel.
Si vous avez des problèmes de paramétrage sur rutorrent n'hésitez pas à laisser votre commentaire.

Commentaires