Aller au contenu

Utiliser un Raspberry Pi pour télécharger des fichiers BitTorrent

On peut faire une multitude de choses avec une carte Raspberry Pi comme par exemple : une console de jeu rétro, un petit serveur web, une station météo familiale,  de la programmation, de la domotique….  Comme le matériel est robuste, l’encombrement minimal et la consommation électrique très faible, pourquoi alors ne pas pas s’en servir pour créer un petit serveur de téléchargements et de partage de fichiers ?

Logo TransmissionJe vais donc vous expliquer ci-dessous :

  1. comment mettre en place un client de téléchargement BitTorrent,
  2. comment piloter ses téléchargements à distance
  3. comment déporter les fichiers téléchargés sur un support de stockage externe
  4. et comment les partager afin d’y accéder avec les autres machines de votre réseau.

Pour cela, nous allons utiliser le logiciel de téléchargement BitTorrent Open Source Transmission.

Avant de rentrer dans le vif du sujet, il vous faut quelques pré-requis indsipensables à savoir :

  • Un Raspberry Pi avec une distribution Raspbian ou similaire installée dessus (Ex : Raspbian Lite)
  • Une adresse IP fixe et l’accès SSH activé sur votre Raspberry Pi
  • Un support de stockage externe connecté en USB (ex: Disque dur ou Clé USB)

 

Première étape :

Installer le client et le daemon transmission :

On ouvre donc une session SSH (ex: avec Putty) et on se connecte en Root sur le Rasberry Pi.

# On commence d'abord par mettre à jour le système avec les commandes :

sudo apt-get update
sudo apt-get upgrade

# Puis on installe le Daemon Transmission :

sudo apt-get install transmission-daemon

Deuxième étape :

On branche son disque USB sur le Raspberry Pi,  on configure un point de montage automatique au démarrage du Raspberry Pi et on crée les répertoires qui seront utilisé par Transmission.

NB* : afin de faciliter le partage de fichiers et la compatibilité avec Windows, j’ai choisi le système de fichiers NTFS.

Il vous faudra donc formater votre support de stockage USB en NTFS,  un format propre aux systèmes Microsoft. (Profitez-en pour lui donner un nom évocateur ex: USBDisk). Comme c’est un format propriétaire, il faut installer un paquet spécifique pour que notre distribution Linux puisse écrire sur ce format :

# Pour gérer l'écriture en NTFS, on installe le paquet ntfs-3g :

sudo apt-get install ntfs-3g

# On branche notre support de stockage sur un port USB
# et on lance la détection des disques avec la commande :

sudo fdisk - l

# notre support externe apparaît normalement sous la forme : /dev/sda1
# On crée donc un répertoire dédié qui servira de point de montage :

sudo mkdir /media/USBDisk

# Il est ensuite possible de monter manuellement notre disque USB :

sudo mount -t ntfs-3g /dev/sda1 /media/USBDisk

# Mais, il est préférable de configurer un montage automatique
# du support à chaque démarrage du Raspberry Pi. 
# Pour cela, on édite avec Nano le fichier fstab :

sudo nano /etc/fstab

# et on y ajoute la ligne suivante :

/dev/sda1 /media/usb ntfs-3g rw, auto 0 0

# On enregistre

CTRL+O

# et on quitte Nano

CTRL+X

# Puis on redémarre le Raspberry Pi pour activer le montage automatique

sudo reboot

# Pour terminer on crée sur notre support USB
# les répertoires dédiés à Transmission :
sudo mkdir /media/USBDisk/downloads
sudo mkdir /media/USBDisk/downloads/complete
sudo mkdir /media/USBDisk/downloads/incomplete

Troisième étape :

Nous allons maintenant paramétrer Transmission, notre client BitTorrent en déclarant certaines directives dans le fichier de configuration “settings.json” comme : le port d’écoute BiTorrent, l’accès distant à l’interface web, les préférences de cryptage, le login et le mot de passe de connexion.

 # Première chose, on arrêt le service Transmission :

sudo /etc/init.d/transmission-daemon stop

# Et on édite le fichier de configuration avec Nano :

sudo nano /etc/transmission-daemon/settings.json

Modification du fichier de configuraion de Transmission

