Rtorrent sur Debian

Nous allons voir comment installer rtorrent sur notre serveur, ainsi qu’une interface web, rutorrent ou flood. Rtorrent ne doit évidemment pas servir à télécharger des films, le piratage c’est mal.

1) Rtorrent

1.1) Installation

Pour Rtorrent, c’est simple, il suffit d’installer la version présente dans les dépôts Debian avec la commande

sudo aptitude install rtorrent

Si vous êtes sous une autre distribution que Debian, vérifiez bien que le package rtorrent présent dans vos dépôt est compilé avec xmlrpc-c.
Si ce n’est pas le cas il faudra que vous le compiliez vous-même vu que Rutorrent et Flood en ont besoin.

On va commencer par installer libapache2-mod-scgi avec la commande

sudo aptitude install libapache2-mod-scgi

On va avoir besoin de configurer rtorrent.

1.2) Configuration

Créez un fichier .rtorrent.rc et collez cette config :

# This is an example resource file for rTorrent. Copy to
# ~/.rtorrent.rc and enable/modify the options as needed. Remember to
# uncomment the options you wish to enable.

# Log file
log.open_file = "rtorrent",/home/user/rtorrent.log
log.add_output = "debug", "rtorrent"

# Maximum and minimum number of peers to connect to per torrent.
#min_peers = 40
#max_peers = 100

# Same as above but for seeding completed torrents (-1 = same as downloading)
#min_peers_seed = 10
#max_peers_seed = 50

# Maximum number of simultanious uploads per torrent.
#max_uploads = 15

# Global upload and download rate in KiB. "0" for unlimited.
#download_rate = 0
#upload_rate = 0

# Default directory to save the downloaded torrents.
directory = /home/user/torrent

# Default session directory. Make sure you don't run multiple instance
# of rtorrent using the same session directory. Perhaps using a
# relative path?
session = /home/user/.session

# Watch a directory for new torrents, and stop those that have been
# deleted.
#schedule = watch_directory,5,5,load_start=./watch/*.torrent
#schedule = untied_directory,5,5,stop_untied=

# Close torrents when diskspace is low.
#schedule = low_diskspace,5,60,close_low_diskspace=100M

# Stop torrents when reaching upload ratio in percent,
# when also reaching total upload in bytes, or when
# reaching final upload ratio in percent.
# example: stop at ratio 2.0 with at least 200 MB uploaded, or else ratio 20.0
#schedule = ratio,60,60,"stop_on_ratio=200,200M,2000"

# The ip address reported to the tracker.
#ip = 127.0.0.1
#ip = rakshasa.no

# The ip address the listening socket and outgoing connections is
# bound to.
#bind = 127.0.0.1
#bind = rakshasa.no


# Port range to use for listening.
port_range = 56001-56005

# Start opening ports at a random position within the port range.
port_random = no

# Check hash for finished torrents. Might be usefull until the bug is
# fixed that causes lack of diskspace not to be properly reported.
#check_hash = no

# Set whetever the client should try to connect to UDP trackers.
#use_udp_trackers = yes

# Alternative calls to bind and ip that should handle dynamic ip's.
#schedule = ip_tick,0,1800,ip=rakshasa
#schedule = bind_tick,0,1800,bind=rakshasa

# Encryption options, set to none (default) or any combination of the following:
# allow_incoming, try_outgoing, require, require_RC4, enable_retry, prefer_plaintext
#
# The example value allows incoming encrypted connections, starts unencrypted
# outgoing connections but retries with encryption if they fail, preferring
# plaintext to RC4 encryption after the encrypted handshake
#
# encryption = allow_incoming,enable_retry,prefer_plaintext

# Enable DHT support for trackerless torrents or when all trackers are down.
# May be set to "disable" (completely disable DHT), "off" (do not start DHT),
# "auto" (start and stop DHT as needed), or "on" (start DHT immediately).
# The default is "off". For DHT to work, a session directory must be defined.
#
# dht = auto

# UDP port to use for DHT.
#
 dht_port = 6881

# Enable peer exchange (for torrents not marked private)
#
# peer_exchange = yes

#
# Do not modify the following parameters unless you know what you're doing.
#

# Hash read-ahead controls how many MB to request the kernel to read
# ahead. If the value is too low the disk may not be fully utilized,
# while if too high the kernel might not be able to keep the read
# pages in memory thus end up trashing.
#hash_read_ahead = 10

# Interval between attempts to check the hash, in milliseconds.
#hash_interval = 100

# Number of attempts to check the hash while using the mincore status,
# before forcing. Overworked systems might need lower values to get a
# decent hash checking rate.
#hash_max_tries = 10
#scgi_port = 127.0.0.1:5001

scgi_local = /home/user/rpc.socket
execute.nothrow = chmod,770,/home/user/rpc.socket

Pensez à changer “user” par l’utilisateur qui va lancer rtorrent.

Il faut que répertoire indiqué après “directory =” existe, pensez donc à le créer.

Tel que configuré, Rtorrent va créer un fichier socket au démarrage et c’est via ce socket que les interfaces web vont pouvoir communiquer avec Rtorrent. Il faut bien évidemment que l’utilisateur qui va lancer Rtorrent ait les droits de créer le socket dans le répertoire indiqué après “scgi_local =”.

