Concepts

Ce billet vous explique ce qu'est une SeedBox et présente les applications et commandes Unix qui sont utilisés dans les billets suivants de ce blog.

Qu'est-ce qu'une SeedBox ?

Une SeedBox, que je traduits de façon totalement arbitraire par «Serveur de Partage Pair à Pair», est un serveur informatique qui est destiné à la réception et à l'envoi de fichiers informatiques. Elle utilise une technique d'échange Pair à Pair, Peer2Peer (P2P) en anglais, qui permet de maximiser l'utilisation de sa connexion Internet afin de réduire la durée de téléchargement du fichier. Elle a également pour but de fonctionner en continue pendant de très longues périodes.

Plus scientifiquement, une SeedBox est un serveur informatique qui télécharge un fichier à partir de plusieurs sources qui détiennent tout ou partie de ce fichier. Cette phase de téléchargement s'appelle le Leech ou littéralement "Sangsue". J'aime ben cette métahphore. C'est un peu violent comme terme mais c'est quand même un peu ce qui se passe. Durant cette phase de téléchargement, La SeedBox partagera également le fichier qu'elle a récupérée parciellement avec d'autres ordinateurs. Une fois le téléchargement terminé, la SeedBox continue à le partager avec les sources qui le demandent. Elle est alors en Seed. Lorsque la SeedBox est en train de télécharger ou de partager le fichier, elle est directement connectée aux sources qui la détiennent ou la demandent. On appelle cela des connexions Point à Point ou Peer To Peer en Anglais ce qui donne l'acronyme P2P. Et voilà !

En prenant la traduction littérale Seed qui veut dire Graine et Box pour Boîte, cela donne Boîte à graines. A première vue cette traduction peut paraitre bizarre mais, sur la base d'une métaphore, une graine pousse avec ce qu'on lui donne, en l'occurrence de la terre et de l'eau, puis donne à son tour ce qu'elle a produit. Cette métaphore me parait assez proche de la réalité car sur le principe s'est exactement comme ça que fonctionne une SeedBox.

A quoi sert une SeedBox.

Maintenant que l'on sait ce qu'est une SeedBox , on en déduit rapidement qu'un de ces usages les plus intéressant est l'échange de gros fichiers. Plus le fichier est gros et plus c'est intéressant de le récupérer de plusieurs sources en parallèle. On ne sollicitera pas une seule machine et cela permettra d'utiliser au mieux les capacités du réseau sur lequel la SeedBox est connectée. On évitera ainsi les goulets d'étranglement et le téléchargement sera plus rapide.

Comment marche une SeedBox.

Pour télécharger un fichier en P2P on va tout d'abord naviguer manuellement sur un site web qui référence un grand nombre de fichiers téléchargeables avec cette technique. Une fois que l'on a sélectionné le fichier que l'on souhaite télécharger, le site web va nous délivrer un fichier de toute petite taille dans un format particulier que l'on appelle Torrent. Encore une fois je trouve la métaphore sympathique car le mot torrent fait référence en Français à une rivière dont le débit est très rapide comme les torrents d'une montagne. Le fichier torrent contient une adresse web qui pointe sur une entrée d'un site web qui référence les sources qui détiennent le fichier demandé. On appelle ce site web le Tracker. On reste toujours dans le domaine de la métaphore avec ce mot qui veut dire Pister en Français. Et en effet cette URL va permettre au logiciel de P2P de la SeedBox de pister les sources qui détiennent le fichier. Une fois le fichier torrent récupéré on l'ajoute manuellement au logiciel de P2P de la SeedBox qui va se connecter aux Tracker qui lui fournira les sources qui le détiennent et le téléchargement démarre automatiquement. Le fichier torrent contient également des données, souvent cryptées, qui permettent d'identifier le ou les fichiers à récupérer, leur structure de rangement dans des dossiers ainsi que leurs données techniques pour que le logiciel de P2P puisse s'assurer à la fin du téléchargement que tous les fichiers ont bien été téléchargé complètement et sans erreur.

Où installer sa SeedBox.

Le premier réflex serait de se dire que si l'on possède déjà un ordinateur on installe la SeedBox dedans. C'est une très mauvaise idée et pour plusieurs raisons. La première, c'est que le principe du P2P est de partager et il faudrait donc que votre ordinateur fonctionne 24H sur 24 ce qui n'est pas toujours possible ou même souhaitable. La deuxième est beaucoup plus importante est que tout ordinateur est identifiable et localisable depuis l'Internet. Il existe des solutions qui permettent d'éviter cet inconvénient, comme le VPN, mais elles peuvent être compliquées à mettre en œuvre, sont contraignantes et sont aussi souvent payantes. Une autre raison est qu'en exposant un ordinateur sur Internent vous entrez alors dans un monde dans lequel les pirates sont légion et bien évidemment malveillants.

