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

[pastacode lang=”bash” manual=”sudo%20aptitude%20install%20rtorrent” message=”” highlight=”” provider=”manual”/]

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

[pastacode lang=”bash” manual=”sudo%20aptitude%20install%20libapache2-mod-scgi” message=”” highlight=”” provider=”manual”/]

On va avoir besoin de configurer rtorrent.

1.2) Configuration

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

[pastacode lang=”bash” manual=”%23%20This%20is%20an%20example%20resource%20file%20for%20rTorrent.%20Copy%20to%0A%23%20~%2F.rtorrent.rc%20and%20enable%2Fmodify%20the%20options%20as%20needed.%20Remember%20to%0A%23%20uncomment%20the%20options%20you%20wish%20to%20enable.%0A%0A%23%20Log%20file%0Alog.open_file%20%3D%20%22rtorrent%22%2C%2Fhome%2Fuser%2Frtorrent.log%0Alog.add_output%20%3D%20%22debug%22%2C%20%22rtorrent%22%0A%0A%23%20Maximum%20and%20minimum%20number%20of%20peers%20to%20connect%20to%20per%20torrent.%0A%23min_peers%20%3D%2040%0A%23max_peers%20%3D%20100%0A%0A%23%20Same%20as%20above%20but%20for%20seeding%20completed%20torrents%20(-1%20%3D%20same%20as%20downloading)%0A%23min_peers_seed%20%3D%2010%0A%23max_peers_seed%20%3D%2050%0A%0A%23%20Maximum%20number%20of%20simultanious%20uploads%20per%20torrent.%0A%23max_uploads%20%3D%2015%0A%0A%23%20Global%20upload%20and%20download%20rate%20in%20KiB.%20%220%22%20for%20unlimited.%0A%23download_rate%20%3D%200%0A%23upload_rate%20%3D%200%0A%0A%23%20Default%20directory%20to%20save%20the%20downloaded%20torrents.%0Adirectory%20%3D%20%2Fhome%2Fuser%2Ftorrent%0A%0A%23%20Default%20session%20directory.%20Make%20sure%20you%20don’t%20run%20multiple%20instance%0A%23%20of%20rtorrent%20using%20the%20same%20session%20directory.%20Perhaps%20using%20a%0A%23%20relative%20path%3F%0Asession%20%3D%20%2Fhome%2Fuser%2F.session%0A%0A%23%20Watch%20a%20directory%20for%20new%20torrents%2C%20and%20stop%20those%20that%20have%20been%0A%23%20deleted.%0A%23schedule%20%3D%20watch_directory%2C5%2C5%2Cload_start%3D.%2Fwatch%2F*.torrent%0A%23schedule%20%3D%20untied_directory%2C5%2C5%2Cstop_untied%3D%0A%0A%23%20Close%20torrents%20when%20diskspace%20is%20low.%0A%23schedule%20%3D%20low_diskspace%2C5%2C60%2Cclose_low_diskspace%3D100M%0A%0A%23%20Stop%20torrents%20when%20reaching%20upload%20ratio%20in%20percent%2C%0A%23%20when%20also%20reaching%20total%20upload%20in%20bytes%2C%20or%20when%0A%23%20reaching%20final%20upload%20ratio%20in%20percent.%0A%23%20example%3A%20stop%20at%20ratio%202.0%20with%20at%20least%20200%20MB%20uploaded%2C%20or%20else%20ratio%2020.0%0A%23schedule%20%3D%20ratio%2C60%2C60%2C%22stop_on_ratio%3D200%2C200M%2C2000%22%0A%0A%23%20The%20ip%20address%20reported%20to%20the%20tracker.%0A%23ip%20%3D%20127.0.0.1%0A%23ip%20%3D%20rakshasa.no%0A%0A%23%20The%20ip%20address%20the%20listening%20socket%20and%20outgoing%20connections%20is%0A%23%20bound%20to.%0A%23bind%20%3D%20127.0.0.1%0A%23bind%20%3D%20rakshasa.no%0A%0A%0A%23%20Port%20range%20to%20use%20for%20listening.%0Aport_range%20%3D%2056001-56005%0A%0A%23%20Start%20opening%20ports%20at%20a%20random%20position%20within%20the%20port%20range.%0Aport_random%20%3D%20no%0A%0A%23%20Check%20hash%20for%20finished%20torrents.%20Might%20be%20usefull%20until%20the%20bug%20is%0A%23%20fixed%20that%20causes%20lack%20of%20diskspace%20not%20to%20be%20properly%20reported.%0A%23check_hash%20%3D%20no%0A%0A%23%20Set%20whetever%20the%20client%20should%20try%20to%20connect%20to%20UDP%20trackers.%0A%23use_udp_trackers%20%3D%20yes%0A%0A%23%20Alternative%20calls%20to%20bind%20and%20ip%20that%20should%20handle%20dynamic%20ip’s.%0A%23schedule%20%3D%20ip_tick%2C0%2C1800%2Cip%3Drakshasa%0A%23schedule%20%3D%20bind_tick%2C0%2C1800%2Cbind%3Drakshasa%0A%0A%23%20Encryption%20options%2C%20set%20to%20none%20(default)%20or%20any%20combination%20of%20the%20following%3A%0A%23%20allow_incoming%2C%20try_outgoing%2C%20require%2C%20require_RC4%2C%20enable_retry%2C%20prefer_plaintext%0A%23%0A%23%20The%20example%20value%20allows%20incoming%20encrypted%20connections%2C%20starts%20unencrypted%0A%23%20outgoing%20connections%20but%20retries%20with%20encryption%20if%20they%20fail%2C%20preferring%0A%23%20plaintext%20to%20RC4%20encryption%20after%20the%20encrypted%20handshake%0A%23%0A%23%20encryption%20%3D%20allow_incoming%2Cenable_retry%2Cprefer_plaintext%0A%0A%23%20Enable%20DHT%20support%20for%20trackerless%20torrents%20or%20when%20all%20trackers%20are%20down.%0A%23%20May%20be%20set%20to%20%22disable%22%20(completely%20disable%20DHT)%2C%20%22off%22%20(do%20not%20start%20DHT)%2C%0A%23%20%22auto%22%20(start%20and%20stop%20DHT%20as%20needed)%2C%20or%20%22on%22%20(start%20DHT%20immediately).%0A%23%20The%20default%20is%20%22off%22.%20For%20DHT%20to%20work%2C%20a%20session%20directory%20must%20be%20defined.%0A%23%0A%23%20dht%20%3D%20auto%0A%0A%23%20UDP%20port%20to%20use%20for%20DHT.%0A%23%0A%20dht_port%20%3D%206881%0A%0A%23%20Enable%20peer%20exchange%20(for%20torrents%20not%20marked%20private)%0A%23%0A%23%20peer_exchange%20%3D%20yes%0A%0A%23%0A%23%20Do%20not%20modify%20the%20following%20parameters%20unless%20you%20know%20what%20you’re%20doing.%0A%23%0A%0A%23%20Hash%20read-ahead%20controls%20how%20many%20MB%20to%20request%20the%20kernel%20to%20read%0A%23%20ahead.%20If%20the%20value%20is%20too%20low%20the%20disk%20may%20not%20be%20fully%20utilized%2C%0A%23%20while%20if%20too%20high%20the%20kernel%20might%20not%20be%20able%20to%20keep%20the%20read%0A%23%20pages%20in%20memory%20thus%20end%20up%20trashing.%0A%23hash_read_ahead%20%3D%2010%0A%0A%23%20Interval%20between%20attempts%20to%20check%20the%20hash%2C%20in%20milliseconds.%0A%23hash_interval%20%3D%20100%0A%0A%23%20Number%20of%20attempts%20to%20check%20the%20hash%20while%20using%20the%20mincore%20status%2C%0A%23%20before%20forcing.%20Overworked%20systems%20might%20need%20lower%20values%20to%20get%20a%0A%23%20decent%20hash%20checking%20rate.%0A%23hash_max_tries%20%3D%2010%0A%23scgi_port%20%3D%20127.0.0.1%3A5001%0A%0Ascgi_local%20%3D%20%2Fhome%2Fuser%2Frpc.socket%0Aexecute.nothrow%20%3D%20chmod%2C770%2C%2Fhome%2Fuser%2Frpc.socket%0A” message=”” highlight=”” provider=”manual”/]

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

