03 Mai

Seedbox basée sur Transmission

Le but de ce post est de déployer sur son serveur dédié une seedbox. Pour ceux qui ne connaissent pas, une seedbox est un serveur privé utilisé pour le partage de fichiers numériques. L’avantage d’utiliser un serveur dédié est de disposer d’une bande passante importante (100Mbps ou plus) et symétrique, ce qui permet des chargements et/ou de diffuser (seed) ses propres fichiers très rapidement. Je sais on trouve déjà pas mal de tutos sur le net, mais là il s’agit de ne pas faire les choses à moitié. Je propose ici de mettre en place :

  • une seedbox basée sur le protocole BitTorrent
  • une interface web de contrôle
  • h5ai, une interface web « clean » pour le rapatriement de fichiers
  • le tout sécurisé par contrôle d’accès et chiffrement SSL

Et afin de créer le meilleur tuto possible, toutes les configurations ont été passées sur un VPS Classic d’OVH à 2.39€ par mois fraîchement installé. J’ai même utilisé Dyn pour faire pointer le dns seedbox-bt.writesthisblog.com sur le VPS. Ne cherchez pas, au moment où vous lirez ces lignes, le domaine n’existera plus et le vps aura été reformaté. En attendant, soyez assuré que toute la configuration fonctionne, au nom de domaine près que vous aurez à changer bien évidemment. Question performances, j’ai obtenu sans problème des pointes de download à 12Mo/s, tout dépend, bien sûr, de la popularité du torrent.

Environnement

OS : Debian 7.5 stable (Wheezy) 64bits
Nginx : nginx/1.2.1
PHP : 5.4.4
Transmission : 2.52

Pré-Requis

Quelques packages nécessaires à l’installation complète de la seedbox.

J’ai essayé de garder les packages à installer au strict minimum ce qui me semble une bonne pratique. Unzip et apache2-utils peuvent être enlevés une fois l’installation terminée.

Installation de Transmission

La première étape consiste à installer Transmission. Il s’agit d’un client BitTorrent léger et open-source. Debian wheezy fourni dans ses repository la version 2.52 à l’heure où j’écris ces lignes. L’installation est donc très simple, il vous suffit de passer les lignes suivantes dans le shell:

Les paramètres de configurations se trouvent dans le fichier /var/lib/transmission-daemon/info/settings.json. Vous pouvez les modifier en fonction de vos besoins et de la capacité du serveur, mais seulement deux sont importants à changer ici :

Il ne vous reste plus qu’à recharger la configuration avec un service transmission-daemon reload. Attention à ne pas utiliser un restart ou stop avant, sous peine d’écraser vos modifications ! La commande suivante vous permet de confirmer le bon fonctionnement :

L’interface de transmission écoute sur le port 9091 et il est très important qu’elle soit liée au localhost (127.0.0.1) pour des raisons de sécurité.

Installation Web h5ai

Nous allons maintenant installer l’interface web h5ai qui servira à récupérer, via son navigateur, les fichiers téléchargés. Sur ce lien se trouve un exemple de h5ai, c’est beau non? Et oui, elle génère aussi des QR Code !! Ceci dit, elle pose quelques difficultés pour la configuration web, notamment, elle ne supporte pas du tout les alias et configurations un peu évoluées. Il faut donc la charger directement à l’intérieur du répertoire de « download » de transmission avec pour « root directory » le répertoire contenant « download ».

La configuration par défaut est bonne telle quelle. Mais on peut toujours aller l’ajuster, selon ses goûts, dans le fichier /var/lib/transmission-daemon/downloads/_h5ai/conf/options.json.

Pré-requis Nginx pour la Sécurité

Il s’agit maintenant de créer les certificats SSL et le fichier de mots de passe pour contrôler l’accès en https à l’interface web de la seedbox. Dans ce tuto, ils sont placés dans le répertoire /etc/nginx/secu/.

Pour créer les mots de passe, j’utilise htpasswd fourni dans le package debian apache2-utils. L’option -c crée le fichier contenant les mots de passe. Enlevez l’option -c pour rajouter des utilisateurs supplémentaires, sous peine d’écraser les précédents déjà saisis. Cela permet un meilleur contrôle si vous partagez votre seedbox, les noms des utilisateurs apparaissant dans les logs nginx. De plus, les révocations sont simples, il suffit d’éditer le fichier avec nano ou vi.


Je vous renvoie à ce précédent tuto pour plus de détails concernant la création des certificats.