La solution la plus simple est donc de prendre un petit serveur en dehors de chez soi et de le dédier à cette fonction. On appelle ça une SeedBox. Il y a des solutions de location de serveur dédié à environ 10 € par mois qui font parfaitement l'affaire et qui en plus vous permettent de faire autre chose qu’une SeedBox avec cet ordinateur. Vous avez plein d'offres sur le web pour louer un serveur dédié.

Il n'est pas nécessaire de choisir une grosse machine, la plus petite pourra faire l'affaire. 1 CPU avec 2 cœurs, 4Go de RAM suffisent. Pour la taille du disque, ce n'est pas non plus la peine de choisir une grosse capacité. 100 Go suffiront amplement. Le but n'est pas d'avoir une bibliothèque de fichiers dans la SeedBox mais de conserver les fichiers suffisamment longtemps dans la SeedBox pour que vous ayez un équilibre entre le Leech et le Seed en envoyant au moins autant de données que vous en recevez.

Une fois les fichiers téléchargés en P2P sur votre SeedBox vous pourrez les télécharger anonymement et en toute sécurité chez vous dans votre box ou votre ordinateur en utilisant un autre moyen comme le transfert de fichier simple avec FTP. Il n'est donc pas nécessaire de les garder indéfiniment dans votre SeedBox.

Quel système d'exploitation choisir pour sa SeedBox.

Pour installer les logiciels nécessaires au bon fonctionnement de votre SeedBox , il vous faut un système d'exploitation. Comme ce n'est pas un ordinateur de bureau et qu'il a des capacités limitées, on ne peut pas installer dessus un système Windows. On ne peut pas non plus installer un système avec une interface graphique. Elle consomme trop de ressources et ça ne sert à rien pour une SeedBox. La solution la mieux adaptée est donc un système peu gourmant et sans interface graphique. Dans ce cas, un serveur de type Linux est la solution la mieux adaptée. Personnellement j'ai choisi la distribution Debian. Je ne sais pas si c'est le meilleur mais c'est celui avec lequel j'ai l'habitude de bidouiller et la communauté est importante ce qui facilite les réponses aux questions. Mais une distribution Ubuntu fera tout aussi bien l'affaire et mes explications seront réutilisables sur ce système car il utilise la même base Debian. Il faut cependant que votre loueur de serveur vous le propose dans sa liste d'installation possible. Sinon ce sera beaucoup plus compliqué si vous devez procéder à une installation entièrement manuelle. L'installation du système d'exploitation n'est pas détaillée ici car elle diffère en fonction des fournisseurs. Personnellement, lors de l'installation, je ne me suis pas posé de questions. J'ai fait... suivant... suivant... suivant... sans changer aucune option jusqu'à ce que l'installation s'exécute.

Comment accéder à sa SeedBox.

Lors de l'installation du serveur sur la SeedBox , un logiciel de communication sera également installé. Pour Debian et par défaut il s'agit du serveur OpenSSH. Une fois que la SeedBox est installée, vous pourrez donc y accéder en SSH. Pour cela, il vous faut une application qui émule un "Terminal" en mode caractère pour faire du SSH. Je dispose d'un Mac et il est livré en standard avec l'application Terminal. Pour Windows, vous pouvez installer Putty. J'ai remplacé sur mon Mac l'application terminal par l'application Termius qui n'est pas payante pour faire du SSH. Je la trouve pratique et facile à utiliser. Elle existe aussi pour Windows.

Lors de l'installation de la SeedBox , un nom pour le serveur vous aura été proposé ainsi qu'un identifiant utilisateur et son mot de passe. C'est avec ce nom de serveur, ce compte et ce mot de passe que vous pourrez vous connecter en SSH sur votre SeedBox. Cependant, toute communication avec un ordinateur nécessite en plus du nom que l'on fournisse un N° de port de communication. Chaque type de communication dispose d'un numéro de port qui lui est dédié. On ne peut donc communiquer avec un autre ordinateur que si l'on connait son nom et le N° de port qu'il utilise pour la communication que vous établissez avec lui. Si vous ne l'indiquez pas, le port par défaut associé au type sera utilisé. Pour SSH, c'est le N° 22.