[pastacode lang=”bash” manual=”git%20clone%20https%3A%2F%2Fgithub.com%2FNovik%2FruTorrent” message=”” highlight=”” provider=”manual”/]

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

[pastacode lang=”bash” manual=”sudo%20mv%20ruTorrent%2F%20%2Fvar%2Fwww%2F” message=”” highlight=”” provider=”manual”/]

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

[pastacode lang=”bash” manual=”sudo%20chown%20-R%20www-data%3Awww-data%20%2Fvar%2Fwww%2FruTorrent%2F” message=”” highlight=”” provider=”manual”/]

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

[pastacode lang=”bash” manual=”sudo%20mkdir%20users%2Fnomutilisateur” message=”” highlight=”” provider=”manual”/]

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 :

[pastacode lang=”bash” manual=”sudo%20chown%20-R%20www-data%3Awww-data%20users%0Asudo%20chmod%20-R%20774%20users” message=”” highlight=”” provider=”manual”/]

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

[pastacode lang=”bash” manual=”%24scgi_port%20%3D%205000%3B%0A%24scgi_host%20%3D%20%22127.0.0.1%22%3B” message=”” highlight=”” provider=”manual”/]

et remplacez-les par

[pastacode lang=”bash” manual=”%24scgi_port%20%3D%200%3B%0A%24scgi_host%20%3D%20%22unix%3A%2F%2F%2Fhome%2Fuser%2Frpc.socket%22%3B” message=”” highlight=”” provider=”manual”/]

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

