Vous venez de louer les services d'un hébergeur pour un petit serveur VPS bon marché et souhaitez mettre en place une "seedbox", un espace dédié au téléchargement via bittorrent. Beaucoup s'orientent vers le client/serveur de torrents "Deluge" mais nous non! Nous on aime la contradiction et la ligne de commande alors on va se contenter des outils habituels disponibles sur nos distributions préférées: Screen, rTorrent et Pure-ftpd.
Toute cette histoire va se passer sur une distribution Debian 11 "Bullseye"
Bref assez parlé, connectez vous sur votre nouveau serveur avec les codes fournis par votre hébergeur et entrons dans le vif du sujet.
On crée un utilisateur "toto", on lui donne un mot de passe et on passe à la suite.
root@debian:~# adduser toto
Adding user `toto' ...
Adding new group `toto' (1000) ...
Adding new user `toto' (1000) with group `toto' ...
Creating home directory `/home/toto' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for toto
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y
Avant de se connecter avec ce compte utilisateur on va devoir installer quelques outils et donc on à besoin d'être root pour ça.
Le programme rTorrent n'est pas conçu pour fonctionner en tache de fond et va donc se fermer si vous quittez la console, on va remédier à ça grâce au programme Screen.
root@debian:~# apt install screen
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
screen is already the newest version (4.8.0-6).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Ici Screen est déjà installé mais c'est peut-être du à mon hébergeur. Peu importe, l'installation de Screen n'a rien de particulier à signaler.
Passons à l'installation du client bittorrent rTorrent:
root@debian:~# apt install rtorrent
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package rtorrent
J'ai eu un peu peur en voyant ceci mais pas de panique, mon serveur est tout neuf, mettre à jour la base de données des dépôts résout le problème.
root@debian:~# apt update
...
root@debian:~# apt upgrade
....
root@debian:~# apt install rtorrent
Rien ne vous oblige à utiliser le protocole FTP pour récupérer les fichier que vous allez télécharger via rTorrent. Si vous ne souhaitez pas utiliser Pure-ftpd libre à vous de sauter cette étape et de passer directement à la suivante.
Bien que connu pour sa simplicité, configurer un serveur "Pure-ftpd" mériterait plus que ces quelques lignes mais comme on est impatient on se contente du minimum.
L'installation de Pure-ftpd ne devrait pas poser de problème
root@debian:~# apt install pure-ftpd
Créer un groupe pour les utilisateurs de ftp
root@debian:~# groupadd ftpgroup
Créer un utilisateur virtuel qui servira de "pont" entre l'utilisateur "toto" et l'acces en ftp.
root@debian:~# useradd -g ftpgroup -d /dev/null -s /usr/bin/nologin ftpuser
useradd: Warning: missing or non-executable shell '/usr/bin/nologin'
Ne soyez pas surpris par la seconde ligne, notre commande demande de créer un utilisateur "ftpuser" dans le groupe "ftpgroup" mais dont le répertoire personnel est le néant (-d /dev/null) et dont l'accès en console est interdit (-s /usr/bin/nologin) ce qui provoque cet avertissement sans empêcher la commande de s’exécuter. La commande cat /etc/passwd
vous prouvera que l'utilisateur à bien été créé.
On lie notre utilisateur toto à l'utilisateur virtuel que l'on vient de créer. J'ai choisi de lui octroyer le même mot de passe que celui définit plus haut, libre à vous de faire autrement.
root@debian:~# pure-pw useradd toto -u ftpuser -g ftpgroup -d /home/toto
Password:
Enter it again:
On crée/modifie le fichier des utilisateurs Pure-ftp
root@debian:~# pure-pw mkdb
à chaque création/modification d'utilisateur vous devez relancer cette commande.
Lier l’authentification avec les utilisateurs
root@debian:~# ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/50pure
Enfin on redémarre le service
root@debian:~# /etc/init.d/pure-ftpd restart
Vous pouvez désormais vous connecter sur le répertoire personnel de toto avec votre client ftp préféré, pensez à le paramétrer avec le protocole SFTP.
pour cette étape il est inutile de rester "root" on bascule donc vers l'utilisateur "toto".
root@debian:~# su toto
Plaçons nous dans notre répertoire personnel ...
toto@debian:/root$ cd ~
... et créons quelques répertoires nécessaires à la configuration.
toto@debian:~$ mkdir downloads session torrents_files
Allons chercher le fichier de configuration pour le copier à la racine du répertoire personnel de "toto". Il s'agit d'un fichier .gz qui contient un fichier rtorrent.rc, nous allons extraire ce dernier puis le renommer en fichier caché .rtorrent.rc puisque c'est ainsi qu'il doit être.
toto@debian:~$ cp /usr/share/doc/rtorrent/examples/rtorrent.rc.gz ~
toto@debian:~$ gunzip rtorrent.rc.gz
toto@debian:~$ mv rtorrent.rc .rtorrent.rc
Aucune des options de ce fichier n'est activée par défaut, nous allons simplement en activer quelques unes. Le fichier est suffisamment bien commenté pour que je m'épargne d'éprouvantes explications.
On retrouve ici les chemins, relatifs à l'utilisateur, des différents répertoires que nous venons de créer.
# Default directory to save the downloaded torrents.
#
directory.default.set = ~/downloads
# Default session directory. Make sure you don't run multiple instance
# of rTorrent using the same session directory. Perhaps using a
# relative path?
#
session.path.set = ~/session
# Watch a directory for new torrents, and stop those that have been
# deleted.
#
schedule2 = watch_directory,5,5,load.start=~/torrents_files/*.torrent
J'attire votre attention sur les différents ports que vous devez impérativement ouvrir sur votre serveur, soit par le biais de votre hébergeur soit par iptables ou nftables.
# Port range to use for listening.
#
network.port_range.set = 6890-6900
# 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.mode.set = auto
# UDP port to use for DHT.
#
dht.port.set = 6881
# Enable peer exchange (for torrents not marked private).
#
protocol.pex.set = yes
Pour ma part j'ai ouvert le port 6881 en TCP et UDP et les ports 6890 à 6900 en TCP.
De deux choses l'une, soit vous utilisez rTorrent de manière ponctuelle et dans ce cas vous pouvez ignorer l'utilisation de Screen, soit vous souhaitez laisser fonctionner votre seedbox et dans ce cas l'utilisation de Screen est indispensable. Je ne vais pas aller dans le détail de son utilisation, mais jetez un œil ici vous y trouverez l'essentiel des commandes Screen.
On commence donc par démarrer Screen.
toto@debian:~$ screen
Un message vous invite à appuyer sur la touche espace pour vous retrouver devant ... une console vierge. Ne vous y trompez pas, vous êtes dans une fenêtre Screen. Vous pouvez démarrer rTorrent.
toto@debian:~$ rtorrent
Pour détacher rTorrent et revenir à la console initiale utilisez la combinaison de touches [CTRL+a] puis [d].
[detached from 25713.pts-0.debian]
toto@debian:~$
À ce stade vous pourriez quitter la console du serveur VPS, le programme rTorrent serait toujours en activité sur ce dernier.
Pour revenir sur la fenêtre où s’exécute rTorrent on relance Screen avec l'option -r.
toto@debian:~$ screen -r
Et nous revoilà devant l'interface de rTorrent que nous allons enfin pouvoir utiliser.
On ne va pas se mentir, si vous avez pris le temps de configurer une "seedbox" ce n'est pas pour télécharger l'ensemble des distributions Ubuntu depuis son origine. Non! Vous ce que vous voulez c'est télécharger tous les films de vacances de tonton Norbert et tata Gisèle que Kevin pirate pour les mettent à disposition des autres membres de la famille. On va donc aller chercher sur le site de Kevin des fichiers .torrents et autres liens magnets.
Il existe deux méthodes pour ajouter des fichiers en téléchargement sur rTorrent.
Maintenant que nous avons un torrent en téléchargement voyons ce que signifie ce que nous avons sous les yeux.
La vue principale au lancement de rTorrent est la vue "main", la vue principale, c'est celle qui affiche l'ensembles des opérations en cours. Il existe une dizaine de vues différentes accessibles depuis les touches numérotées de 0 à 9.
La première ligne juste après l'entête indique le nom de la vue actuelle ([View: main]
) et à droite le numéro du fichier sélectionne et le nombre de fichier total ([ 1 of 1 ]
).
[View: main] [ 1 of 1 ]
Ensuite s'affichent les documents en cours, chacun occupe 3 lignes. Des astérisques s'affichent à coté de chaque ligne d'un fichier sélectionné.
* Tonton_Norbert_vacances-Ploumanac.h-2022.FRENCH.WEBRip.XviD_By_Kevin.avi
* 397.5 / 698.2 MB Rate: 33.2 / 103.1 KB Uploaded: 54.9 MB [ 57%] 0d 1:20 [ R: 0.08]
*
La première ligne donne le nom du fichier en cours de téléchargement.Tonton_Norbert_vacances-Ploumanac.h-2022.FRENCH.WEBRip.XviD_By_Kevin.avi
La seconde ligne détaille différentes informations à propos du téléchargement.397.5 / 698.2 MB
: Le volume téléchargé par rapport au volume total.Rate: 33.2 / 103.1 KB
: Vitesse de téléchargement émission/réception.Uploaded: 54.9 MB
: le volume en Mo déjà partagé.[ 57%]
: le pourcentage téléchargé.0d 1:20
: le temps restant (j h:m) en fonction de la vitesse de téléchargement à cet instant.[ R: 0.08]
: le ratio (%) que vous avez partagé. Deux lettres peuvent précéder le R:
T pour signifier que le téléchargement à été ajouté par un fichier .torrent et pas par une URL.
I qui signifie que le fichier ignore certaines commandes automatiques (déplacement, arrêt auto, ...)
La troisième ligne donnera des informations à propos du tracker, de la connexion et autres.
Enfin et pour terminer voici quelques commandes à connaitre.