Je pense que le mieux à faire est 1 client rtorrent + 3/4 user rutorrent. Voici la marche à suivre :
On créé l'utilisateur de rTorrent (rtuser à laisser)
useradd rtuser
passwd rtuser
On créé les répertoires de base :
mkdir /home/rtuser
mkdir /home/rtuser/watch
mkdir /home/rtuser/torrents
mkdir /home/rtuser/.session
On créé le fichier de configuration de rTorrent :
nano /home/rtuser/.rtorrent.rc
Copier/Coller :
schedule = chmod,0,0,"execute=chmod,777,/home/rtuser/.session/rtu.socket"
execute = {sh,-c,rm -f /home/rtuser/.session/rtu.socket}
scgi_local = /home/rtuser/.session/rtu.socket
execute = {sh,-c,chmod 0666 /home/rtuser/.session/rtu.socket}
encoding_list = UTF-8
port_range = 45000-65000
port_random = no
check_hash = no
directory = /home/rtuser/torrents
session = /home/rtuser/.session
encryption = allow_incoming, try_outgoing, enable_retry
schedule = watch_directory,1,1,"load_start=/home/rtuser/watch/*.torrent"
schedule = untied_directory,5,5,"stop_untied=/home/rtuser/watch/*.torrent"
use_udp_trackers = yes
dht = off
peer_exchange = no
execute = {sh,-c,/usr/bin/php /var/www/rutorrent/php/initplugins.php rtuser &}
Rendez-vous sur le site de l'auteur pour personnaliser votre .rtorrent.rc
On rétablie les permissions :
chown -R rtuser:rtuser /home/rtuser
On configure le serveur web
nano /etc/lighttpd/lighttpd.conf
Ajouter à la fin
server.modules += ( "mod_scgi" )
scgi.server = (
"/RTU0" =>
( "127.0.0.1" =>
(
"socket" => "/home/rtuser/.session/rtu.socket",
"check-local" => "disable",
"disable-time" => 0, # don't disable scgi if connection fails
)
)
)
Création d'un script de démarrage de rTorrent :
nano /etc/init.d/rtu.rtord
Copier/Coller :
#!/bin/bash
### BEGIN INIT INFO
# Provides: rtorrent
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
# Description: Start-Stop rtorrent user session
### END INIT INFO
user="rtuser"
# the full path to the filename where you store your rtorrent configuration
config="/home/rtuser/.rtorrent.rc"
# set of options to run with
options=""
# default directory for screen, needs to be an absolute path
base="/home/rtuser"
# name of screen session
srnname="rtorrent"
# file to log to (makes for easier debugging if something goes wrong)
logfile="/var/log/rtorrentInit.log"
#######################
###END CONFIGURATION###
#######################
PATH=/usr/bin:/usr/local/bin:/usr/local/sbin:/sbin:/bin:/usr/sbin
DESC="rtorrent"
NAME=rtorrent
DAEMON=$NAME
SCRIPTNAME=/etc/init.d/$NAME
checkcnfg() {
exists=0
for i in `echo "$PATH" | tr ':' '\n'` ; do
if [ -f $i/$NAME ] ; then
exists=1
break
fi
done
if [ $exists -eq 0 ] ; then
echo "cannot find rtorrent binary in PATH $PATH" | tee -a "$logfile" >&2
exit 3
fi
if ! [ -r "${config}" ] ; then
echo "cannot find readable config ${config}. check that it is there and permissions are appropriate" | tee -a "$logfile" >&2
exit 3
fi
session=`getsession "$config"`
if ! [ -d "${session}" ] ; then
echo "cannot find readable session directory ${session} from config ${config}. check permissions" | tee -a "$logfile" >&2
exit 3
fi
}
d_start() {
[ -d "${base}" ] && cd "${base}"
stty stop undef && stty start undef
su -c "screen -ls | grep -sq "\.${srnname}[[:space:]]" " ${user} || su -c "screen -dm -S ${srnname} 2>&1 1>/dev/null" ${user} | tee -a "$logfile" >&2
su -c "screen -S "${srnname}" -X screen rtorrent ${options} 2>&1 1>/dev/null" ${user} | tee -a "$logfile" >&2
}
d_stop() {
session=`getsession "$config"`
if ! [ -s ${session}/rtorrent.lock ] ; then
return
fi
pid=`cat ${session}/rtorrent.lock | awk -F: '{print($2)}' | sed "s/[^0-9]//g"`
if ps -A | grep -sq ${pid}.*rtorrent ; then # make sure the pid doesn't belong to another process
kill -s INT ${pid}
fi
}
getsession() {
session=`cat "$1" | grep "^[[:space:]]*session[[:space:]]*=" | sed "s/^[[:space:]]*session[[:space:]]*=[[:space:]]*//" `
echo $session
}
checkcnfg
case "$1" in
start)
echo -n "Starting $DESC: $NAME"
d_start
echo "."
;;
stop)
echo -n "Stopping $DESC: $NAME"
d_stop
echo "."
;;
restart|force-reload)
echo -n "Restarting $DESC: $NAME"
d_stop
sleep 1
d_start
echo "."
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
exit 1
;;
esac
exit 0
On rend le script exécutable :
chmod +x /etc/init.d/rtu.rtord
On ajoute une tache cron :
crontab -e
On colle ça :
*/1 * * * * if ! ( ps -U rtuser | grep rtorrent > /dev/null ); then /etc/init.d/rtu.rtord start; fi
Manipulation à répéter pour chaque utilisateur (<user> = nom d'utilisateur sans majuscule !) :
On spécifie le mot de passe pour le serveur web :
htdigest -c /etc/lighttpd/.auth 'ruTorrent Seedbox' <user>
On créé le répertoire de configuration de rutorrent :
mkdir /var/www/rutorrent/conf/users/<user>
On édite le fichier de configuration:
nano /var/www/rutorrent/conf/users/<user>/config.php
Et on colle les valeurs :
<?php
$topDirectory = '/home/rtuser';
$scgi_port = 0;
$scgi_host = "unix:///home/rtuser/.session/rtu.socket";
$XMLRPCMountPoint = "/RTU0";
?>
Redémarrer le serveur web
/etc/init.d/lighttpd restart
Vous devriez pouvoir maintenant vous connecter à rutorrent.
Conclusion
Les accès =
ruTorrent Webui
URL : XXX.XXX.XXX.XXX/rutorrent
FTP
IP : XXX.XXX.XXX.XXX
Port : 21
SFTP
IP : XXX.XXX.XXX.XXX
Port : 22
Détails des dossiers :
/watch = y mettre un .torrent pour l'ajouter à rutorrent sans se connecter au site.
/torrents = dossier des torrents terminés.
/.session = dossier enregistrant les sessions rtorrent.
Possibilité de créer une arborescence de répertoire pour ranger ses torrents. Exemple :
Dans /torrents
/torrents/user1
/torrents/user1/HD
/torrents/user1/SD
/torrents/user1/DVDR
/torrents/user2
/torrents/user3
/torrents/user4
Ainsi, un torrent ajouté dans /torrents/user1/SD, aura une étiquette "user1/SD" et ainsi de suite.
Pour redémarrer rTorrent :
/etc/init.d/rtu.rtord restart
Bon courage !
++ Nico