On ne le répétera jamais assez, les mots de passe et certificats n’ont d’intérêt que s’il restent privés. Il ne doivent donc être lisibles que par l’utilisateur root ou le process nginx.

Configuration Nginx

Quelques explications concernant cette configuration à placer dans le fichier /etc/nginx/sites-available/transmission

  • Le premier bloc server, qui écoute sur le port 80, permet de transformer les requêtes http en https
  • Les auth_basic permettent l’authentification par mots de passe
  • Les 3 premiers blocs location passent les requêtes vers l’interface transmission
  • Le bloc location ~ \.php interprête le code php de h5ai
  • Le bloc location /downloads permet d’afficher le contenu du répertoire downloads

Il ne vous reste plus qu’à désactiver le serveur par défaut de nginx et activer la configuration de votre seedbox.

Resultats

Vous pouvez maintenant aller dans votre navigateur préféré et vous connecter à votre seedbox avec les urls seedbox-bt.writesthisblog.com pour obtenir l’interface de transmission:

Interface Transmission

Et seedbox-bt.writesthisblog.com/downloads pour récupérer les fichiers.

seedbox_interface_h5ai

Transmission Remote GUI

Transmission Remote GUI permet de contrôler depuis une GUI locale transmission. Elle fonctionne bien sûr avec notre configuration. Il suffit d’activer le SSL et définir le « RPC Path » comme /rpc

transmission_remote_gui

Portabilité sur les autres Linux

Ces configurations sont assez indépendantes du linux utilisé. Je les ai testées ici sur un VPS, mais j’utilise une config très similaire sur mon serveur dédié physique sans aucun problème. Sans aller jusqu’à y mettre ma main à couper, je pense que cela devrait aussi fonctionner tel quel sur Ubuntu. Par contre, pour les autres versions CentOS, Gentoo, Fedora, etc. il n’est pas impossible qu’il y ait quelques adaptations à faire, notamment sur les répertoires utilisés par transmission.

Pour Aller plus Loin

Firewall et iptables: les ports à ouvrir sur la seedbox sont 80/tcp et 443/tcp pour nginx, et 51413 en upd/tcp et IPv4/v6 pour Transmission par défaut.

Vous l’aurez constaté, la version de transmission dans les packages debian (2.52) présente quelques erreurs d’affichage corrigées à la version 2.70. En attendant, on peut les corriger manuellement (tickets #4987 et #5008) avec:

Il manque quelques fonctionnalités à l’interface h5ai, vous pouvez le constater en allant sur seedbox-bt.writesthisblog.com/downloads/_h5ai/index.html. Elles sont optionnelles, mais si vous souhaitez les rajouter :
Pour le cache

Pour les « Images Thumbs » et le « Shell Zip »

Pour les « PDF Thumb » (assez volumineux)

Pour les « Movie thumbs » (assez volumineux)

Paramètres de Transmission
La quasi totalité des paramètres de transmission sont accessibles depuis l’interface web. Je pense que ceux par défaut ne sont pas trop mal pour un VPS, je recommanderais juste de définir le Stop seeding at ratio à une valeur de votre choix. Par contre, n’hésitez pas à augmenter dans le fichier /var/lib/transmission-daemon/info/settings.json la valeur du cache pour optimiser les I/O disques:

Vous pouvez aussi changer les ports par défaut de transmission, voir utiliser des ports aléatoires. Le port 51413 de transmission est connu et votre hébergeur ne manquera pas de le voir dans ses statistiques réseau. par contre, n’oubliez pas d’adapter votre configuration iptables en conséquence.

Pour Conclure

Vous avez maintenant une seedbox à disposition et assez bien sécurisée pour 2,39€ par mois. Et je dois avouer avoir été agréablement surpris par les débits réels proche des 100 Mbps même si l’espace disque disponible se limite à 9,4Go une fois tout installé. Bien sûr, vous pouvez toujours upgrader votre VPS, ceci dit, vu les premiers prix des offres Kimsufi, autant passer rapidement à un véritable serveur dédié avec 500Go de disque dur et de meilleures performances.
Et bien sûr, cela va sans dire, vous êtes priés de ne partager que du contenu légal !!

Une pensée sur “Seedbox basée sur Transmission

    • En même temps, avec un serveur dédié, on peut faire bien plus qu’une simple seedbox, serveur web, teamspeak, etc ! Mais effectivement, pour un débutant avec un besoin limité à une seedbox, ce genre de solution est plus que satisfaisant.

Laisser un commentaire

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