{"id":1535,"date":"2013-07-03T14:43:29","date_gmt":"2013-07-03T13:43:29","guid":{"rendered":"https:\/\/www.azurs.net\/carnet\/?p=1535"},"modified":"2025-10-22T11:59:11","modified_gmt":"2025-10-22T09:59:11","slug":"seedbox-sur-raspberry-pi-sous-archlinux","status":"publish","type":"post","link":"https:\/\/www.azurs.net\/carnet\/2013\/07\/seedbox-sur-raspberry-pi-sous-archlinux\/","title":{"rendered":"Serveur de torrents sur Raspberry Pi sous Archlinux"},"content":{"rendered":"<p>Il est assez simple, sous r\u00e9serve de proc\u00e9der calmement et de mani\u00e8re ordonn\u00e9e, de transformer un Raspberry Pi en serveur\/t\u00e9l\u00e9chargeur de fichiers BitTorrent (torrents) et d&rsquo;en faire un <em>essaimeur<\/em> (<em>seedbox<\/em>).<\/p>\n<p>Il y a pour cela plusieurs possibilit\u00e9s offertes \u00e0 qui dispose d&rsquo;un Raspberry Pi qui peut \u00eatre d\u00e9di\u00e9 \u00e0 ce seul usage.<\/p>\n<p>Dans la continuit\u00e9 de l&rsquo;<a href=\"https:\/\/www.azurs.net\/carnet\/2013\/03\/arch-linux-sur-raspberry-pi-installation\/\" title=\"Arch linux sur Raspberry Pi : installation\">installation de la distribution Arch Linux<\/a> pour laquelle j&rsquo;ai publi\u00e9 il y a quelques temps mon aide-m\u00e9moire, j&rsquo;ai choisi d&rsquo;utiliser le client Transmission, associ\u00e9 pour automatiser le fonctionnement du serveur \u00e0 l&rsquo;application Flexget.<\/p>\n<p>Voici en quelques mots et \u00e0 toutes fins utiles la mani\u00e8re dont j&rsquo;ai proc\u00e9d\u00e9 (avec succ\u00e8s).<\/p>\n<p><!--more--><\/p>\n<h2>Installation de Transmission<\/h2>\n<p><em>Transmission<\/em> est un <em>client BiTorrent<\/em> l\u00e9ger, c&rsquo;est \u00e0 dire un outil de t\u00e9l\u00e9chargement de torrents. Sous <em>Arch Linux<\/em>, il est disponible sous plusieurs formes dans les d\u00e9p\u00f4ts :<\/p>\n<ul>\n<li><strong>transmission-cli<\/strong>, qui comprend le client, les outils permettant de le faire tourner en tant que <a href=\"http:\/\/fr.wikipedia.org\/wiki\/Daemon_%28informatique%29\">daemon<\/a> et un client Web&nbsp;;<\/li>\n<li><strong>transmission-gtk<\/strong> et <strong>transmission-qt<\/strong>, deux interfaces graphiques utilisateur, pour GTK et Qt, comme leur nom l&rsquo;indique.<\/li>\n<\/ul>\n<p>C&rsquo;est le paquet <strong>transmission-cli<\/strong> qui nous int\u00e9resse, le projet consistant \u00e0 r\u00e9aliser un serveur administr\u00e9 \u00e0 distance, c&rsquo;est \u00e0 dire sans \u00e9cran et donc sans interface graphique utilisateur (<em>headless<\/em>).<\/p>\n<h3>Connection au Raspberry Pi et mise \u00e0 jour du syst\u00e8me<\/h3>\n<p>On se connecte au raspberry via SSH entant qu&rsquo;utilisateur root :<\/p>\n<p><code>$ ssh root@X.X.X.X<\/code><\/p>\n<p>(o\u00f9 <em>X.X.X.X<\/em> est l&rsquo;adresse IP du Raspberry Pi, par exemple sur le r\u00e9seau local).<\/p>\n<p>On met \u00e0 jour le syst\u00e8me et la liste des d\u00e9p\u00f4ts :<\/p>\n<p><code># pacman -Syu<\/code><\/p>\n<h3>Installation du paquet transmission-cli<\/h3>\n<p><code># pacman -S transmission-cli<\/code><\/p>\n<h3>Configuration de Transmission<\/h3>\n<p>Le fichier de configuration de Transmission se nomme settings.json, il se trouve dans le r\u00e9pertoire :<br \/>\n<code>~\/.config\/transmission-daemon\/<\/code> .<\/p>\n<p>Par d\u00e9faut, le daemon tourne en tant qu&rsquo;utilisateur transmission. Le r\u00e9pertoire par d\u00e9faut de l&rsquo;utilisateur transmission est <code>\/var\/lib\/transmission\/<\/code> : le fichier de configuration settings.json \u00e0 \u00e9diter se trouve donc dans <code>\/var\/lib\/transmission\/.config\/transmission-daemon\/<\/code> . Si ce r\u00e9pertoire n&rsquo;existe pas encore, il suffit de lancer transmission une premi\u00e8re fois pour le cr\u00e9er :<\/p>\n<p><code># systemctl start transmission<\/code><\/p>\n<p><strong>Il faut imp\u00e9rativement arr\u00eater le daemon avant d&rsquo;\u00e9diter le fichier de configuration, faute de quoi les modifications ne seraient pas prises en compte.<\/strong><\/p>\n<p><code># systemctl stop transmission<\/code><\/p>\n<h3>Installation de transmission-remote<\/h3>\n<p>Pour pouvoir installer et utiliser Flexget (voir ci-dessous), il faut installer un paquet compl\u00e9mentaire qui permet de piloter le client en ligne de commande : <strong>transmission-remote<\/strong>. Cet outil est \u00e9galement utile si l&rsquo;on veut effectuer automatiquement et \u00e0 intervalles r\u00e9guliers des t\u00e2ches de maintenance et d&rsquo;administration de Transmission, par exemple en planifiant ces t\u00e2ches dans le crontab d&rsquo;un utilisateur.<\/p>\n<p><code># pacman -S transmission-remote-cli<\/code><\/p>\n<p>Transmission est d\u00e9sormais fonctionnel, il suffit de le red\u00e9marrer :<\/p>\n<p><code># systemctl restart transmission<\/code><\/p>\n<p>Pour que Transmission d\u00e9marre automatiquement en t\u00e2che de fond \u00e0 chaque d\u00e9marrage du syst\u00e8me (et sans qu&rsquo;il soit besoin pour un utilisateur de se connecter \u00e0 la machine), il suffit d&rsquo;activer ce service :<\/p>\n<p><code># systemctl enable transmission<\/code><\/p>\n<p>Cette manoeuvre est r\u00e9versible en utilisant la commande :<\/p>\n<p><code># systemctl disable transmission<\/code><\/p>\n<p>Pour ajouter des torrents et g\u00e9rer les principaux param\u00e8tres, une interface Web est disponible \u00e0 :<\/p>\n<p><code>http:\/\/X.X.X.X:9091<\/code><\/p>\n<p><em>X.X.X.X<\/em> correspond \u00e0 l&rsquo;adresse IP du Raspberry Pi sur lequel Transmission est install\u00e9. Depuis une machine situ\u00e9e dans le r\u00e9seau local, l&rsquo;acc\u00e8s ne n\u00e9cessite que les nom d&rsquo;utilisateur et mot de passe indiqu\u00e9s dans le fichier de configuration. <em>9091<\/em> est le port par d\u00e9faut \u00e0 utiliser sauf si un autre port a \u00e9t\u00e9 sp\u00e9cifi\u00e9 dans le fichier de configuration. Pour acc\u00e9der \u00e0 l&rsquo;interface Web depuis l&rsquo;ext\u00e9rieur du r\u00e9seau local, il faut ouvrir le port 9091.<\/p>\n<p>L&rsquo;utilisation de l&rsquo;interface Web de Transmission est d&rsquo;un acc\u00e8s facile et sa prise en main rapide, notamment pour les utilisateurs d&rsquo;Ubuntu, distribution dans laquelle Transmission est embarqu\u00e9 par d\u00e9faut  en version interface graphique utilisateur.<\/p>\n<h2>Installation de Flexget<\/h2>\n<p><strong>Flexget<\/strong> est un outil puissant pour fureter sur le Web et y t\u00e9l\u00e9charger \u00ab automatiquement \u00bb \u00e0 peu pr\u00e8s tout ce qu&rsquo;il est possible de t\u00e9l\u00e9charger, et en particulier des torrents. C&rsquo;est une application programm\u00e9e en <a href=\"http:\/\/www.python.org\/\">python<\/a> qui s&rsquo;ex\u00e9cute en ligne de commande, et qui est principalement destin\u00e9e \u00e0 \u00eatre ex\u00e9cut\u00e9e \u00e0 intervalles r\u00e9guliers sous forme de t\u00e2ches planifi\u00e9es gr\u00e2ce \u00e0 crontab.<\/p>\n<p>L&rsquo;installation est bien document\u00e9e (en anglais) sur <a href=\"http:\/\/flexget.com\/\">le site Web d\u00e9di\u00e9 \u00e0 Flexget<\/a>, <a href=\"http:\/\/flexget.com\/wiki\/InstallWizard\/Linux\">il suffit de suivre le mode d&#8217;emploi pas \u00e0 pas<\/a> :<\/p>\n<p>Se connecter au Raspberry Pi en tant que root via SSH :<\/p>\n<p><code>$ ssh root@X.X.X.X<\/code><\/p>\n<p>Installer Python 2 :<\/p>\n<p><code># pacman -S python2<\/code><\/p>\n<p>Installer transmissionrpc :<\/p>\n<p><code># pacman -S pytransmissionrpc<\/code><\/p>\n<p>Installer Pip :<\/p>\n<p><code># pacman -S python2-pip<\/code><\/p>\n<p>Installer Flexget :<\/p>\n<p><code># pip2 install flexget<\/code><\/p>\n<p>V\u00e9rifier la version install\u00e9e :<\/p>\n<p><code># flexget -V<\/code><\/p>\n<p>Tout le reste peut \u00eatre r\u00e9alis\u00e9 par un utilisateur standard : \u00e0 partir de cette \u00e9tape, il n&rsquo;est plus n\u00e9cessaire de disposer des privil\u00e8ges d&rsquo;administrateur (root).<\/p>\n<h3>Configuration et planification des t\u00e2ches de Flexget<\/h3>\n<p>Flexget, comme indiqu\u00e9 plus haut, est con\u00e7u pour \u00eatre ex\u00e9cut\u00e9 depuis un crontab utilisateur, \u00e0 intervalles r\u00e9guliers.<\/p>\n<p>Les t\u00e2ches confi\u00e9es \u00e0 flexget sont pour la quasi-totalit\u00e9 d\u00e9finies dans un fichier de configuration nomm\u00e9 <strong>config.yml<\/strong>. Ce fichier de configuration doit de pr\u00e9f\u00e9rence \u00eatre plac\u00e9 dans un r\u00e9pertoire .flexget cr\u00e9\u00e9 dans le r\u00e9pertoire home de l&rsquo;utilisateur qui l&rsquo;ex\u00e9cute (ou dont le crontab pr\u00e9voit de l&rsquo;ex\u00e9cuter \u00e0 intervalles r\u00e9guliers) : <code>~\/.flexget\/<\/code> .<\/p>\n<p>pour comprendre comment \u00e9diter le fichier config.yml, on ne peut \u00e9viter la (longue et attentive) lecture du <a href=\"http:\/\/flexget.com\/wiki\/Configuration\">mode d&#8217;emploi pour d\u00e9buter (en anglais)<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Conseils pour transformer un Raspberry Pi en serveur de torrents en installant Transmission et Flexget sous Archlinux ARM.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[395],"tags":[249,268,267,266],"class_list":["post-1535","post","type-post","status-publish","format-standard","hentry","category-bidouillages","tag-archlinux","tag-flexget","tag-seedbox","tag-torrents"],"share_on_mastodon":{"url":"","error":""},"_links":{"self":[{"href":"https:\/\/www.azurs.net\/carnet\/wp-json\/wp\/v2\/posts\/1535","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.azurs.net\/carnet\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.azurs.net\/carnet\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.azurs.net\/carnet\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.azurs.net\/carnet\/wp-json\/wp\/v2\/comments?post=1535"}],"version-history":[{"count":18,"href":"https:\/\/www.azurs.net\/carnet\/wp-json\/wp\/v2\/posts\/1535\/revisions"}],"predecessor-version":[{"id":1809,"href":"https:\/\/www.azurs.net\/carnet\/wp-json\/wp\/v2\/posts\/1535\/revisions\/1809"}],"wp:attachment":[{"href":"https:\/\/www.azurs.net\/carnet\/wp-json\/wp\/v2\/media?parent=1535"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.azurs.net\/carnet\/wp-json\/wp\/v2\/categories?post=1535"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.azurs.net\/carnet\/wp-json\/wp\/v2\/tags?post=1535"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}