MaDoVi - Le wiki

Machines - Données - Virtualisation

Outils pour utilisateurs

Outils du site


archives:vm:transmission

Installation d'un client torrent dans une VM Ubuntu Server

1 Présentation

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.

2 Ce qu'il vous faut

Une VM Ubuntu Server configurée en adresse ip fixe

3 Configuration de l'environnement de votre client torrent

3.1 Création d'un compte dédié à Transmission et montage du VHS par le fstab

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.

3.2 Création des dossiers nécessaires au fonctionnement de Transmission

Vous aurez besoin de 3 dossiers pour faire tourner Transmission

  • Un dossier, que nous appellerons “telechargements”, où seront stockés vos téléchargements en cours
  • Un dossier, que nous appellerons “seeding”, où seront stockés vos fichiers en partage (seed). A noter, qu'après téléchargement, les fichiers sont automatiquement transférés du dossier “téléchargements” vers le dossier “seeding”.
  • Un dossier , que nous appellerons “watch”, où vous pourrez déposez vos .torrent

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>

4. Installation et configuration de Transmission

4.1 Installation

Rien de compliqué à ce niveau

sudo apt-get install transmission-daemon transmission-common transmission-cli

4.2 Configuration

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)

4.3 Paramétrage

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

  • “rcp-authentication-required”: true, [Activer l’authentification par rpc {true|false}]
  • “rcp-enabled”: true, # [Activer rpc {true|false}]
  • “rcp-password”: “<mot-de passe-utilisateur>”, # [mot de passe pour l'accès 'remote' à Transmission à renseigner en clair; il sera codé au premier redémarrage du démon transmission]
  • “rcp-port”: 9091, # [le port tcp, qui vous servira pour l'accès rcp (9091 par défaut)]
  • “rcp-username”: “<nom-utilisateur>”, # [nom d'utilisateur pour l'accès 'remote' à Transmission]
  • “rcp-whitelist”: “127.0.0.1,192.168.1.xxx”, # [liste des ip autorisées par rcp; laisser 127.0.0.1 (= local host) et ajouter l'adresse ip du ou des pc, que vous utilisez pour accéder à Transmission],
  • “rcp-whitelist-enabled”: true, # [Activer le filtre par liste blanche {true|false}]

Les autres paramètres importants pour le fonctionnement correct de Transmission sont :

b) dir

  • “download-dir”: “~/transmission/prive/seeding”, # [répertoire de téléchargements complets]
  • “incomplete-dir”: “~/transmission/prive/telechargements”, # [répertoire de téléchargements en cours]
  • “incomplete-dir-enabled”: true, # [activer la fonction répertoire de téléchargements en cours {true|false}]
  • “watch-dir”: “~/transmission/prive/watch”, # [répertoire de fichiers “.torrent”]
  • “watch-dir-enabled”: true # [activer la fonction répertoire de fichiers “.torrent” {true|false}]

:!: 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.

5 Accès à Transmission

5.1 Depuis le réseau local

(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

5.2 Depuis l'extérieur

(Non testé personnellement)

  1. Forwardez le port 9091 ou le port rpc choisi (paramètre “rpc-port”) vers l'adresse de votre VM
  2. Ajoutez l'adresse du pc, à partir duquel vous voulez accéder à Transmission à la “white list” (paramètre “rcp-whitelist”) dans le fichier “settings.json” décrit au paragraphe 4.3 ci-dessus ou supprimez l'utilisation de l'option “white list” (paramètre “rcp-whitelist-enabled”: false)
  3. Rentrez l'adresse suivante dans votre navigateur :
<votre-nom-de-domaine>:9091

6 Customisation

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

archives/vm/transmission.txt · Dernière modification: 05/10/2019 02:13 de 84.254.187.202