Serveur de torrents sur Raspberry Pi sous Archlinux

Il est assez simple, sous réserve de procéder calmement et de manière ordonnée, de transformer un Raspberry Pi en serveur/téléchargeur de fichiers BitTorrent (torrents) et d’en faire un essaimeur (seedbox).

Il y a pour cela plusieurs possibilités offertes à qui dispose d’un Raspberry Pi qui peut être dédié à ce seul usage.

Dans la continuité de l’installation de la distribution Arch Linux pour laquelle j’ai publié il y a quelques temps mon aide-mémoire, j’ai choisi d’utiliser le client Transmission, associé pour automatiser le fonctionnement du serveur à l’application Flexget.

Voici en quelques mots et à toutes fins utiles la manière dont j’ai procédé (avec succès).

Installation de Transmission

Transmission est un client BiTorrent léger, c’est à dire un outil de téléchargement de torrents. Sous Arch Linux, il est disponible sous plusieurs formes dans les dépôts :

  • transmission-cli, qui comprend le client, les outils permettant de le faire tourner en tant que daemon et un client Web ;
  • transmission-gtk et transmission-qt, deux interfaces graphiques utilisateur, pour GTK et Qt, comme leur nom l’indique.

C’est le paquet transmission-cli qui nous intéresse, le projet consistant à réaliser un serveur administré à distance, c’est à dire sans écran et donc sans interface graphique utilisateur (headless).

Connection au Raspberry Pi et mise à jour du système

On se connecte au raspberry via SSH entant qu’utilisateur root :

$ ssh root@X.X.X.X

(où X.X.X.X est l’adresse IP du Raspberry Pi, par exemple sur le réseau local).

On met à jour le système et la liste des dépôts :

# pacman -Syu

Installation du paquet transmission-cli

# pacman -S transmission-cli

Configuration de Transmission

Le fichier de configuration de Transmission se nomme settings.json, il se trouve dans le répertoire :
~/.config/transmission-daemon/ .

Par défaut, le daemon tourne en tant qu’utilisateur transmission. Le répertoire par défaut de l’utilisateur transmission est /var/lib/transmission/ : le fichier de configuration settings.json à éditer se trouve donc dans /var/lib/transmission/.config/transmission-daemon/ . Si ce répertoire n’existe pas encore, il suffit de lancer transmission une première fois pour le créer :

# systemctl start transmission

Il faut impérativement arrêter le daemon avant d’éditer le fichier de configuration, faute de quoi les modifications ne seraient pas prises en compte.

# systemctl stop transmission

Installation de transmission-remote

Pour pouvoir installer et utiliser Flexget (voir ci-dessous), il faut installer un paquet complémentaire qui permet de piloter le client en ligne de commande : transmission-remote. Cet outil est également utile si l’on veut effectuer automatiquement et à intervalles réguliers des tâches de maintenance et d’administration de Transmission, par exemple en planifiant ces tâches dans le crontab d’un utilisateur.

# pacman -S transmission-remote-cli

Transmission est désormais fonctionnel, il suffit de le redémarrer :

# systemctl restart transmission

Pour que Transmission démarre automatiquement en tâche de fond à chaque démarrage du système (et sans qu’il soit besoin pour un utilisateur de se connecter à la machine), il suffit d’activer ce service :

# systemctl enable transmission

Cette manoeuvre est réversible en utilisant la commande :

# systemctl disable transmission

Pour ajouter des torrents et gérer les principaux paramètres, une interface Web est disponible à :

http://X.X.X.X:9091

X.X.X.X correspond à l’adresse IP du Raspberry Pi sur lequel Transmission est installé. Depuis une machine située dans le réseau local, l’accès ne nécessite que les nom d’utilisateur et mot de passe indiqués dans le fichier de configuration. 9091 est le port par défaut à utiliser sauf si un autre port a été spécifié dans le fichier de configuration. Pour accéder à l’interface Web depuis l’extérieur du réseau local, il faut ouvrir le port 9091.

L’utilisation de l’interface Web de Transmission est d’un accès facile et sa prise en main rapide, notamment pour les utilisateurs d’Ubuntu, distribution dans laquelle Transmission est embarqué par défaut en version interface graphique utilisateur.

Installation de Flexget

Flexget est un outil puissant pour fureter sur le Web et y télécharger « automatiquement » à peu près tout ce qu’il est possible de télécharger, et en particulier des torrents. C’est une application programmée en python qui s’exécute en ligne de commande, et qui est principalement destinée à être exécutée à intervalles réguliers sous forme de tâches planifiées grâce à crontab.

L’installation est bien documentée (en anglais) sur le site Web dédié à Flexget, il suffit de suivre le mode d’emploi pas à pas :

Se connecter au Raspberry Pi en tant que root via SSH :

$ ssh root@X.X.X.X

Installer Python 2 :

# pacman -S python2

Installer transmissionrpc :

# pacman -S pytransmissionrpc

Installer Pip :

# pacman -S python2-pip

Installer Flexget :

# pip2 install flexget

Vérifier la version installée :

# flexget -V

Tout le reste peut être réalisé par un utilisateur standard : à partir de cette étape, il n’est plus nécessaire de disposer des privilèges d’administrateur (root).

Configuration et planification des tâches de Flexget

Flexget, comme indiqué plus haut, est conçu pour être exécuté depuis un crontab utilisateur, à intervalles réguliers.

Les tâches confiées à flexget sont pour la quasi-totalité définies dans un fichier de configuration nommé config.yml. Ce fichier de configuration doit de préférence être placé dans un répertoire .flexget créé dans le répertoire home de l’utilisateur qui l’exécute (ou dont le crontab prévoit de l’exécuter à intervalles réguliers) : ~/.flexget/ .

pour comprendre comment éditer le fichier config.yml, on ne peut éviter la (longue et attentive) lecture du mode d’emploi pour débuter (en anglais).

Une réflexion sur « Serveur de torrents sur Raspberry Pi sous Archlinux »

  1. Ping : Archlinux sur Raspberry Pi : redimensionner simplement les partitions de la carte SD | Carnet

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.