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 l'installer :

# 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 ~/.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 ~/Telechargements/torrents 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 *.torrent _rtorrent@chezmoi.tld:/home/_rtorrent/Telechargements/torrents/

Reste à lancer rtorrent en arrière-plan à chaque démarrage du serveur. Éditez le crontab de l'utilisateur _rtorrent en entrant "crontab -e" puis indiquez la ligne suivante :

@reboot /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 😁.

Si vous ne vous souvenez plus des touches permettant de contrôler rtorrent, saisissez cette commande :

$ rtorrent -h

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",

Le script "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 éxé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 utilisateurssh@chezmoi.tld

Une fois identifié, vous pouvez ouvrir un navigateur à l'adresse http://localhost:9999 afin d'accéder à transmission.