Une SeedBox est un serveur dédié sur lequel vous allez pouvoir envoyer/télécharger des fichiers en tout genre (vidéos/documents/images…). Votre serveur va se charger de récupérer le fichier via torrent et ensuite, vous venez le récupérer quand ça vous arrange en téléchargement direct (FTP/HTTP…).
Il existe des SeedBox clé en main que vous pouvez louer. Ici nous allons voir comment installer sa propre SeedBox sur son serveur dédié. Nous utiliserons RuTorrent sous Debian 10.
Pour pouvoir installer notre SeedBox, nous aurons besoin d’un serveur Debian à jour et d’un nom de domaine. Vous pouvez aller voir mon tutoriel sur comment installer Debian en cliquant ici. N’hésitez pas à prendre la dernière version de Debian, pour ce tutoriel j’ai utilisé la version 10.8.
Ensuite pensez à mettre à jour votre serveur, voici les dépôts que j’ai utilisés dans mon fichier « sources.list » :
deb http://deb.debian.org/debian buster main contrib non-free
deb-src http://deb.debian.org/debian buster main contrib non-free
deb http://deb.debian.org/debian-security/ buster/updates main contrib non-free
deb-src http://deb.debian.org/debian-security/ buster/updates main contrib non-free
deb http://deb.debian.org/debian buster-updates main contrib non-free
deb-src http://deb.debian.org/debian buster-updates main contrib non-free
Il va falloir installer toutes les dépendances nécessaires pour que RuTorrent fonctionne. Pour commencer, RuTorrent a besoin de PHP pour fonctionner.
1- Installation de PHP
Nous allons récupérer la dernière version de PHP qui est à l’heure de ce tutoriel la version 7.4. Pour ce faire, nous devons récupérer les « sources list » de sury. Téléchargeons les clés GPG via les deux commandes suivantes :
apt-get -y install lsb-release apt-transport-https ca-certificates
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
Ensuite, nous pouvons ajouter les « sources list » contenant php7.4 avec la commande :
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/php.list
On met à jour la liste des dépôts disponibles via la commande :
apt-get update
On installe php7.4 et toutes les dépendances nécessaires au bon fonctionnement de RuTorrent :
apt-get -y install php7.4 php7.4-fpm php7.4-xml php7.4-cli php7.4-json php7.4-common php7.4-mbstring php7.4-opcache php7.4-curl php7.4-readline php7-geoip
L’installation de php a été réalisé, il nous faut le configurer. On commence en modifiant le fichier php.ini :
nano /etc/php/7.4/fpm/php.ini
Trouvez les lignes ci-dessous et modifiez les avec les mêmes valeurs que moi :
upload_max_filesize = 500M
date.timezone = Europe/Paris
Notre PHP 7.4 est installé et configuré, passons maintenant à l’installation de paquets nécessaires au bon fonctionnement de RuTorrent.
2- Installation des paquets
Il faut installer un certain nombre de paquet pour le bon fonctionnement de RuTorrent, je ne rentrerai pas dans le détail. Pour ceux qui le souhaite, je vous laisse faire vos recherches si vous avez besoin :
apt-get install -y apache2-utils automake htop build-essential curl ffmpeg gawk git libcppunit-dev libcurl4-openssl-dev libncurses5-dev libsigc++-2.0-dev libsox-fmt-all libsox-fmt-mp3 libssl-dev libtool mediainfo mktorrent net-tools pkg-config psmisc python-pip rar screen subversion unrar unzip sox vim zip zlib1g-dev
Nous accèderons à RuTorrent via une interface WEB. Pour pouvoir gérer RuTorrent depuis celle-ci via des requêtes XML nous avons besoin de xmlrpc. Commencez par vous déplacer dans vote répertoire « tmp » :
cd /tmp/
On récupère le paquet :
git clone https://github.com/mirror/xmlrpc-c.git
On se déplace dans le dossier téléchargé :
cd xmlrpc-c/stable/
On lance le script de configuration :
./configure
On compile avec « make » :
make
make install
Pour RuTorrent, nous avons besoin de libtorrent qui va nous permettre d’utiliser les bittorrent. On se remets dans /tmp/ :
cd /tmp/
On récupère le paquet :
git clone https://github.com/rakshasa/libtorrent.git
On se déplace dans le dossier téléchargé :
cd libtorrent
On regarde quel est la dernière version de libtorrent ici puis on la récupère :
git checkout v0.13.8
On lance le script de configuration :
./autogen.sh
./configure --disable-debug
On compile avec make :
make
make install
On installe RTorrent et on se remets dans /tmp/ :
cd /tmp/
On récupère le paquet :
git clone https://github.com/rakshasa/rtorrent.git
On se déplace dans le dossier téléchargé :
cd rtorrent
On regarde quel est la dernière version de rtorrent ici puis on la récupère :
git checkout v0.9.8
On lance le script de configuration :
./autogen.sh
./configure --with-xmlrpc-c --with-ncurses --disable-debug
On compile avec make :
make
make install
On mets à jour nos liens symboliques pour rtorrent :
ldconfig
3- Installation de RuTorrent
On commence par créer le dossier qui recevra RuTorrent (c’est le dossier recevant les sites Internet de votre serveur) :
mkdir /var/www/
On se déplace dans le dossier que nous venons de créer :
cd /var/www/
On récupère RuTorrent via un lien github :
git clone https://github.com/Novik/ruTorrent.git rutorrent
On installe cloudscraper utile pour le plugin cloudflare :
pip install cloudscraper
On installe le plugin ratiocolor directement dans le dossier de RuTorrent :
cd rutorrent/plugins/
git clone https://github.com/Micdu70/rutorrent-ratiocolor.git ratiocolor
On télécharge le plugin Logoff pour nous permettre gérer nos utilisateurs :
wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/rutorrent-logoff/logoff-1.3.tar.gz
On extrait le plugin de son archive et on supprime l’archive qui ne nous sert plus à rien :
tar xzfv logoff-1.3.tar.gz
rm logoff-1.3.tar.gz
On installe le plugin GeoIP pour avoir l’information des provenances des peer :
git clone https://github.com/Micdu70/geoip2-rutorrent.git geoip2
On installe le plugin pausewebui pour pouvoir mettre en pause l’actualisation de la page :
wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/rutorrent-pausewebui/pausewebui.1.2.zip
On extrait le plugin de son archive et on supprime l’archive qui ne nous sert plus à rien :
unzip pausewebui.1.2.zip
rm -R __MACOSX pausewebui.1.2.zip
On installe le plugin filemanager pour la gestion de nos fichiers en ligne. Pour ce faire retournons dans /tmp/ :
cd /tmp/
On télécharge le plugin :
git clone https://github.com/Micdu70/rutorrent-thirdparty-plugins.git
On se déplace dans le dossier tout juste téléchargé :
cd rutorrent-thirdparty-plugins
On déplace le plugin dans le dossier de RuTorrent :
mv filemanager /var/www/rutorrent/plugins/filemanager
4- Configuration des plugins
Il faut configurer 2 des plugins pour le bon fonctionnement de RuTorrent. Tout d’abord modifions le fichier de configuration du plugins « create » :
nano /var/www/rutorrent/plugins/create/conf.php
Votre fichier doit être identique à celui ci-dessous en modifiant les 2 premières variables pour le connecter à mktorrent :
Maintenant modifions le fichier de configuration du plugins « filemanager » :
nano /var/www/rutorrent/plugins/filemanager/conf.php
Votre fichier doit être identique à celui ci-dessous en modifiant les chemin des différents format rar/unzip… :
5- Installation de nginx / certificat
Pour commencer, nous installons nginx ainsi que letsencrypt :
apt-get install nginx letsencrypt
Nous arrêtons le service de nginx pour pouvoir installer et configurer notre certificat :
/etc/init.d/nginx stop
Nous devons créer le certificat avec « letsencrypt » afin de sécuriser notre NextCloud en HTTPS :
certbot certonly --standalone -d maseedbox.mondomaine.com --rsa-key-size 4096
Vous devriez voir ceci, il faudra rentrer votre adresse mail puis accepter les conditions et enfin refuser ou accepter de recevoir des mails pour suivre les nouveautés de letsencrypt :
Une fois validé, vous devriez avoir un message vous indiquant que votre certificat a bien été créé :
Vous pouvez retrouver tous les fichiers de votre certificat dans le dossier suivant :
ls /etc/letsencrypt/live/maseedbox.mondomaine.com/
Pour finaliser la configuration de notre serveur web, nous devons modifier le fichier de configuration de nginx :
nano /etc/nginx/sites-available/default
Voici ce que j’ai configuré dans mon fichier pour le bon fonctionnement de RuTorrent:
server { listen 80; server_name maseedbox.mondomaine.com; return 301 https://$server_name$request_uri; } server { listen 443 ssl; server_name maseedbox.mondomaine.com; charset utf-8; client_max_body_size 10M; access_log /var/log/nginx/rutorrent-access.log combined; error_log /var/log/nginx/rutorrent-error.log error;error_page 500 502 503 504 /50x.html;
auth_basic "seedbox";
auth_basic_user_file "/etc/nginx/pass/rutorrent_pass";
ssl_certificate /etc/letsencrypt/live/maseedbox.mondomaine.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/maseedbox.mondomaine.com/privkey.pem; add_header X-Content-Type-Options nosniff; add_header X-Frame-Options "SAMEORIGIN"; add_header X-XSS-Protection "1; mode=block"; add_header X-Robots-Tag none; add_header X-Download-Options noopen; add_header X-Permitted-Cross-Domain-Policies none; add_header Referrer-Policy no-referrer; add_header Strict-Transport-security "max-age=31536000; includeSubDomains" always; root /var/www/rutorrent; index index.php index.html index.htm index.nginx-debian.html;location = /50x.html {
root /usr/share/nginx/html;
}
location = /favicon.ico {
access_log off;
log_not_found off;
}
location /rutorrent {
try_files $uri $uri/ /index.html;
}
location ~ ^/rutorrent/(conf|share)/(.+)$ {
deny all;
}
location ~ \.php$ {
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
}
location ~* \.(jpg|jpeg|gif|css|png|js|map|woff|woff2|ttf|svg|eot)$ {
expires 30d;
access_log off;
}
}
Le fichier de configuration est terminé, nous pouvons démarrer nginx :
/etc/init.d/nginx start
6- Configuration utilisateurs
On arrive au bout de ce tutoriel et de l’installation de notre serveur RuTorrent. Nous allons maintenant créer un utilisateur, sachez qu’il faudra recommencer cette partie autant de fois que vous souhaitez avoir d’utilisateur.
Notez qu’il faudra bien suivre la façon d’écrire le nom de votre utilisateur, en minuscule ou en majuscule !
Créons notre utilisateur via la commande :
useradd --shell /bin/bash --create-home nomutilisateur
On configure un mot de passe pour l’utilisateur :
passwd nomutilisateur
On créer les dossiers qui seront utilisés par RuTorrent pour cet utilisateur :
mkdir -p /home/nomutilisateur/{torrent,watch,.session}
On mets en place le fichier de configuration pour rtorrent pour cet utilisateur :
nano /home/nomutilisateur/.rtorrent.rc
Le fichier de configuration doit être comme celui-ci où le scgi_port doit être différent pour chaque utilisateur (5001, 5002, 5003 …) :
scgi_port = 127.0.0.1:5001 encoding_list = UTF-8 port_range = 20000-40000 port_random = no check_hash = no directory = /home/nomutilisateur/torrents session = /home/nomutilisateur/.session encryption = allow_incoming, try_outgoing, enable_retry schedule = watch_directory,1,1,"load_start=/home/nomutilisateur/watch/.torrent" schedule = untied_directory,5,5,"stop_untied=/home/nomutilisateur/watch/.torrent" trackers.use_udp.set = yes dht = off max_peers = 100 max_peers_seed = 50 max_uploads = 15 execute = {sh,-c,/usr/bin/php /var/www/rutorrent/php/initplugins.php nomutilisateur &} schedule = espace_disque_insuffisant,1,30,close_low_diskspace=500M
On positionne les bons droits sur le dossier et les fichiers de notre utilisateur :
chown --recursive nomutilisateur:nomutilisateur /home/nomutilisateur chown root:root /home/nomutilisateur chmod 755 /home/nomutilisateur
Ensuite nous devons ajouter la configuration de notre utilisateur dans la configuration de nginx. Modifiez le fichier de configuration :
nano /etc/nginx/sites-available/default
Dans le fichier ajoutez à la fin les lignes suivantes :
location /NOMUTILISATEUR {
include scgi_params;
scgi_pass 127.0.0.1:5001;
auth_basic "Seedbox";
auth_basic_user_file "/etc/nginx/pass/rutorrent_pass nomutilisateur";
On créer le dossier en question qui va recevoir le fichier avec les mots de passe de nos utilisateurs :
mkdir /etc/nginx/pass/
On créer le mot de passe pour notre utilisateur de façon chiffré (on est jamais trop prudent 😉 ). Il vous sera demandé de taper 2 fois votre mot de passe :
htpasswd -c -B "/etc/nginx/pass/rutorrent_pass nomutilisateur"
On ajoute encore un peu de sécurité en modifiant les droits sur le fichier fraichement créé et on ajoute l’utilisateur www-data comme propriétaire de celui-ci :
chmod 600 /etc/nginx/pass/rutorrent_pass chown www-data:www-data /etc/nginx/pass/rutorrent_pass
Maintenant que rtorrent est géré, il faut créer un fichier utilisateur pour RuTorrent, on commence par créer le dossier qui va recevoir les fichiers de configuration de vos utilisateurs :
mkdir /var/www/rutorrent/conf/users/nomutilisateur
On créé le fichier de configuration :
nano /var/www/rutorrent/conf/users/nomutilisateur/config.php
Mettez ceci dans le fichier :
<?php $pathToExternals =array ( "curl" => '/usr/bin/curl', "stat" => '/usr/bin/stat', "php" => '/usr/bin/php7.4', "pgrep" => '/usr/bin/pgrep', "python" => '/usr/bin/python2.7' ); $topDirectory = '/home/nomutilisateur'; $scgi_port = 5001; $scgi_host = '127.0.0.1'; $XMLRPCMountPoint = '/NOMUTILISATEUR';
On modifie les droits du dossier complet de RuTorrent pour que le propriétaire soit www-data:
chown -R www-data:www-data /var/www/rutorrent
On redémarre nginx :
/etc/init.d/nginx restart
7- Création script démarrage
Pour que votre rtorrent démarre avec votre système, il nous faut créer un script de démarrage pour chaque utilisateur de notre système :
nano /etc/init.d/nomutilisateur-rtorrent
Mettez ceci dans votre fichier :
!/usr/bin/env bash
user="nomutilisateur"
rt_start() {
su --command="screen -dmS ${user}-rtorrent rtorrent" "${user}"
}
rt_stop() {
killall --user "${user}" screen
}
case "$1" in
start) echo "Démarrage de rtorrent…"; rt_start
;;
stop) echo "Arrêt de rtorrent…"; rt_stop
;;
restart) echo "Redémarrage de rtorrent…"; rt_stop; sleep 1; rt_start
;;
*) echo "Usage: $0 {start|stop|restart}"; exit 1
;;
esac
exit 0
Pour finir on rend le fichier exécutable au démarrage du serveur :
update-rc.d nomutilisateur-rtorrent defaults
Vous pouvez dès à présent lancer votre script :
/etc/init.d/nomutilisateur-rtorrent start
Félicitation, vous avez fini d’installer RuTorrent et vous pouvez désormais vous connecter à l’interface web via l’url que vous avez positionné dans nginx. L’interface ressemble à celle-ci :
Hop avant de partir, allez me suivre sur les réseaux pour me soutenir :
Bonjour,
Le plugin fileshare pour partager facilement des fichiers depuis la seedbox ne fonctionne plus, une idée ?
Merci