Installation de Rutorrent multi-utilisateur sous Débian 8.

Rtorrent+Rutorrent en configuration multi-utilisateurs.

Choses à savoir:

  • Rotrrent = moteur de torrent
  • Rutorrent = interface web pour gerer les torrents
  • Apache2 = le serveur web

En gros nous allons intaller le moteur rtorrent, l'interface web rutorrent et configurer apache2 avec le mod HtDigest pour faire du multi utilisateur.

Prerequis:

apt update
apt upgrade
apt install build-essential git zip apache2 php7.0 libapache2-mod-php7.0 libapache2-mod-scgi screen

Installation de rtorrent:

apt-get install rtorrent

Ajout de notre premier utilisateur:

adduser nom_utilisateur

Création des répertoires nescessaire à rtorrent:

mkdir /home/nom_utilisateur/data

mkdir /home/nom_utilisateur/.session

chown -R nom_utilisateur:nom_utilisateur /home/nom_utilisateur

data = ou seront stocké les fichiers téléchargé

.session = ou seront stocké les .torrents

Création du fichier .rtorrent.rc:

cd /home/nom_utilisateur

nano .rtorrent.rc

Inscrivez ceci:

directory = /home/nom_utilisateur/data/

session = /home/nom_utilisateur/.session/

scgi_port = 127.0.0.1:5300

Attribuez les bon droit au fichier:

chown nom_utilisateur:nom_utilisateur .rtorrent.rc

Creation du script de demarrage de rtorrent par l'utilisateur:

nano /etc/init.d/rtorrentd_nom_utilisateur

inscrivez ceci:

#! /bin/sh

### BEGIN INIT INFO
# Provides: rtorrentd-nom_utilisateur
# Required-Start: $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# Should-Start: $network
# Should-Stop: $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: rtorrent
# Description: start rtorrent
### END INIT INFO

USER="nom_utilisateur"

case "$1" in
  start)
echo "Starting rtorrent..."
su $USER -c 'screen -d -m -S rtorrentd-nom_utilisateur rtorrent'
;;
  stop)
echo "Stopping rtorrent..."
#killall -s 2 rtorrent
su $USER -c 'screen -X -S rtorrent quit'
;;

  restart|force-reload)
        $0 stop
        $0 start
;;
  *)
echo "Usage: $0 {start|stop|restart|force-reload}"
exit 1
;;
esac

ATTENTION --> il faut remplacer "nom_utilisateur" par le bon (3 fois)(Ne pas oublier la ligne "Provides").

On donne les droits d'execution au script:

chmod +x /etc/init.d/rtorrentd_nom_utilisateur

Pour que le service se lance au démarrage de la machine:

cd /etc/init.d/

update-rc.d rtorrentd-nom_utilisateur defaults

On redemarre rtorrent:

/etc/init.d/rtorrentd-nom_utilisateur start

C'est tout pour rtorrent.

Installation de RuTorrent:

cd /var/www/html/

git clone https://github.com/Novik/ruTorrent.git rutorrent

Supprimer le .htaccess (nous on va passer par htdigest)

cd rutorrent

rm .htaccess

Ajout de notre 1er utilisateur dans Rutorrent.

cd /var/www/html/rutorrent/conf/users

mkdir nom_utilisateur

Creation du fichier de configuration:

cd nom_utilisateur

nano config.php

Inscrivez ceci:

<?php
    // configuration parameters

    // for snoopy client
    @define('HTTP_USER_AGENT', 'Mozilla/5.0 (Windows NT 6.0; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0', true);
    @define('HTTP_TIME_OUT', 30, true);    // in seconds
    @define('HTTP_USE_GZIP', true, true);
    $httpIP = null;                // IP string. Or null for any.

    @define('RPC_TIME_OUT', 5, true);    // in seconds

    @define('LOG_RPC_CALLS', false, true);
    @define('LOG_RPC_FAULTS', true, true);

    // for php   
    @define('PHP_USE_GZIP', false, true);
    @define('PHP_GZIP_LEVEL', 2, true);

    $schedule_rand = 10;            // rand for schedulers start, +0..X seconds

    $do_diagnostic = true;
    $log_file = '/tmp/errors.log';        // path to log file (comment or leave blank to disable logging)

    $saveUploadedTorrents = true;        // Save uploaded torrents to profile/torrents directory or not
    $overwriteUploadedTorrents = false;     // Overwrite existing uploaded torrents in profile/torrents directory or make unique name

    $topDirectory = '/';            // Upper available directory. Absolute path with trail slash.
    $forbidUserSettings = false;

    $scgi_port = 5300;              //pareil que dans .rtorrent.rc
    $scgi_host = "127.0.0.1";

    // For web->rtorrent link through unix domain socket
    // (scgi_local in rtorrent conf file), change variables
    // above to something like this:
    //
    // $scgi_port = 0;
    // $scgi_host = "unix:///tmp/rpc.socket";

    $XMLRPCMountPoint = "/RPC2";        // DO NOT DELETE THIS LINE!!! DO NOT COMMENT THIS LINE!!!

    $pathToExternals = array(
        "php"     => '',            // Something like /usr/bin/php. If empty, will be found in PATH.
        "curl"    => '',            // Something like /usr/bin/curl. If empty, will be found in PATH.
        "gzip"    => '',            // Something like /usr/bin/gzip. If empty, will be found in PATH.
        "id"    => '',            // Something like /usr/bin/id. If empty, will be found in PATH.
        "stat"    => '',            // Something like /usr/bin/stat. If empty, will be found in PATH.
    );

    $localhosts = array(             // list of local interfaces
        "127.0.0.1",
        "localhost",
    );

    $profilePath = '../share';        // Path to user profiles
    $profileMask = 0777;            // Mask for files and directory creation in user profiles.
                        // Both Webserver and rtorrent users must have read-write access to it.
                        // For example, if Webserver and rtorrent users are in the same group then the value may be 0770.

    $tempDirectory = null;            // Temp directory. Absolute path with trail slash. If null, then autodetect will be used.

On met les droits pour le serveur web:

chown -R www-data:www-data /var/www/html/rutorrent


Configuration d'Apache

D'abord il faut ajouter dans le fichier de configuration d'Apache le port SCGI.

nano /etc/apache2/apache2.conf

Inserer à la fin du fichier:

SCGIMount /RPC2 127.0.0.1:5300

RPCx avec autant de x que d'utilisateurs, idem pour 500x.

Example pour un autre utilisateur ajoutez SCGIMount /RPC3 127.0.0.1:5301

Activer le module mod_auth_digest :

a2enmod auth_digest.load

Creation du Vhost:

nano /etc/apache2/site-available/rutorrent.conf

Inscrivez ceci:

NameVirtualHost *:443
    <VirtualHost *:443>
    ServerAdmin contact@votre.ndd
    ServerName rutorrent.votre.ndd
    ServerAlias www.rutorrent.votre.ndd
    DocumentRoot /var/www/html/rutorrent/
    <Directory />
    Options FollowSymLinks
    AllowOverride All
    </Directory>
    <Directory /var/www/html/rutorrent/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
        AuthType Digest
                AuthName "Restricted"
                AuthDigestProvider file
                AuthUserFile /etc/apache2/passwords
                Require valid-user
                SetEnv R_ENV "/var/www/html/rutorrent"

    Options -Indexes
    </Directory>
    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
    AllowOverride All
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/access.log combined

# Activation du mode SSL
SSLEngine On
SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
# On indique ou est le certificat
SSLCertificateFile /etc/ssl/certs/moncert.crt
SSLCertificateKeyFile /etc/ssl/private/moncert.key


    </VirtualHost>

 

Pour le certificat SSL:

Activation du module

a2enmod ssl

Création d'un répertoire pour les clés:

cd /etc/apache2/ && mkdir moncert && cd moncert

Génération de la clé sur 2048 bits:

openssl genrsa -out moncert.key 2048

Création des « .key » et « .csr » :

openssl req -new -key moncert.key -out moncert.csr

On rempliera ensuite les données du certificat correctement, a CommonName mettre votre ndd. On crée ensuite le fichier de certificat :

openssl x509 -req -days 365 -in moncert.csr -signkey moncert.key -out moncert.crt

On copiera ensuite nos certificats là on tous les certificats sont stockés :

cp moncert.crt /etc/ssl/certs
cp moncert.key /etc/ssl/private

Activer le vhost:

a2ensite rutorrent.conf

Relancer apache

/etc/init.d/apache2 restart

Creation des utilisateurs pour le mod htdigest

Il faut comprendre que ce Vhost va chercher une authentification dans le fichier /etc/apache2/passwords pour afficher votre page, nous allons voir maintenant comment creer ce fichier.