2) Interfaces web

Il existe deux interfaces webs pour Rtorrent : Flood et Rutorrent.

Flood est une interface moderne avec une gestion d’utilisateur intégrée et fonctionnant via Node.js.

Rutorrent est une interface beaucoup plus classique (et plus ancienne), sans gestion d’utilisateur et fonctionnant avec un serveur web (Apache dans mon cas).

Les deux ont, à quelques choses près, les même fonctionnalités. Flood est plus simple à installer et configurer.

2.1) Rutorrent

Récupérez la dernière version de Rutorrent avec la commande

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

On va maintenant la mettre dans le répertoire web (/var/www sur mon serveur) avec la commande

sudo mv ruTorrent/ /var/www/

On va modifier le propriétaire du dossier et mettre l’utilisateur Apache propriétaire. Tapez la commande

sudo chown -R www-data:www-data /var/www/ruTorrent/

Par défaut la gestion du mot de passe pour l’accès à l’interface web est géré en basic avec un couple de fichier htaccess/htpasswd. Si vous voulez mettre un système de mot de passe un peu plus sûr, je vous invite à lire cet article

Passons à la configuration.

Allez dans le répertoire de Rutorrent puis dans le sous-répertoire conf. Un répertoire users est présent.

Créez un dossier dans le répertoire users avec la commande

sudo mkdir users/nomutilisateur

Le nom d’utilisateur doit être le login de connexion à l’interface web de rutorrent.

Dans le dossier conf se trouve également un fichier config.php. On va le copier dans les répertoires utilisateurs précédemment créés.

Une fois le fichier copié dans chaque répertoire, lancez ces deux commandes :

sudo chown -R www-data:www-data users
sudo chmod -R 774 users

La première commande sert à changer le propriétaire du dossier pour que le propriétaire des fichiers copiés soit l’utilisateur Apache, et la seconde modifie les accès du dossier users et de son contenu.

Dans chaque fichier config.php, cherchez les lignes

$scgi_port = 5000;
$scgi_host = "127.0.0.1";

et remplacez-les par

$scgi_port = 0;
$scgi_host = "unix:///home/user/rpc.socket";

Adaptez le chemin du socket au votre. Il faut que l’utilisateur lançant Rutorrent (www-data dans notre cas, ait accès au socket), sinon ça ne fonctionnera pas.

L’interface web Rutorrent est accessible à l’adresse http://adresseipdevotreserveur/ruTorrent

Si jamais vous avez plusieurs instances de Rtorrent qui tournent, il vous faudra créer un nouvel utilisateur pour chaque instance Rrtorrent et incrémenter “RCx” dans le fichier de configuration Rutorrent.

2.2) Flood

Pour fonctionner, Flood va avoir besoin de Node.js et Npm. Installer les avec la commande

sudo aptitude install nodejs npm

Installez ensuite Flood avec la commande

sudo npm i -g flood

On va maintenant créer un script systemd avec la commande

sudo nano /etc/systemd/system/flood.service

Le contenu du fichier doit ressembler à ça

[Unit]
Description=Flood Web UI
After=network.target

[Service]
WorkingDirectory=~
ExecStart=/usr/local/bin/flood -h 0.0.0.0
User=user

[Install]
WantedBy=multi-user.target

Modifiez “user” par l’utilisateur qui exécutera Flood. Je vous conseille d’utiliser le même utilisateur que pour Rtorrent, vous n’aurez ainsi pas d’ennui d’accès au socket.

Ouvrez le port 3000 pour pouvoir accéder à Flood et tout est configuré. C’est plus rapide qu’avec Rutorrent.

Vous pouvez accéder à Flood  en tapant “votreadresseip:3000” dans votre navigateur. Il vous sera demandé de créer un compte puis d’indiquer chemin du socket Rtorrent.

3) Lancement automatiquement de Rtorrent

Si vous voulez pouvoir lancer rtorrent en arrière plan, voici un petit script qui fait l’affaire. Vous devez par contre avoir Screen d’installé pour qu’il fonctionne.

[Unit]
Description=rTorrent
After=network.target

[Service]
Type=forking
KillMode=none
User=fate
ExecStartPre=/bin/bash -c "if test -e %h/.session/rtorrent.lock && test -z `pidof rtorrent`; then rm -f %h/.session/rtorrent.lock; fi"
ExecStart=/usr/bin/screen -dmfa -S rtorrent /usr/bin/rtorrent
ExecStop=/bin/bash -c "test `pidof rtorrent` && killall -w -s 2 /usr/bin/rtorrent"
WorkingDirectory=~

[Install]
WantedBy=multi-user.target

Il faudra que vous changiez le nom d’utilisateur dans le script.

Il faut copier le script dans le répertoire

/etc/systemd/system/rtorrent.service

Pour lancer rtorrent, il faut utiliser la commande

sudo systemctl start rtorrent.service

et pour qu’il se lance au démarrage c’est la commande

sudo systemctl enable rtorrent.service

Si vous avez plusieurs sessions de Rtorrent, il faudra créer autant de script que vous avez de session et changer l’utilisateur dans le script.

Ce script provient de https://wiki.archlinux.org

Ca sera tout pour aujourd’hui 🙂

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.