Créer une seedbox facilement avec aria2 et BitTorrent

Créer une seedbox facilement avec aria2 et BitTorrent

ISO Bucket

Avatar de l'auteur
David Legrand

Publié dans

Logiciel

25/08/2021 6 minutes
20

Créer une seedbox facilement avec aria2 et BitTorrent

Lorsque l'on parle de réseaux pair-à-pair (P2P) on oublie souvent qu'ils ne fonctionnent correctement que si chacun y partage des données, comme des fichiers que vous jugez importants. Voici comment faire avec un petit serveur et aria2.

BitTorrent est un protocole de partage de fichiers pair-à-pair souvent associé au piratage, mais il est en réalité très utilisé pour d'autres besoins. Il l'a été chez Facebook pour distribuer des données en interne, des éditeurs de jeux y ont recours pour diffuser ces derniers ou leurs patchs, il est aussi à l'origine de services comme PeerTube ou Resilio, permet la mise à disposition rapide d'images ISO de distributions Linux.

On peut ainsi vouloir l'utiliser pour participer au réseau d'une manière ou d'une autre. Comme nous l'avions évoqué dans un précédent article, il est désormais assez simple de télécharger ou de distribuer un fichier via BitTorrent à travers les liens Magnet grâce à l'introduction de solutions comme la DHT (Distributed Hash Table).

On peut le faire grâce à l'un des nombreux clients existants, qu'il s'agisse des officiels BitTorrent Classic/Web et µTorrent au modèle payant, d'outils open source comme Deluge et qBittorrent ou d'autres très légers tels que PicoTorrent. Certains préfèreront passer par un serveur et la ligne de commandes. 

C'est là qu'aria2 entre en scène. Voici comment l'utiliser pour télécharger et diffuser de nombreux fichiers.

aria2, couteau suisse du téléchargement

Ceux qui nous suivent connaissent déjà cet outil que nous avions présenté lorsque nous avions parlé de l'infructueuse aventure Metalink ou de téléchargement avec vérification d'empreinte (hash).

Il s'agit d'une application open source, multiplateformes, légère et très complète qui n'a qu'un objectif : vous permettre de tout faire ou presque en matière de téléchargement via différents protocoles. Elle est distribuée sous la forme d'un exécutable ou via différents gestionnaires de paquets sous Linux et Windows.

Sa documentation, très complète, détaille ses nombreuses fonctionnalités et options. Mais le téléchargement via un fichier torrent ou un lien Magnet est assez simple. Par exemple pour télécharger l'image ISO d'Ubuntu 21.04 :

aria2c https://releases.ubuntu.com/21.04/ubuntu-21.04-desktop-amd64.iso.torrent

Ou l'image ISO de Proxmox 7.0 via son empreinte (infohash) sous la forme d'un lien Magnet :

aria2c magnet:?xt=urn:btih:9fc36225478b9e1f6b4e67cab54a6b14cf084dc1&dn=proxmox-ve_7.0-1.iso

Vous pouvez agrémenter cette commande de différentes options : 

--bt-enable-lpd true // active la découverte de pairs locaux
--bt-force-encryption true // force l'utilisation du chiffrement arc4
--bt-require-crypto true // refuse d'établir des connexions via d'anciens protocoles
--seed-ratio=0.0 // Fixe le ratio de partage, 0.0 = illimité

Si cela ne fonctionne pas, pensez à vérifier que l'uPnP est activé sur votre routeur ou que les ports indiqués par aria2, qui servent  à la DHT et au transfert de données sont redirigés vers votre machine.

Création d'une seedbox

On peut donc utiliser aria2 pour télécharger puis distribuer des fichiers, et donc créer une seedbox minimale. Un terme là aussi sulfureux, mais qui désigne simplement une machine constamment en ligne, partageant des fichiers.

Pour tenter l'expérience, nous avons monté un serveur via une machine virtuelle sous Debian 11 via Proxmox VE 7.0. Nous y accédons via un terminal (SSH), comme on le ferait pour une instance cloud. 

