{{tag>Xenial réseau p2p bittorrent}}
----
====== rTorrent ======
**rTorrent** est un client BitTorrent très léger fonctionnant en ligne de commande. Il n'utilise que très peu de ressources (pratique si vous disposez d'une vieille machine).
{{https://i.imgur.com/6V6pB.png?500}}
La seule contrainte de cet outil est qu'on ne peut pas fermer le terminal dans lequel il est lancé sans le stopper. Pour contourner ce problème, on utilisera le programme [[:Screen]], tmux ou dtach.
Il est également possible d'utiliser [[:alltray]] afin d'envoyer l'icône du terminal dans la zone de notification.
===== Pré-requis =====
* Disposer des [[:sudo|droits d'administration]].
* Disposer d'une connexion à Internet configurée et activée.
===== Installation =====
[[tutoriel:comment_installer_un_paquet|Installez les paquets]] **[[apt>rtorrent]]** et **[[apt>screen]]** (ou **[[apt>dtach]]**).
===== Configuration =====
Tout d'abord, commencez par créer le fichier de configuration.
Copier le fichier **/usr/share/doc/rtorrent/examples/rtorrent.rc** dans votre **dossier personnel**.
cp /usr/share/doc/rtorrent/examples/rtorrent.rc ~/.rtorrent.rc
Puis [[:tutoriel:comment_editer_un_fichier|Éditez le fichier]].
Voici une configuration basique de ce fichier. Pour plus de détails, consultez la [[:man|page de manuel]] de rTorrent.
# Fichier de configuration de rtorrent.
# Par défaut, c'est le fichier ~/.rtorrent.rc
# Limites des taux de téléchargement en réception et en envoi. "0" équivaut à aucune limite.
#download_rate = 500
#upload_rate = 150
# Répertoire qui contient les fichiers téléchargés.
directory = ~/torrent/data
# Répertoire où rtorrent stocke l'état de téléchargement des torrents.
session = ~/torrent/session
# Utilisez un chemin //relatif// si vous êtes susceptible de lancer plusieurs
# instances de rtorrent ! Commentez la ligne précédente et décommentez celle-ci :
#session = ./session
# Ports utilisables par rtorrent (utilisez deux fois la même valeur pour utiliser tout le temps ce port)
port_range = 6881-6999
port_random = no
# Vérification des données à la fin du téléchargement
check_hash = yes
# Ce répertoire contient les fichiers .torrent.
# Dès qu'un nouveau .torrent y est ajouté, le téléchargement commence.
schedule = watch_directory,15,15,load_start=~/torrent/torrent_active/*.torrent
# Dès que le téléchargement est achevé, le fichier est déplacé dans le
# répertoire ~/torrent_finis.
# Pour les versions récentes de rtorrent (0.8.4 et supérieures), utilisez la ligne suivante :
#system.method.set_key = event.download.finished,move_complete,"execute=mv,-u,$d.get_base_path=,~/torrent_finis/;d.set_directory=~/torrent_finis/"
# Pour les versions 0.7.7 de 0.8.3, utilisez la ligne suivante :
#on_finished = move_complete,"execute=mv,-u,$d.get_base_path=,~/torrent_finis/;d.set_directory=~/torrent_finis/"
# Activation de DHT pour les torrents sans trackers.
# Il est obligatoire de définir un répertoire de session (voir plus haut).
dht = auto
# Port UDP pour l'utilisation de DHT.
dht_port = 6880
# Forcer l'utilisation de transactions chiffrées, pour ne recevoir et n'envoyer que des données protégées.
# En revanche, les identités du l'expéditeur et du destinataire restent visibles.
encryption = allow_incoming,require,require_rc4
Il faut penser à ouvrir les ports utilisés par rtorrent dans [[:iptables]]. Les ports définis dans port_range & dht_port.
===== Utilisation =====
Pour lancer rtorrent, tapez dans un [[:terminal]] :
rtorrent
rtorrent vérifie à chaque démarrage le hash de vos fichiers. Ceci peut être très long et monopoliser des ressources importantes si vous avez un grand nombre de fichiers en seed. Pour éviter cela éditez votre fichier .rtorrent.rc et n'oubliez pas de créer un dossier **torrent** et sous-dossier **session** dans votre home.
# Default session directory. Make sure you don't run multiple instance
# of rtorrent using the same session directory. Perhaps using a
# relative path?
session = ~/torrent/session
Ces modifications permettront de conserver vos préférences.
Vous pouvez ajouter des fichiers *.torrent de deux façons :
* En pressant, dans rtorrent, la touche backspace (effacer), vous pouvez entrer le chemin complet du torrent ou bien une url du torrent.
* En enregistrant directement le torrent dans le répertoire que vous avez indiqué dans votre fichier de configuration avec la commande watch_directory (dans le fichier de configuration plus haut, il s'agit du répertoire /home/nom_utilisateur/torrent/torrent_active/)
==Les combinaisons de touches==
Pour agir sur un torrent, vous devez le sélectionner (avec les touches haut et bas). Le torrent sélectionné est indiqué par 3 étoiles sur le côté gauche.
* Pour mettre en pause un torrent, pressez ctrl+d.
* Pour relancer un torrent en pause, pressez ctrl+s.
* Pour retirer un torrent, vous devez presser deux fois ctrl+d : il se met en pause la première fois, puis est effacé la deuxième.
*Pour donner la priorité à un morceau du fichier (ou ne pas le télécharger), appuyez deux fois sur la touche « flèche droite », sélectionnez le fichier qui vous intéresse, puis pressez la touche « Espace ».
* Pour que le torrent ignore/prenne en compte les commandes du fichier de configuration (telles que move_complete dans l'exemple), pressez I.
* Pour modifier les taux limites d'envoi et de réception :
* a / s / d : Augmente le taux en envoi de 1 / 5 / 50 Ko
* A / S / D : Augmente le taux en réception de 1 / 5 / 50 Ko
* z / x / c : Diminue le taux en envoi de 1 / 5 / 50 Ko
* Z / X / C : Diminute le taux en récption de 1 / 5 / 50 Ko
* pour demander le download d'une peer : ^x puis d.add_peer=xxx.xxx.xxx.xxx:port (^ veut dire Ctrl, remplacer xxx... par l'ip de la peer et port par le numero du port utilisée par la peer)
* Pour quitter rtorrent, pressez ctrl+q.
==Signification des informations données par rtorrent==
Voici l'exemple d'un torrent :
* ubuntu-11.04-install-i386.iso
* Torrent: 161.6 / 617.2 MB Rate: 1.1 / 41.3 KB Uploaded: 5.1 MB [24%] 0d 3:09 [TI R: 0.03]
*
Voici sa signification :
ubuntu-11.04-install-i386.iso
Nom du fichier téléchargé.
Torrent: 161.6 / 617.2 MB
Nombre de Mo déjà téléchargés / nombre total du torrent.
Rate: 1.1 / 41.3 KB
Vitesses de téléchargement en envoi et en réception.
Uploaded: 5.1 MB
Nombre de Mo déjà envoyés.
[24%]
Pourcentage du torrent déjà téléchargé.
0d 3:09
Estimation du temps restant (ce chiffre se fonde sur la vitesse courante en réception du téléchargement). Si la vitesse en réception reste la même, le téléchargement sera terminé dans 0 jours, 3 heures et 9 minutes.
T
Indique que le torrent a été chargé à l'aide d'un fichier *.torrent stocké localement (le flag n'est pas présent lorsque le fichier torrent est chargé par le biais d'une URL)
I
Indique que le torrent ignore les commandes (telles que stop_on_ratio, move_complete)
R: 0.03
Indique le pourcentage de partage (//share ratio//) : c'est le nombre de données envoyées par rapport au nombre de données reçues. Ici, vous avez jusqu'ici envoyés 5.1 Mo et vous avez reçu 161.6 Mo, vous avez donc partagé 3 % du torrent.
===== rtorrent en daemon...=====
===... avec dtach ===
Voici un petit script qui permet de lancer rtorrent au démarrage de la distribution tout en se laissant la possibilité d'accéder à l'interface console.
Ensuite dans [[:tutoriel:comment_editer_un_fichier|/etc/init.d/rtorrentd]] on écrit :
#!/bin/sh -e
#
### BEGIN INIT INFO
# Provides: rtorrentd
# Required-Start: $network $syslog
# Required-Stop: $network
# Default-Start: 2 3 5
# Default-Stop: 0 1 6
# Description: Démarrer/arrêter rtorrent sous forme de daemon.
### END INIT INFO
user=
NAME=rtorrentd
SCRIPTNAME=/etc/init.d/$NAME
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# path du fichier temporaire
TMP=/tmp/rtorrent.dtach
# user qui lance le torrent
# chemin vers fichier conf
CONF=/home/${user}/.rtorrent.rc
start() {
echo -n $"Starting $NAME: "
su -l ${user} -c "dtach -n $TMP rtorrent -n -o import=$CONF"
chmod 666 /tmp/rtorrent.dtach
echo "started"
}
stop() {
echo -n $"Stopping $NAME: "
killall -r "rtorrent"
echo "stopped"
}
restart() {
if [ "$(ps aux | grep -e 'rtorrent' -c)" != 0 ]; then
{
stop
sleep 5
}
fi
start
}
case $1 in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo "Usage: {start|stop|restart}" >&2
exit 2
;;
esac
N'oubliez pas de renseigner compléter "user=" par votre nom d'utilisateur.
Pensez à rendre votre script exécutable :
sudo chmod +x /etc/init.d/rtorrentd
On termine avec la commande suivante pour indiquer que ce script doit s'exécuter au démarrage :
sudo update-rc.d rtorrentd defaults 99
Maintenant, à chaque démarrage du système, rtorrent se lancera automatiquement.
Pour pouvoir accéder à l'interface console il suffit d'utiliser la commande :
dtach -a /tmp/rtorrent.dtach -r winch
Vous pouvez créer un [[:alias]] pour exécuter plus facilement la commande précédente.
Pour détacher ensuite l'interface console il suffit de
* en qwerty: taper CTRL + \
* en azerty: taper CTRL + MAJ + 4
* mac avec clavier suisse, le backslash se fait avec Maj + Alt + 7
* Ctrl + $
===…avec screen ===
Screen est un outil plus répandu que dtach, il n'est pas aussi léger mais offre plus de fonctionnalités.
Dans [[:tutoriel:comment_editer_un_fichier|/etc/init.d/rtorrent-daemon]] on écrit :
#!/bin/sh -e
# Start/Stop rtorrent sous forme de daemon.
user=
NAME=rtorrent-daemon
SCRIPTNAME=/etc/init.d/$NAME
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
case $1 in
start)
echo "Starting rtorrent... "
su -l ${user} -c "screen -fn -dmS rtd nice -19 rtorrent"
echo "Terminated"
;;
stop)
if [ "$(ps aux | grep -e '.*rtorrent$' -c)" != 0 ]; then
{
echo "Shutting down rtorrent... "
killall -r "^.*rtorrent$"
echo "Terminated"
}
else
{
echo "rtorrent not yet started !"
echo "Terminated"
}
fi
;;
restart)
if [ "$(ps aux | grep -e '.*rtorrent$' -c)" != 0 ]; then
{
echo "Shutting down rtorrent... "
killall -r "^.*rtorrent$"
echo "Starting rtorrent... "
su -l ${user} -c "screen -fn -dmS rtd nice -19 rtorrent"
echo "Terminated"
}
else
{
echo "rtorrent not yet started !"
echo "Starting rtorrent... "
su -l ${user} -c "screen -fn -dmS rtd nice -19 rtorrent"
echo "Terminated"
}
fi
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2
exit 2
;;
esac
N'oubliez pas de compléter "user=" par votre nom d'utilisateur.
Pensez à rendre votre script exécutable:
sudo chmod +x /etc/init.d/rtorrent-daemon
On termine avec la commande suivante pour indiquer que ce script doit s'exécuter au démarrage :
sudo update-rc.d rtorrent-daemon defaults 99
Maintenant, à chaque démarrage du système, rtorrent se lancera automatiquement.
Pour pouvoir accéder à l'interface console on utilise la commande:
stty stop undef; stty start undef; screen -r rtd
Vous pouvez vous créer un [[:tutoriel:script_shell|script]] ou un [[:alias]] pour exécuter plus facilement la commande précédente.
Pour détacher ensuite l'interface console il suffit de taper Ctrl + a puis d .
===…avec crontab ===
Dans la crontab de l'utilisateur en lançant dtach.
L'utilisateur torrent lancera le dtach à chaque démarrage de la machine.
C'est simple, efficace, mais un peu brutal.
sudo crontab -e -u torrent
On rajoute cette ligne
# Start rtorrent in a detached session
@reboot TERM=xterm dtach -n ~/torrents/rtorrent rtorrent
===== Interfaces graphiques =====
Ce qui fait toute la puissance de rTorrent est son API : xmlrpc. Elle permet a un logiciel client de se connecter à rTorrent et à fournir une interface en se basant sur le moteur du logiciel. Cette flexibilité, obtenu à un coût très raisonnable (installation du paquet rtorrent), permet d'utiliser rTorrent de multiples façons.
Il peut être nécessaire d'installer pour ces clients mod_scgi :
[[apt>libapache2-mod-scgi]] (Disponible uniquement sur [[bionic|Ubuntu 18.04]] ((https://packages.ubuntu.com/search?suite=default§ion=all&arch=any&searchon=names&keywords=libapache2-mod-scgi)))
==== Interfaces "Web" ====
* [[rutorrent]] est une interface web en php. Elle est basée sur l'apparence (très agréable au demeurant) de uTorrent, le logiciel windows.
* [[https://github.com/Flood-UI/flood|flood]] est une interface moderne écrite en Node.js spécifiquement pour rTorrent, minimaliste et très fiable.
===== Voir aussi =====
* [[http://rakshasa.github.io/rtorrent/|Site officiel de rTorrent]] (en)
----
//Contributeurs : [[utilisateurs:Yoann]], [[utilisateurs:Samaga]], [[utilisateurs:Flayor]], Geek Spirit, Simtris.//