Vous avez sûrement tous entendu parler de BitTorrent. BitTorrent est un protocole permettant de partager à plusieurs personnes un ou plusieurs fichiers. Les personnes qui récupèrent le fichier le partagent avec d'autres personnes le souhaitant.
Outre le côté dérivé de la chose, qui permet à un bon nombre de pirates de se partager des fichiers illégaux dont ils n'ont pas payé les droits d'auteurs :colere2: , BitTorrent est réellement une belle invention qui permet de trouver une alternative à l'achat de nombreux serveurs et hauts débits de connexion Internet pour des projets de belle ampleur.
Le fonctionnement de BitTorrent repose sur trois points cruciaux :
le tracker : c'est un serveur qui s'occupe de référencer les personnes possédant des morceaux de données d'un fichier torrent ;
le fichier torrent : ce fichier contient les informations sur les données souhaitées et le moyen de les récupérer de manière fiable ;
le fichier source : au moins une copie complète des données partagées.
Le tracker
Le tracker est un simple serveur qui communique avec les programmes clients BitTorrent via le protocole HTTP.
Si vous possédez un serveur PHP/MySQL, vous pouvez mettre en place un tracker facilement grâce à PHPBTTracker+, toute l'installation est automatisée et donc simple.
une clef de vérification pour chaque morceau, appelée clef de hashage SHA1.
C'est ce fichier qui devra être mis à disposition des personnes souhaitant récupérer le fichier.
Le fichier source
C'est le seul élément qui contient véritablement les données. C'est le plus important, une fois que les autres points sont réglés. Ce fichier peut être un fichier unique ou un répertoire contenant plusieurs fichiers.
Je commencerai par quelques règles qu'il est véritablement important de respecter.
Pour créer un fichier, on peut utiliser Azureus ou µTorrent, mais le plus souvent, on aura besoin d'une bonne connexion et donc on pourra avoir besoin d'utiliser la ligne de commande d'un client SSH pour lancer tout cela sur un serveur dédié.
Utilisation d'un client graphique
Avec Azureus ou µTorrent, pas besoin d'expliquer, vous mettez votre fichier à un endroit qui ne vous gêne pas (pas sur le bureau, par exemple) et vous lancez la création du fichier torrent avec Fichier > Créer un fichier torrent.
Utilisation d'un client console
Pour cela, le mieux est d'utiliser BitTorrent. Il vous faudra commencer par l'installer. Ce programme en Python nous donne quelques petites commandes bien sympathiques. Si vous regardez d'autres tutos, vous verrez que les noms ont changé lors de la version 4.1.4. Voici un petit tableau pour faire le changement :
Ancienne commande
Nouvelle commande
btdownloadgui.py
bittorrent.py
btdownloadheadless.py
bittorrent-console.py
btdownloadcurses.py
bittorrent-curses.py
btmaketorrentgui.py
maketorrent.py
btmaketorrent.py
maketorrent-console.py
btlaunchmany.py
launchmany-console.py
btlaunchmanycurses.py
launchmany-curses.py
bttrack.py
bittorrent-tracker.py
btreannounce.py
changetracker-console.py
btrename.py
REMOVED, use maketorrent*.py
btshowmetainfo.py
torrentinfo-console.py
Pour créer notre fichier torrent, on va donc utiliser maketorrent-console.
Comme dit plus haut, il nous faut un tracker et le fichier pour créer notre .torrent. Voici la liste des options que l'on peut ajouter :
--content_type <arg>
Mime type du fichier. (par défaut '')
--title <arg>
Un titre optionnel pour décrire le contenu du .torrent (par défaut '')
--comment <arg>
Un commentaire optionnel à ajouter dans le .torrent (par défaut '')
--piece_size_pow2 <arg>
La puissance de 2 qui définit la taille des morceaux de fichier dans lequel va être découpé le fichier.
Si cette valeur est à 0, une valeur par défaut en fonction de la taille des données sera choisie automatiquement.
(par défaut 0)
--tracker_name <arg>
Le nom du tracker (par défaut '')
--use_tracker, --no_use_tracker
Si l'on utilise --no_use_tracker alors on génère un torrent sans URL de tracker.
A la place de l'adresse, une socket sous la forme <ip>:<port> ou une chaîne vide
pour utiliser sa propre table de routage (par défaut, on utilise un tracker).
--verbose, --no_verbose
Affiche des informations sur les tâches effectuées pendant la création (par défaut, on n'en affiche pas).
--debug, --no_debug
Affiche des informations de débuggage (par défaut, on n'en affiche pas).
--data_dir <arg>
Spécifie le répertoire des informations BitTorrent (par défaut ~/.bittorrent/data/).
--language <arg>
Code de langue ISO à utiliser : af, bg, ca, cs, da, de, el, en, es, es_MX,
fr, he, hu, is, it, ja, ko, nb_NO, nl, pl, pt, pt_BR, ro, ru, sk, sl,
sv, tr, vi, zh_CN, zh_TW (Par défaut '')
--target <arg>
Fichier cible optionnel pour le torrent (par défaut '')
Le mieux est de faire cette arborescence :
seeding:
seeding/shares:
# Contenant les fichiers à partager
seeding/torrents:
# Contenant les fichiers torrent
Voici un petit exemple avec la dernière version de Zenwalk.
Vous mettez votre fichier dans le répertoire seeding/shares. Puis vous modifiez un peu cette commande :
cd seeding/shares/
maketorrent-console http://torrent.trunat.fr/tracker.php/announce zenwalk-4.8.iso --comment "Image CD de la version 4.8 de Zenwalk - http://www.zenwalk.org/"
Vous déplacez le fichier torrent ainsi créé dans le répertoire seeding/torrents.
N'oubliez pas d'envoyer ce fichier .torrent sur votre tracker et de le rendre disponible aux personnes avec lesquelles vous souhaitez partager votre fichier.
Maintenant que vous avez votre fichier torrent, le plus important est de fournir votre fichier de données en continu. Vous pouvez le fournir à partir de votre ordinateur (d'autant plus si c'est un petit fichier qui se télécharge rapidement (quelques photos, des documents bureautiques, etc.)).
Seulement, si c'est une distribution Linux ou un film de vacances, vous aurez besoin d'un plus gros débit. Heureusement, il existe des serveurs et vous en possédez peut-être déjà un pour votre site internet.
Cela peut fonctionner sur un serveur mutualisé ou sur un serveur dédié. Sur un serveur mutualisé, vérifiez les règles de mutualisation, mais vous n'aurez certainement pas le DROIT de le faire. Sur un serveur dédié, c'est à vous : donc, vous y faites ce que vous voulez. :p
Avec le programme bittorrent que nous avons vu dans la partie précédente, nous avons une commande launchmany-curses qui nous permet de seeder correctement nos fichiers.
Ici, nous allons fixer un débit maximum de 200 kb/s.
Le problème, c'est que si vous lancez cela en SSH, vous ne pouvez pas fermer la connexion sans fermer le client BitTorrent.
Nous allons réaliser un fichier client_bittorrent.sh dans le dossier seeding.
#!/bin/sh
launchmany-curses --save_in /arborescence/de/seeding/shares/ --torrent_dir in /arborescence/de/seeding/torrents/ --max_upload_rate 204800
Nous allons ensuite utiliser la commande screen pour détacher la console du terminal. Voici comment fonctionne screen :
# Création de la console virtuelle avec le script à lancer
screen -dmS nom_console script_a_lancer
# Récupération de la commande virtuelle
screen -r nom_console
Si screen -dmS ne fonctionne pas, vous pouvez utiliser screen -l qui vous ouvre un shell virtuel. Vous lancez votre client et vous le détachez.