ssh utilisateur@ip_du_serveur

On le met à jour et on installe aria2 ainsi que nload qui nous permettra de suivre la bande passante utilisée :

sudo apt update && sudo apt full-upgrade -y && sudo apt autoremove
sudo apt install aria2 nload

On crée deux dossiers, l'un pour les fichiers .torrent, l'autre pour les images ISO :

mkdir ISO Torrents

On créé une liste de fichiers .torrent d'images que l'on souhaite télécharger :

nano torrentsList

On y ajoute le contenu suivant puis on quitte en enregistrant le fichier (CTRL+X) :

https://releases.ubuntu.com/21.04/ubuntu-21.04-desktop-amd64.iso.torrent
https://releases.ubuntu.com/21.04/ubuntu-21.04-live-server-amd64.iso.torrent
https://releases.ubuntu.com/20.04/ubuntu-20.04.2.0-desktop-amd64.iso.torrent
https://releases.ubuntu.com/20.04/ubuntu-20.04.2-live-server-amd64.iso.torrent
https://cdimage.debian.org/debian-cd/current/amd64/bt-cd/debian-11.0.0-amd64-netinst.iso.torrent
https://cdimage.debian.org/debian-cd/current/amd64/bt-dvd/debian-11.0.0-amd64-DVD-1.iso.torrent
https://torrent.fedoraproject.org/torrents/Fedora-Workstation-Live-x86_64-34.torrent
https://torrent.fedoraproject.org/torrents/Fedora-Server-dvd-x86_64-34.torrent
https://images.kali.org/kali-linux-2021.2-installer-amd64.iso.torrent
https://images.kali.org/kali-linux-2021.2-installer-netinst-amd64.iso.torrent
https://download.manjaro.org/xfce/21.1.0/manjaro-xfce-21.1.0-210817-linux513.iso.torrent
https://linuxmint.com/torrents/linuxmint-20.2-cinnamon-64bit.iso.torrent
https://linuxmint.com/torrents/linuxmint-20.2-mate-64bit.iso.torrent
https://linuxmint.com/torrents/linuxmint-20.2-xfce-64bit.iso.torrent

On télécharge ensuite ces fichiers dans le dossier Torrents et on supprime la liste :

wget -i torrentsList -P Torrents/
rm torrentsList

On peut alors lancer le téléchargement et le partage des images ISO :