[pastacode lang=”bash” manual=”sudo%20aptitude%20install%20nodejs%20npm” message=”” highlight=”” provider=”manual”/]

Installez ensuite Flood avec la commande

[pastacode lang=”bash” manual=”sudo%20npm%20i%20-g%20flood” message=”” highlight=”” provider=”manual”/]

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

[pastacode lang=”bash” manual=”sudo%20nano%20%2Fetc%2Fsystemd%2Fsystem%2Fflood.service” message=”” highlight=”” provider=”manual”/]

Le contenu du fichier doit ressembler à ça

[pastacode lang=”bash” manual=”%5BUnit%5D%0ADescription%3DFlood%20Web%20UI%0AAfter%3Dnetwork.target%0A%0A%5BService%5D%0AWorkingDirectory%3D~%0AExecStart%3D%2Fusr%2Flocal%2Fbin%2Fflood%20-h%200.0.0.0%0AUser%3Duser%0A%0A%5BInstall%5D%0AWantedBy%3Dmulti-user.target” message=”” highlight=”” provider=”manual”/]

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.

[pastacode lang=”bash” manual=”%5BUnit%5D%0ADescription%3DrTorrent%0AAfter%3Dnetwork.target%0A%0A%5BService%5D%0AType%3Dforking%0AKillMode%3Dnone%0AUser%3Dfate%0AExecStartPre%3D%2Fbin%2Fbash%20-c%20%22if%20test%20-e%20%25h%2F.session%2Frtorrent.lock%20%26%26%20test%20-z%20%60pidof%20rtorrent%60%3B%20then%20rm%20-f%20%25h%2F.session%2Frtorrent.lock%3B%20fi%22%0AExecStart%3D%2Fusr%2Fbin%2Fscreen%20-dmfa%20-S%20rtorrent%20%2Fusr%2Fbin%2Frtorrent%0AExecStop%3D%2Fbin%2Fbash%20-c%20%22test%20%60pidof%20rtorrent%60%20%26%26%20killall%20-w%20-s%202%20%2Fusr%2Fbin%2Frtorrent%22%0AWorkingDirectory%3D~%0A%0A%5BInstall%5D%0AWantedBy%3Dmulti-user.target” message=”” highlight=”” provider=”manual”/]

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

Il faut copier le script dans le répertoire

[pastacode lang=”bash” manual=”%2Fetc%2Fsystemd%2Fsystem%2Frtorrent.service” message=”” highlight=”” provider=”manual”/]

Pour lancer rtorrent, il faut utiliser la commande

[pastacode lang=”bash” manual=”sudo%20systemctl%20start%20rtorrent.service” message=”” highlight=”” provider=”manual”/]

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

[pastacode lang=”bash” manual=”sudo%20systemctl%20enable%20rtorrent.service” message=”” highlight=”” provider=”manual”/]

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.