Seedbox
Ce chapitre décrit comment mettre en place une seedbox, afin de partager et télécharger des fichiers torrent.
Seedbox avec rtorrent
rtorrent est un client efficace et très léger. Il dispose d'une interface en console pour le contrôler, que certains préfèrent à l'interface web de transmission. En effet, seul un accès SSH est nécessaire pour l'utiliser.
On commence par installer l'excellent rtorrent :
# pkg_add rtorrent
Ajoutez ensuite un utilisateur _rtorrent
dont
l'unique tâche sera de faire tourner rtorrent (ce n'est pas obligé, mais
j'aime bien séparer les processus 😊 ).
Nous pouvons maintenant nous connecter en tant qu'utilisateur _rtorrent
:
# su _rtorrent
Nous allons créer les dossiers qui serviront à télécharger les torrents,
ainsi qu'un dossier dans lequel tous les fichiers .torrent
ajoutés
seront directement pris en charge par rtorrent :
$ mkdir -p Telechargements/{download,session,torrents}
On crée maintenant le fichier ~/.rtorrent.rc
. Vous pouvez copier
l'exemple fourni avec le paquet :
$ cp /usr/local/share/examples/rtorrent ~/.rtorrent.rc
On modifie la configuration selon nos besoins. Seules les lignes ne
commençant pas par #
sont prises en comptes. Les autres correspondent
souvent aux valeurs par défaut.
# Global upload and download rate in KiB. "0" for unlimited.
download_rate = 0
upload_rate = 20
directory = ~/Telechargements/download
session = ~/Telechargements/session
# Ajoute ou supprime les fichiers torrents present
schedule = watch_directory,5,5,load_start=~/Telechargements/torrents/*.torrent
schedule = untied_directory,5,5,stop_untied=~/Telechargements/torrents/*.torrent
# Pour utiliser les magnets, il est parfois necessaire d'ouvrir le port d'ecoute
# en tcp seulement
#port_range = 6890-6999
#port_random = no
check_hash = yes
use_udp_trackers = yes
# Ces options permettent l'utilisation des magnets
encryption = allow_incoming,try_outgoing,enable_retry
# Important pour ne pas necessiter le besoin de trackers
dht = auto
# dht_port = 6881
peer_exchange = yes
# Avertissement des chargements termines
system.method.set_key = event.download.finished,notify_me,"execute=~/.rtorrent_mail.sh,$d.get_name="
# Ajout de noeuds dht si besoin après un délai :
schedule2 = dht_node_1, 5, 0, "dht.add_node=router.utorrent.com:6881"
schedule2 = dht_node_2, 5, 0, "dht.add_node=dht.transmissionbt.com:6881"
schedule2 = dht_node_3, 5, 0, "dht.add_node=router.bitcomet.com:6881"
schedule2 = dht_node_4, 5, 0, "dht.add_node=dht.aelitis.com:6881"
Afin d'être averti lorsqu'un téléchargement est terminé, on crée le
script ~/.rtorrent_mail.sh
:
#!/bin/sh
echo "$(date) : $1 - Download completed." | mail -s "[rtorrent] - Download completed : $1" root
Notez que tous les fichiers .torrents
qui seront déposés dans le
dossier watch
seront directement téléchargés par rtorrent. Si vous
voulez ajouter un fichier torrent à partir de votre ordinateur habituel,
vous pouvez utiliser un client SFTP ou la commande scp :
$ scp -p <port_ssh> _rtorrent@chezmoi.tld:/home/_rtorrent/Telechargements/watch
Reste à lancer rtorrent en arrière-plan à chaque démarrage du serveur.
Revenez sur le compte root (ctrl-D) puis ajoutez la commande suivante
dans le fichier /etc/rc.local
:
/usr/bin/su _rtorrent -c "/usr/bin/tmux new -s rtorrent -d /usr/local/bin/rtorrent"
On utilise tmux installé par défaut sur OpenBSD pour envoyer rtorrent en arrière-plan.
Si vous souhaitez administrer rtorrent par la suite, connectez-vous en
SSH avec l'utilisateur _rtorrent, et affichez rtorrent avec la commande
tmux a -t rtorrent
. Appuyez successivement sur “ctrl-b” puis la touche
d
pour vous détacher de rtorrent.
Pour ajouter un lien magnet, vous pouvez appuyer sur “backspace” (effacer) puis collez le lien magnet (Shift-Inser). Il semble que certains ont besoin d'ouvrir le port d'écoute configuré dans rtorrent (en tcp) afin d'utiliser les magnets sans trackers. Avec la configuration en exemple ci-dessus, ça devrait fonctionner dans problèmes (en tout cas, chez moi ça marche bien 😁).
Si vous ne vous souvenez plus des touches permettant de contrôler rtorrent, saisissez cette commande :
$ rtorrent -h
Rakshasa's BitTorrent client version 0.9.6.
All value pairs (f.ex rate and queue size) will be in the UP/DOWN
order. Use the up/down/left/right arrow keys to move between screens.
Usage: rtorrent [OPTIONS]... [FILE]... [URL]...
-h Display this very helpful text
-n Don't try to load ~/.rtorrent.rc on startup
-b <a.b.c.d> Bind the listening socket to this IP
-i <a.b.c.d> Change the IP that is sent to the tracker
-p <int>-<int> Set port range for incoming connections
-d <directory> Save torrents to this directory by default
-s <directory> Set the session directory
-o key=opt,... Set options, see 'rtorrent.rc' file
Main view keys:
backspace Add a torrent url or path
^s Start torrent
^d Stop torrent or delete a stopped torrent
^r Manually initiate hash checking
^q Initiate shutdown or skip shutdown process
a,s,d,z,x,c Adjust upload throttle
A,S,D,Z,X,C Adjust download throttle
I Toggle whether torrent ignores ratio settings
right View torrent
Download view keys:
spacebar Depends on the current view
1,2 Adjust max uploads
3,4,5,6 Adjust min/max connected peers
t/T Query tracker for more peers / Force query
* Snub peer
right View files
p View peer information
o View trackers
Report bugs to <sundell.software@gmail.com>.
Notez que ^s
correspond à Ctrl-s
. 😉
Seedbox avec transmission
Transmission se montre très efficace et devrait convenir à la plupart de vos besoins. Il dispose d'interfaces graphiques ainsi que d'une interface dans un navigateur, ce qui le rend très facile à contrôler.
Nous configurerons transmission de façon à télécharger les torrents dans
le dossier /mnt/transmission
. Adaptez les chemins du tutoriel selon
vos besoins.
La commande habituelle permet de l'installer :
# pkg_add transmission
On va ensuite activer le service. On le démarre puis l'arrête aussitôt afin de créer les fichiers de configurations dont on aura besoin :
# rcctl enable transmission_daemon
# rcctl start transmission_daemon
# rcctl stop transmission_daemon
Nous allons créer des dossiers spécifiques afin d'enregistrer les
téléchargements effectués par transmission et stocker les fichiers
.torrent
:
# mkdir -p /mnt/transmission/{downloads,incomplete,torrents}
Modifiez les propriétaires de ces répertoires afin d'en autoriser l'accès à transmission :
# chown -R _transmission:_transmission /mnt/transmission
Si vous souhaitez que d'autres utilisateurs puissent consulter ces répertoires, modifiez les permissions sur ces derniers :
# chmod a+rX /mnt/transmission
Afin de configurer transmission, éditez le fichier suivant :
/var/transmission/.config/transmission-daemon/settings.json
À l'intérieur, vous pourrez adapter la configuration selon vos besoins. Voici les lignes que j'ai modifiées :
"download-dir": "/mnt/transmission/downloads",
"incomplete-dir": "/mnt/transmission/incomplete",
"incomplete-dir-enabled": true,
"peer-port-random-on-start": true,
Je vous propose d'ajouter les lignes suivantes afin que chaque fichier
.torrent
ajouté dans le dossier /mnt/transmission/torrents
(par
SFTP par exemple) soit automatiquement téléchargé par
transmission.
"watch-dir": "/mnt/transmission/torrents",
"watch-dir-enabled": true
Afin de recevoir un mail lorsque le téléchargement d'un torrent est terminé, ajoutez ces lignes :
"script-torrent-done-enabled": true,
"script-torrent-done-filename": "/var/transmission/dl-done.sh",
Ce script situé à /var/transmission/dl-done.sh
peut par exemple
contenir ceci :
#!/bin/sh
echo "$(date) : $TR_TORRENT_NAME - Download completed." | mail -s "[transmission] - Download completed : $TR_TORRENT_NAME" toto@example.com
N'oubliez pas de rendre ce dernier exécutable :
# chmod +x /var/transmission/dl-done.sh
Une fois vos modifications terminées, rechargez la configuration de transmission avec la commande suivante :
# rcctl start transmission_daemon
Transmission dispose d'une interface web. Le plus simple afin d'y accéder est d'utiliser un tunnel SSH. À partir de l'ordinateur avec lequel vous souhaitez consulter transmission, lancez la commande suivante :
ssh -N -L 9999:127.0.0.1:9091 -p 22222 utilisateurssh@chezmoi.tld
Une fois identifié, vous pouvez ouvrir un navigateur à l'adresse
http://localhost:9999
afin d'accéder à transmission :