ls $HOME/Torrents/*.torrent | aria2c -j20 --bt-seed-unverified=true --seed-ratio=0.0 --dir=$HOME/Downloads -i -

Cette commande pipe permet de faire la liste des fichiers .torrent puis demande à aria2 de les télécharger dans le dossier Downloads avec une limite de 20 fichiers en parallèle (5 par défaut) et les partage ensuite sans s'arrêter. Bien entendu, vous pouvez là aussi l'adapter selon vos besoins, pour limiter le débit en upload par exemple.

Pour suivre l'utilisation de la bande passante de la machine, on s'y connecte via un autre terminal et on tape :

nload

Les débits courants et moyens de vos différentes connexions (utilisez les flèches pour en changer) s'afficheront alors, avec un pseudo graphique lorsqu'une activité est détectée.

Et après ?

Vous pouvez décider de la lancer automatiquement au démarrage du système ou d'une session. Dès que le script sera lancé, il dressera la liste des torrents, téléchargera les fichiers correspondants puis les partagera.

N'hésitez donc pas à en ajouter/supprimer et à faire le ménage à la sortie de nouvelles versions des distributions Linux par exemple, ou lorsque vous jugez que le partage d'un fichier n'est plus nécessaire. Si vous voulez aller plus loin, vous pouvez également utiliser des clients tels que Deluge et son interface web par exemple.

Écrit par David Legrand

Tiens, en parlant de ça :

Sommaire de l'article

Introduction

aria2, couteau suisse du téléchargement

Création d'une seedbox

Et après ?

Fermer

Commentaires (20)


Très intéressant, je ne connaissais pas cet outil.



A noter aussi le très populaire Transmission, qui peux fonctionner en mode daemon sans écran, avec une interface web. À installer avec le gestionnaire de paquet ou l’image docker.
(Docker est bien dans ce cas, ça permet d’isoler un peu le process…)


A noter egalement que Deluge possède un client “lourd” desktop qui permet par exemple de récupérer un .torrent sur sa machine a la maison. de cliquer dessus et ca va lancer deluge-client qui va automatiquement se connecter a la seedbox pour que ce soit elle qui DL le torrent ;) (oui c’est complique a explique mais c’est mon setup et c’est vraiment pratique)


Je ne savais pas que aria2c permettait le seed après le download, merci pour le tuto !



Juste 2 ptites remarques: vous mettez une liste d’options qui peuvent être ajoutées à aria2c dans le cas des torrents, mais vous omettez de mettre l’option que vous utilisez dans l’exemple juste en dessous (—bt-seed-unverified=true) c’est dommage^^
Aussi l’option -j ne limite pas à 20 fichiers (ou alors c’est mal formulé), ça limite le nombre de fichiers qui peuvent être téléchargés en parallèle.


C’est celle qui permet de seed (sans forcément vérifier le fichier). J’ai précisé pour le // effectivement :chinois:



Alfred1664 a dit:


A noter aussi le très populaire Transmission, qui peux fonctionner en mode daemon sans écran, avec une interface web. À installer avec le gestionnaire de paquet ou l’image docker. (Docker est bien dans ce cas, ça permet d’isoler un peu le process…)




Pareil, j’utilise Transmission sur le serveur, et Transmission-remote pour m’y connecter depuis chez moi. Transmission-remote est l’appli définie par défaut pour ouvrir les .magnet & .torrent , ce qui permet de lancer le téléchargement immédiatement sur le serveur.



Pour rappatrier les données depuis le serveur chez moi, c’est soit rsync dans un screen (linux) soit winscp (sous windows). J’ai pas utilisé l’interface web.



Par contre je ne connaissait pas nload (j’utilisais iptraf-ng), merci pour cet outil !



Enfin je me demande si l’on peux utiliser une instance amazon ec2 (ou lightsail) comme seedbox…. certains ont essayé ?


Chouette outil, effectivement et puissant puisqu’il ne se limite pas aux torrents et gère aussi les téléchargements classiques.



À noter qu’il existe des interfaces web qui sont peut-être plus user-friendly que la ligne de commande.





Pour la gestion des rapatriements, il est possible de déplacer les fichiers téléchargés dans un répertoire spécifique pour les synchroniser ensuite (avec syncthing par ex.) via l’exécution d’un script en fin de téléchargement.


Mon setup de Seedbox est sur du transmission-daemon, mais va falloir que je change.



Merci pour la découverte de nload, ça me sera utile.



Par contre quitte à faire une seedbox avec aria2c (je penses que je passerai dessus un de ces 4), je conseillerai plutôt de profiter du rpc et utiliser une interface graphique genre webui-aria2 pour faire quelque chose d’un peu plus utilisable.


Comme dit dans l’article, il y a pas mal de possibilités, là l’idée c’était de montrer comment faire en version minimale avec assez peu de maintenance/effort (surtout qu’on peut facilement gérer les fichiers torrent/téléchargés via SCP par exemple)


ça m’intéresserait de savoir pourquoi tu voudrais arrêter d’utiliser transmission-daemon, qui est quand même plus fait pour du seed qu’aria2c, une mauvaise expérience en particulier ?


Content de voir un article sur ce super outil que j’utilise depuis des années avec webui-aria2


Intéressant ce nload.
Pour bittorrent, j’utilise transmission-daemon sur le serveur et transmission remote GUI en local.
Si besoin de récupérer un torrent chez quelqu’un, j’installe soit utorrent V2.2.1 soit transmission pour vwin à récupérer sur transmissionbt.com.


Pour information nethogs permet d’avoir la bande passante par programme/port, ce qui peut être pratique, mais c’est plus lourd que nload, j’ai l’impression.


Bon, il ne reste plus qu’à faire un article sur la façon de monter facilement un tracker


Pour quoi faire ? Enfin je veux dire, dans la plupart des cas utiliser un tracker n’est pas nécessaire pour partager des fichiers, à moins de vouloir gérer ça de manière industrielle (et donc de savoir comment s’y prendre, parce que ce ne sera jamais “facile”).


David_L

Pour quoi faire ? Enfin je veux dire, dans la plupart des cas utiliser un tracker n’est pas nécessaire pour partager des fichiers, à moins de vouloir gérer ça de manière industrielle (et donc de savoir comment s’y prendre, parce que ce ne sera jamais “facile”).


Un tracker BT est super simple à concevoir. J’en avais fait un en PHP il y a une petite dizaine d’années.



Mais on est d’accord, ça ne sert plus trop de nos jours, sauf si on veut afficher les infos liées au transferts et pas seulement une liste de magnets.


Edtech

Un tracker BT est super simple à concevoir. J’en avais fait un en PHP il y a une petite dizaine d’années.



Mais on est d’accord, ça ne sert plus trop de nos jours, sauf si on veut afficher les infos liées au transferts et pas seulement une liste de magnets.


Oui et ça reste plus rapide que de traverser la DHT, mais bon, ça reste contraignant à maintenir.


David_L

Pour quoi faire ? Enfin je veux dire, dans la plupart des cas utiliser un tracker n’est pas nécessaire pour partager des fichiers, à moins de vouloir gérer ça de manière industrielle (et donc de savoir comment s’y prendre, parce que ce ne sera jamais “facile”).


:-)



je ne suis pas trés doué en matière de BT, j’imaginais 2 usages :




  1. pour partager des choses dans un groupe fermé sans avoir besoin de s’appuyer sur la DHT



  2. pour des partage sur un réseau interne non relié à internet (pour faire du déploiement rapide p2p de fichiers sur un parc par ex.).




Pour le 2e usage, je ne connais pas d’outils permettant de faire de la synchro de fichiers en p2p sur un réseau local. Cela existe-t-il ? (environnement Linux).


pascal.petit

:-)



je ne suis pas trés doué en matière de BT, j’imaginais 2 usages :




  1. pour partager des choses dans un groupe fermé sans avoir besoin de s’appuyer sur la DHT



  2. pour des partage sur un réseau interne non relié à internet (pour faire du déploiement rapide p2p de fichiers sur un parc par ex.).




Pour le 2e usage, je ne connais pas d’outils permettant de faire de la synchro de fichiers en p2p sur un réseau local. Cela existe-t-il ? (environnement Linux).


C’était le but de BT Sync (devenu Resilio depuis). De mémoire SyncThing fait la même chose en open source, mais je ne sais pas à quel point ça correspond à ton besoin, à creuser.


David_L

C’était le but de BT Sync (devenu Resilio depuis). De mémoire SyncThing fait la même chose en open source, mais je ne sais pas à quel point ça correspond à ton besoin, à creuser.


j’avais testé syncthing au début mais il ne faisait pas de p2p. Visiblement, il le fait maintenant. ça peut répondre à mon besoin (1 poste source qui fournit des gros fichiers à tout un tas d’autres postes : le p2p est vital pour avoir des temps de transfert raisonnables).



merci pour m’avoir signalé SyncThing.



Pour ce qui est de btsync, je n’avais pas réussi à en faire grand chose sur un réseau local plus ou moins isolé d’internet.


Deluge via Docker sur le syno ds918+
une extension deluge sur Brave sur mon pc windows et go :)