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.
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.
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.
mmmmmm
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
Bonjour,
Y a t il des modifs à prévoir pour un debian 10.2 ?
Bon ben pas la peine d'aller plus loin, c'est mort.....
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.