Le but est que selon l'identifiant, le rutorrent associé se lance.

création du fichier avec le 1er utilisateur:

htdigest -c /etc/apache2/passwords "Restricted" nom_utilisateur

L'option "-c" creera le fichier donc pour les autres utilisateurs il ne faut pas la mettre.

Activer le mod SCGI d'apache

a2enmod scgi

Redemarrer apache:

/etc/init.d/apache2 restart

Ajout d'un 2eme utilisateur:

C'est trés simple.

  • Ajouter une authentification dans le fichier /etc/apache2/password avec la commande:
htdigest /etc/apache2/passwords "Restricted" nom_utilisateur
  • Ajouter un utilisateur system et creer les répertoires comme pour le premier utilisateur.
adduser nom_utilisateur2

mkdir /home/nom-utilisateur2/data

mkdir /home/nom-utilisateur2/.session

cp /home/nom_utilisateur/.rtorrent.rc /home/nom_utilisateur2

cp /etc/init.d/rtorrentd_nom_utiisateur /etc/init.d/rtorrentd_nom_utilisateur2

chmod +x /etc/init.d/rtorrentd_nom_utilisateur2

chown -R nom_utilisateur2:nom_utilisateur2 /home/nom_utilisateur2
  • modifier le fichier /etc/init.d/rtorrent_nom_utilisateur2 avec les bonnes informations (PROVIDES, USER et le service, 3 fois donc)
  • chmod +x /etc/init.d/rtorrentd-nom_utilisateur2
  • update.rc rtorrentd-nom_utilisateur2 defaults
  • N'oubliez pas de creer un deuxieme dossier utilisateur dans /var/www/html/rutorrent/conf/users et d'y ajouter le meme fichier que le premier en modifiant les bonne informations.
  • N'oubliez pas de rajouter le port de montage scgi dans /etc/apache2/apache2.conf et recharger apache.

Pour lancer le rtorrent du 2eme utilisateur:

/etc/init.d/rtorrent_utilisateur2 start

Vous pouvez visualiser facilement si les processus des utilisateurs tourne avec htop (apt-get install htop)

lancer htop avec la commande htop puis "F5" et naviguez.

7 commentaires

  1. image Tarti

    Bonjour, ça ne fonctionne pas, ça ne demande pas d'authentification sur rutorrent et on a cet erreur : (Lien incorrect avec rTorrent. Vérifier qu'il est bien en cours d'exécution. Vérifier la configuration de $scgi_port et de $scgi_host dans config.php et scgi_port dans le fichier de configuration de rTorrent.). J'ai testé le tutoriel 3 fois donc 1 fois en adaptant la config à mon serveur, les autres c'était des vps sans rien dessus de base.

    Il y a aussi un problème avec les noms de fichiers "rtorrentd_nom_utilisateur", parfois l'underscore est là, d'autres fois c'est le tiret entre rtorrentd et nom_utilisateur.

  2. Bonjour,

    1 - Vérifier avec htop le screen est bien lancé
    2 - Si pas d'authentification, c'est qu'il doit y avoir un problème avec votre Vhost
    3 - Il y à aussi la méthode .htaccess qui est peut être plus simple (j'y suis repassé sur mon serveur) je mettrais à jour ce tuto très prochainement.
    4 - Pour le tiret ou le _, je ne comprend pas, en théorie il faut remplacer 'nom_utilisateur' par un nom d'utilisateur à vous !
    5 - Je vous confirme que ce tuto fonctionne, il à été testé par plusieurs amis avec succès.

    Bonne journée.

  3. image mlopss

    mmmmmm

  4. image mlopss

    Très bon tuto bien expliqué, très claire et rapide
    j'ai fait une installation avec 2 utilisateurs
    et ça marche parfaitement
    merçiiiii
    Bonne Continuation

  5. image jcpamart

    Bonjour,
    Y a t il des modifs à prévoir pour un debian 10.2 ?

  6. image jcpamart

    Bon ben pas la peine d'aller plus loin, c'est mort.....

  7. Bonjour,

    je ne suis pas encore passé sous Debian 10 mais je ne vois pas pourquoi ce tuto ne pourrait pas s'appliquer.

    Rutorrent et rtorrent sont dispo dans les paquets, après ce n'est que de l apache derrière donc il y a peut être des petits ajustements mais le principe reste valable.

Écrire un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec une *

Quelle est le deuxième caractère du mot 6jv7z5ts ? :