Mis à jour le 29 juillet 2024 avec des corrections adaptées pour un usage personnel.
Prérequis ¶
On va utiliser Transmission, un client BitTorrent libre très utilisé, qui a l’avantage de proposer une CLI simple d’utilisation et de pouvoir gérer la création de torrents.
Pour ce faire, on installe deux paquets :
sudo apt install transmission-daemon transmission-cli
Configurer Transmission ¶
Transmission a la fâcheuse habitude d’écraser sa configuration au redémarrage s’il n’est pas arrêté lors de la modification.
Si jamais vous l’aviez lancé, il faut stopper le daemon :
sudo systemctl stop transmission-daemon
Pour nous faciliter la vie, on va changer un paramètre dans le fichier de configuration :
sudo vim /etc/transmission-daemon/settings.json
On passe rpc-authentication-required
à false
. L’authentification RPC est souvent utilisée pour contrôler Transmission à distance. Ici, on se facilite les commandes.
On redémarre le daemon :
sudo systemctl start transmission-daemon
On peut vérifier sur quel port il écoute :
sudo ss --tcp -pl
ESTAB [...] REDACTED_IP:51413 [...] users:(("transmission-da",pid=3840919,fd=24))
Le port 51413
est le port TCP par défaut de Transmission. Il existe plusieurs mécanismes pour échanger des fichiers via BitTorrent, et ici on utilisera le plus simple : Transmission annoncera qu’on peut contacter notre serveur sur ce port.
Créer un torrent ¶
Pour créer un torrent avec Transmission, on a besoin de deux choses :
- Un répertoire ou un fichier à partager ;
- Une liste de trackers.
Les « trackers » sont des genre d’annuaires où s’enregistrent les pairs possédant tout ou partie des fichiers d’un torrent. Ces pairs sont appelés seeders, ils partagent. Les autres, qui veulent récupérer des fichiers, sont des leechers. Grâce aux trackers, les leechers récupèrent la liste des seeders 🌱. On peut être les deux à la fois d’ailleurs : récupérer un morceau de fichier tout en en partageant un autre.
Une fois cette liste récupérée, la transmission se fait en pair-à-pair ↔️.
Il existe des trackers publics et privés. Les trackers publics sont maintenus parfois par des associations, parfois par des individus, parfois on sait pas trop, mais ils sont loin d’être stables : ils peuvent être suspendus ou surchargés. L’idéal est donc d’associer plusieurs trackers publics à un torrent pour être sûr·e qu’au moins un des trackers soit accessible lors du leech. Ça évite aussi le côté « centralisation », pas vraiment compatible avec la philosophie torrent.
Allez, c’est parti ! Imaginons maintenant que tu aies un dossier perfectly-legal
que tu souhaites seeder. Voici comment créer le fichier torrent :
# Il semblerait que Transmission ne s'annonce qu'au premier tracker, ce qui semble
# limiter l'intérêt de fournir plusieurs trackers...
transmission-create perfectly-legal -p -t <tracker_1> [-t <tracker_2> ...] -o perfectly-legal.torrent
Le torrent ne contient finalement pas grand chose : entre autres, le nom du dossier, la liste des trackers et le hash du torrent, indispensable pour l’identifier sur les trackers. Ce hash dépend bien sûr du dossier et de son contenu.
Seeder le torrent ¶
Avant de se mettre à seeder, il faut copier notre dossier perfectly-legal
dans le dossier de téléchargement de Transmission, sinon le daemon ne se rendra pas compte qu’il peut seeder !
rsync -av perfectly-legal /var/lib/transmission-daemon/downloads/
Puis tu peux lancer le seed :
transmission-remote -a perfectly-legal.torrent
En réalité, cette commande pourrait aussi lancer un leech, si le fichier était hébergé autre part. C’est le principe même des torrents : tu peux être à la fois seeder et leecher.
Ici, Transmission commence par se rendre compte qu’il possède le fichier et en vérifie l’intégrité. Tu peux suivre cette évolution comme ceci :
watch -n .1 transmission-remote -l
ID Done Have ETA Up Down Ratio Status Name
1 100% 502.4 MB Done 0.0 0.0 0.0 Idle perfectly-legal
Dès que tu es à 100%, c’est bon. Transmission annonce alors aux différents trackers qu’il a le dossier et peut le seeder.
Côté client, j’utilise qBitTorrent pour gérer les torrents que je télécharge. Quand j’ouvre perfectly-legal.torrent
et que je commence le téléchargement, chaque tracker m’indique un pair. Logique, c’est le serveur depuis lequel le dossier est seedé. Quand je regarde ses informations, je vois :
Pas de surprise, c’est le port sur lequel écoute Transmission, comme on l’a vu lors de l’installation.
Conclusion ¶
Ce billet montre juste comment partager un torrent. Le cas d’usage classique est un fichier très lourd à partager.
Mais on peut faire des merveilles avec Transmission, et très simplement ! Par exemple, si tu…
- Ré-active l’authentification RPC (port
9091
par défaut, à ouvrir), - Élargit la liste blanche pour l’authentification (limitée à
localhost
par défaut), - Télécharge sur ton ordinateur le client Transmission,
- Et te connecte…
Tu as une interface pour contrôler le démon à distance. Et, globalement… ben c’est une seedbox ! 🚀