Transmission (http://www.transmissionbt.com/) est un client BitTorrent cross-platform complet, très peu gourmand en mémoire. Il peut s'installer en tant que démon dans un environnement serveur sans interface graphique.
On accède au client Transmission au travers d'une interface web dans n'importe quel navigateur ou au travers d'un front-end tel que transmission-remote-gui - mon préféré car plus complet.
Une VM Ubuntu Serveur est donc toute indiquée pour installer ce type de client.
Une VM Ubuntu Server configurée en adresse ip fixe
Comme, d'une part certains accès de l'extérieur vers votre VM seront nécessaires au fonctionnement de Transmission (seed) et, d'autre part vous devrez monter votre VHS dans la VM pour y stocker vos fichiers en cours de téléchargement ou en seed, il est recommandé de créer un compte séparé dédié à Transmission sur le VHS.
Un compte de type “visiteur” me semble approprié. En effet il présente l'intérêt de ne pas ouvrir l'accès aux dossiers public des autres utilisateurs du VHS via la VM et, comme les périphériques externes - en particulier le disque dur externe sur lequel je fais tous les backups - se montent sous “public” … (vous avez dit parano ).
Vous monterez l'espace disque de ce compte dans la VM en rajoutant une instruction dans le fichier fstab. Je ne reviendrai pas sur la manière de réaliser cette opération, qui a été traitée ici.
Pour la suite du tuto, on considérera que le VHS a été monté au point de montage ~/transmission.
Vous aurez besoin de 3 dossiers pour faire tourner Transmission
Ces 3 dossiers seront créés comme suit dans ~/transmission/prive (par exemple); je rappelle que “~/transmission” est le point de montage des dossiers du compte de type “visiteur” créé sur votre VHS .
cd ~/transmission/prive mkdir {telechargements,seeding,watch}
Vérifier les permissions et faites un chmod si nécessaire.
ls -l chmod 770 <nom-du fichier>
Rien de compliqué à ce niveau
sudo apt-get install transmission-daemon transmission-common transmission-cli
Cette partie s'avère un peu plus complexe; elle est cependant, à mon avis, nécessaire et je vais tenter d'expliquer pourquoi. Lors de son installation, Transmission créée un utilisateur “debian-transmission” (uid 105, gid 113 sous Ubuntu Server) et tourne sous ce compte par défaut. En conséquence, tous les fichiers téléchargés seront la propriété de ce compte, ce qui semble poser de fréquents problèmes d'accès (un peu de “googlelisation” devrait vous en convaincre ).
Pour pallier ce problème, une solution élégante consiste à faire tourner Transmission sous le compte utilisateur de la VM, ce que nous allons mettre en oeuvre ci-dessous.
(1) Stoppez le démon Transmission
sudo /etc/init.d/transmission-daemon stop
(2) Editez le fichier default du script d'init à l'aide de votre éditeur préféré (pico pour moi)
sudo pico /etc/default/transmission-daemon
et mettez la ligne “OPTIONS” en commentaire (ajoutez un signe “#” devant la ligne)
# OPTIONS="--config-dir $CONFIG_DIR"
(3) Editez le script d'init
sudo pico /etc/init.d/transmission-daemon
Commenter la ligne “USER” et remplacer la par une nouvelle ligne pour changer l'utilisateur démarrant le service
# USER=debian-transmission USER=<votre-nom-utilisateur-de-la-vm>
(4) Créez un dossier ~/.config/transmission-daemon
mkdir ~/.config/transmission-daemon
Copiez le fichier de configuration de Transmission “settings.json” présent sous /etc/transmission-daemon/ vers ce nouveau dossier
sudo cp /etc/transmission-daemon/settings.json ~/.config/transmission-daemon/
et véfifiez les droits (doit être en read/write pour votre utilisateur)
Le paramétrage se fait dans le fichier “settings.json”, que vous avez copié sous ~/.config/transmission-daemon.
(1) Arrêtez le démon
sudo /etc/init.d/transmission-daemon stop
ATTENTION : Il est indispensable d'arrêter le démon si vous l'avez redémarré avant d'éditer le fichier settings.json. En effet celui-ci écrit sa configuration lors de son arrêt et vous risqueriez de perdre votre paramétrage lors de l'arrêt suivant.
(2) Modifiez le fichier settings.json
Editez le fichier
cd ~/.config/transmission-daemon pico settings.json
et procédez aux modifications nécessaires.
Il s'agit ici du paramétrage classique d'un client BitTorrent et je ne vais pas détailler chacun des paramètres et leur optimisation mais seulement vous décrire les principaux. Vous trouverez une explication des différents réglages ici (https://trac.transmissionbt.com/wiki/EditConfigFiles). Si vous ne comprenez pas la signification d'un paramètre donné, n'y touchez pas et laissez la valeur par défaut.
Il est intéressant de noter que la majorité de ces réglages est accessible depuis l'interface transmission-remote-gui si vous l'utilisez (voir paragraphe 5.2 ci-dessous).
Vous pouvez donc choisir de faire une grande partie de votre paramétrage en accédant à Transmission via le front-end. Vous devrez cependant impérativement avoir, au préalable, réglé les paramètres “rcp” dans le fichier settings.json
a) rcp
Les autres paramètres importants pour le fonctionnement correct de Transmission sont :
b) dir
Attention : Pour l'ensemble des réglages ci-dessus, conservez les guillemets dans les différentes expressions
Je joins ci-dessous un exemple de fichier avec les paramètres principaux correspondants à ma configuration.
{ "alt-speed-down": 500, "alt-speed-enabled": false, "alt-speed-time-begin": 30, "alt-speed-time-day": 2, "alt-speed-time-enabled": true, "alt-speed-time-end": 720, "alt-speed-up": 0, "bind-address-ipv4": "0.0.0.0", "bind-address-ipv6": "::", "blocklist-enabled": false, "blocklist-url": "http://www.example.com/blocklist", "cache-size-mb": 4, "dht-enabled": false, "download-dir": "/home/trjc/transmission/prive/transmission/seeding", "download-limit": 100, "download-limit-enabled": 0, "encryption": 1, "idle-seeding-limit": 30, "idle-seeding-limit-enabled": false, "incomplete-dir": "/home/trjc/transmission/prive/transmission/inc-downloads", "incomplete-dir-enabled": true, "lpd-enabled": false, "max-peers-global": 200, "message-level": 2, "peer-congestion-algorithm": "", "peer-limit-global": 240, "peer-limit-per-torrent": 60, "peer-port": 51413, "peer-port-random-high": 65535, "peer-port-random-low": 49152, "peer-port-random-on-start": false, "peer-socket-tos": "default", "pex-enabled": false, "port-forwarding-enabled": true, "preallocation": 1, "prefetch-enabled": 1, "ratio-limit": 2, "ratio-limit-enabled": false, "rename-partial-files": true, "rpc-authentication-required": true, "rpc-bind-address": "0.0.0.0", "rpc-enabled": true, "rpc-password": "{0a5b0ce9573323c1b98fd85b59d3b599d581a2b11axTK8S4", "rpc-port": 9091, "rpc-url": "/transmission/", "rpc-username": "trjc", "rpc-whitelist": "127.0.0.1,192.168.1.100", "rpc-whitelist-enabled": true, "script-torrent-done-enabled": false, "script-torrent-done-filename": "", "speed-limit-down": 50, "speed-limit-down-enabled": true, "speed-limit-up": 100, "speed-limit-up-enabled": true, "start-added-torrents": true, "trash-original-torrent-files": false, "umask": 18, "upload-limit": 100, "upload-limit-enabled": 0, "upload-slots-per-torrent": 14, "utp-enabled": true, "watch-dir": "/home/trjc/transmission/prive/transmission/watch", "watch-dir-enabled": true }
(3) Après avoir effectué vos réglages, sauvez, quittez er redémarrez le démon
sudo /etc/init.d/transmission-daemon start
(4) Modification dans votre routeur
Vous devez encore accéder à votre routeur et rediriger le port choisi pour Transmission (“peer-port”) lors de votre paramétrage (51413 dans mon exemple) vers l'ip de votre VM, d'où la nécessité d'une VM en ip fixe comme indiqué au paragraphe 2 ci-dessus.
(1) Par l'interface web
Rentrez l'adresse suivante dans votre navigateur préféré :
<adresse-ip-vm>:9091
Comme vous pouvez le voir, aucun réglage n'est possible; seules des opérations simples sur les torrents (ajouter, mettre en pause, redémarrer, supprimer) peuvent être exécutées.
(2) Par le front-end transmission-remote-gui
Ce front-end peut être téléchargé ici (http://code.google.com/p/transmisson-remote-gui/).
Sous Linux, il suffit de télécharger l'archive, de la dézipper et d'exécuter 'transgui' pour obtenir ceci
Pratiquement tous les réglages, sauf rcp, sont possibles
(Non testé personnellement)
<votre-nom-de-domaine>:9091
De nombreux scripts sont disponibles sur le web pour perfectionner Transmission.
Je vais détailler la mise en place de l'un d'entre eux, qui me semble particulièrement intéressant et qui permet de limiter la bande passante de Transmission quand le pc d'un utilisateur du réseau local est allumé.
(1) Créez le fichier dans votre répertoire ~/
Vous l'appellerez par exemple 'limit_bandwith'
pico limit_bandwith
Script
#!/bin/bash # # Script pour limiter la bande passante de Transmission (mode "tortue") # quand un pc est allumé # Source http://voidandany.free.fr/ # # ================ # # Définition des variables # AUTH="--netrc $HOME/.netrc" # fichier password ".netrc" à créer et à mettre dans HOME IP="$HOME/alt_speed_ip" # fichier des adresses ip des pc "alt_speed_ip" à créer et à mettre dans HOME # # ================ # cd $(dirname "${0}") while read HOST_IP; do ping -c 5 -w 15 $HOST_IP > /dev/null RESULT=$? if [ $RESULT -eq 0 ]; then break fi done < $IP if [ $RESULT -eq 0 ]; then echo "At least 1 computer on, set alt speed" transmission-remote -as $AUTH else echo "no computer on, max speed" transmission-remote -AS $AUTH fi
Vérifiez qu'il est exécutable.
(2) Créez le fichier des adresses ip
Toujours dans le répertoire ~/, créez le fichier, où vous indiquerez les adresses ip des pc du réseau local à surveiller (par exemple 'alt_speed_ip')
pico alt_speed_ip
Il prendra la forme suivante :
adresse1 adresse2 adresse3
(3) Gestion du login / mot de passe
Comme transmission-remote a besoin des informations de connexion au démon pour exécuter certaines de ses commandes, nous allons les placer dans un fichier caché '.netrc' également créé sous '~/'
pico .netrc
Vous y indiquerez les paramètres de connexion rcp figurant dans le fichier 'settings.json' créé au paragraphe 4.3 ci-dessus
Script
machine localhost login <login-transmission> password <password-transmission>
et vous limiterez les droits
chmod 600 ~/.netrc
(4) CRON
Il ne vous reste qu'à faire tourner le script à intervalles réguliers pour tester la présence ou l'absence de pc allumés en ajoutant une ligne dans le Crontab
crontab -e
Par exemple, l'ajout de la ligne suivante
*/5 * * * * ~/limit_bandwith
lancera le script de vérification toutes les 5 minutes.
Voilà, à vous de jouer!
Références