Les pirates informatiques connaissent parfaitement tous les ports de communication par défaut et une des premières choses qu'ils essayent de savoir c'est si le port N° 22 est accessible. Si c'est le cas, ils vont tenter de se connecter en SSH en boucle sur votre SeedBox jusqu'à ce qu'il trouve le compte et le mot de passe de connexion. Ils ont des robots pour faire ça tout seul en continu, jour et nuit. Le souci c'est que même si votre compte de connexion et son mot de passe associé sont complexes, cela va mettre à mal votre SeedBox et votre fournisseur de serveur ne va pas non plus apprécier. La première chose qu'il faut donc faire sur votre SeedBox après son installation c'est de modifier le port de communication du SSH et d'activer un pare-feu pour empêcher de se connecter sur un autre port de communication que celui que vous aurez défini. De cette manière les pirates ne sauront pas facilement quel port de communication sont ouverts et encore moins à quoi ils servent.

Comment administrer sa SeedBox.

Comme votre SeedBox n'a pas d'interface graphique, toutes les opérations devront se faire en ligne de commande via votre Terminal. Vous vous connectez d'abord en SSH sur la SeedBox. Vous saisissez ensuite via votre connexion SSH toutes les lignes de commandes qui permettront de mettre en place les logiciels dont vous aurez besoin. Tout ce qui suit dans les différents billets de cette série de tutoriels sont donc des lignes de commandes et des modifications de fichier que l'on réalise avec des éditeurs que l'on lance en ligne de commande. Vous êtes prévenu.

Installation et mise à jour des logiciels.

Les billets de ce blog font appel à des logiciels qui pour certains seront déjà présents par défaut dans le système que vous avez installé et pour d'autres devront être installés manuellement.

Pré requis à l'installation.

Lors de l'installation d'un nouveau logiciel, il vaut mieux s'assurer que l'on installera la version la plus récente. Afin de s'en assurer, utilisez la commande...

sudo apt update

Cette commande indique également la liste des mises à jour disponibles pour les logiciels qui sont déjà installés. Vous pouvez consulter la liste des logiciels qui peuvent être mis à jour avec la commande...

sudo apt list --upgradable

Une fois la liste des logiciels mises à jour avec leurs dernières versions, vous les mettre à jour avec la commande...

sudo apt full-upgrade

Je préfère l'utilisation de l'option full-upgrade plutôt que l'utilisation de l'option upgrade car elle permet, dans le cas où la mise à jour d'un logiciel est incompatible avec un logiciel installé, de désinstaller le logiciel incompatible avant de mettre à jour le logiciel demandé. Si l'on utilise l'option upgrade, dans le même contexte, la mise à jour du logiciel ne se fera pas.

Il existe aussi l'option dist-upgrade qui permet de mettre les paquets de base Linux et donc de monter de version Linux. Mais il est fortement recommandé de procéder à une sauvegarde du système avant d'exécuter cette option.

Installation des logiciels.

Si l'on a récupéré une liste des mises à jour de logiciels avec la commande 'apt udpate', On peut lancer l'installation des logiciels avec la commande...

sudo apt install nom_du_logiciel

Plusieurs logiciels peuvent être installés avec une seule commande en spécifiant après l'option install le nom de chaque logiciel séparé par un espace.

Lors de l'installation si des logiciels dépendants doivent aussi être installés, ils seront automatiquement installés mais une confirmation de l'installation sera alors demandée.

Logiciels requis.

Les logiciels qui sont nécessaires au bon fonctionnement de la SeedBox sont :

Logiciel Description
openssh-server Serveur shell sécurisé (SSH) pour l'accès à distance avec un terminal.
vsftpd Serveur FTP sécurisé pour le tansfert de fichiers.
transmission-daemon Client Bit Torrent pour le téléchargement de fichiers en P2P

Logiciels utiles.

Certains logiciels sont très utiles pour s'assurer du bon fonctionnement de la SeedBox ou pour obtenir des informations.

Logiciel Description
net-tools Boite à outils pour le réseau
htop Outil de visualisation de processus.

Gestion des services.

La plupart des logiciels utilisés dans ces billets s'exécutent en permanence sur le système. On dit qu'ils s'exécutent en tâche de fond. Pour les géer on dispose d'un outil de pilotage centralisé nommé sysyemctl.

L'exécution de la commande systemctl se fait sous la forme...

sudo systemctl commande_a_executer nom_du_service

Pour plus d'information, vous pouvez consulter ce tutoriel très bien fait.

Et maintenant ?

Maintenant que vous avez compris les concepts d'une SeedBox et vus les logiceils qui permettent de la piloter et de la faire fonctionner, vous pouvez lire les pages qui décrivent la mise en œeuvre da chacun des logiciels nécessaires à son bon fonctionnement.

Previous Post