{
"alt-speed-down": 50,
"alt-speed-enabled": false,
"alt-speed-time-begin": 540,
"alt-speed-time-day": 127,
"alt-speed-time-enabled": false,
"alt-speed-time-end": 1020,
"alt-speed-up": 50,
"bind-address-ipv4": "0.0.0.0",
"bind-address-ipv6": "::",
"blocklist-enabled": false, # (peut être activé avec "true")
"blocklist-url": "http://www.example.com/blocklist", # (renseigner sa liste noire)
"cache-size-mb": 16, # (ajuster la mémoire cahe selon sa convenance ; ici : 16 Mo)
# (NB* : plus le cache est grand, plus on diminue les lectures/écritures sur le disque)
"dht-enabled": true,
"download-dir": "/media/USBDisk/downloads/complete", # (adapter selon son support USB)
"download-limit": 100,
"download-limit-enabled": 0,
"download-queue-enabled": true,
"download-queue-size": 5,
"encryption": 1, # (cryptage : 0=aucun, 1=si possible, 2=obligatoire)
"idle-seeding-limit": 2,
"idle-seeding-limit-enabled": true,
"incomplete-dir": "/media/USBDisk/downloads/incomplete", # (adapter selon son support USB)
"incomplete-dir-enabled": true,
"lpd-enabled": false,
"max-peers-global": 200,
"message-level": 1,
"peer-congestion-algorithm": "",
"peer-id-ttl-hours": 6,
"peer-limit-global": 200,
"peer-limit-per-torrent": 50,
"peer-port": 51413, # (port Torrent à configurer dans votre Box, routeur ou pare-feu)
"peer-port-random-high": 65535,
"peer-port-random-low": 49152,
"peer-port-random-on-start": false,
"peer-socket-tos": "default",
"pex-enabled": true,
"port-forwarding-enabled": false,
"preallocation": 1,
"prefetch-enabled": true,
"queue-stalled-enabled": true,
"queue-stalled-minutes": 30,
"ratio-limit": 2,
"ratio-limit-enabled": false,
"rename-partial-files": true,
"rpc-authentication-required": true,
"rpc-bind-address": "0.0.0.0",
"rpc-enabled": true,
"rpc-host-whitelist": "",
"rpc-host-whitelist-enabled": true,
"rpc-password": "mot de passe", # (saisir son mot de passe en clair)
# (il sera crypté ("hashé") dès le redémarrage de Transmission)
"rpc-port": 9091, # (choisir le port de connexion à l'interface web de Transmission)
"rpc-url": "/transmission/",
"rpc-username": "Login", # (choisir son login)
"rpc-whitelist": "127.0.0.1,192.168.*.*", # (renseigner les adresses IP autorisées à 
# accéder à l'interface web de Transmission)
"rpc-whitelist-enabled": false,
"scrape-paused-torrents-enabled": true,
"script-torrent-done-enabled": false,
"script-torrent-done-filename": "",
"seed-queue-enabled": false,
"seed-queue-size": 10,
"speed-limit-down": 100,
"speed-limit-down-enabled": false,
"speed-limit-up": 100,
"speed-limit-up-enabled": false,
"start-added-torrents": true,
"trash-original-torrent-files": false,
"umask": 18,
"upload-limit": 100,
"upload-limit-enabled": 0,
"upload-slots-per-torrent": 14,
"utp-enabled": true
}

Enregistrement des modifications et redémarrage du service Transmission

# On enregistre nos paramètres

CTRL+O

# On quitte l'éditeur Nano

CTRL+X

# Et on relance Transmission

sudo /etc/init.d/transmission-daemon start

 

Interface web de TransmissionDésormais, vous pouvez accéder à l’interface web de Transmission à partir des machines aux adresses IP déclarées dans la section “rpc-whitelist” du fichier précédemment configuré.

Pour cela, vous avez juste besoin d’un navigateur internet.

Ainsi, vous pourrez facilement gérer vos téléchargements à distance (ex : à partir de votre smartphone en sirotant une limonade au bord de la piscine). 😎

L’adresse à renseigner est la suivante : http://IP_De_Votre_RaspberryPi:9091  (exemple : http://192.168.0.200:9091).

 

Quatrième et dernière étape :

Créer un partage de notre support de stockage USB avec Samba pour que l’on puisse accéder aux fichiers téléchargés à partir d’autres postes.

# On installe donc samba avec les commandes suivantes :

sudo apt-get install samba samba-common-bin

# puis on édite le fichier de configuration de samba :

sudo nano /etc/samba/smb.conf

Dans le fichier de configuration de Samba, on rajoute tout à la fin les lignes suivantes :

[RASP_TORRENT_BOX] # (Nom de votre partage sur le réseau)
comment = Public Shares
path = /media/USBDisk/downloads # (chemin du dossier partagé sur votre support USB)
writeable = Yes  
only guest = Yes
create mask = 0777
directory mask = 0777
browseable = Yes
public = yes

On enregistre les modifications et on relance le service Samba

# On enregistre les paramètres

CTRL+O

# On quitte l'éditeur Nano

CTRL+X

# Et on redémarre Samba

sudo /etc/init.d/smbd restart

Partage SambaMaintenant, pour accéder à vos fichiers téléchargés, rien de plus simple, il vous suffit de parcourir le voisinage réseau de Windows pour faire apparaître votre répertoire partagé ou d’exécuter une recherche  sur l’adresse réseau : \\IP_ou_Nom_de_votre_Raspberry (ex: \\RASPBIAN\RASP_TORRENT_BOX).

Voilà, vous possédez maintenant une petite SeedBox économique que vous pouvez piloter à distance et qui, une fois les téléchargements lancés vous permettra de vaquer à d’autres occupations.

Pour finir, un petit mot pour préciser que même si le protocle BitTorrent est parfaitement légal, tous les téléchargements eux, ne le sont pas.

Merci donc de rester dans la légalité et de respecter les droits des auteurs, chanteurs, cinéastes, programmeurs, créateurs et autres pour qui le téléchargement illégal est une vraie plaie. 😉