Transmission Multi-User sur Debian 9
Pré-requis
- Connaitre les commandes de base GNU/Linux
- Un serveur avec debian et à jour
- Un peu de temps
Présentation de transmission
Transmission est un client bittorrent, qui permets le téléchargement de fichier torrent. Il se veut intuitif, fonctionnel et très léger. Il dispose de fonctionnalités comme le chiffrement des échanges de données, l'échange de pairs, le support des blocklists, la limitation des débits en émission et en réception, etc.
Installation
Transmission-daemon
Sur debian, nous avons plusieurs paquets pour transmission, nous installerons ici transmission-daemon, qui permettras de le faire tourner en arrière plan, avec une interface web. De plus il est possible d'utiliser un client lourd, et de le gérer à distance, comme transmission-gtk.
Nous installons donc le paquet :
$ apt install transmission-daemon
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
The following additional packages will be installed:
libevent-2.0-5 libminiupnpc10 libnatpmp1 minissdpd transmission-cli transmission-common
Paquets suggérés :
natpmp-utils transmission-gtk
Les NOUVEAUX paquets suivants seront installés :
libevent-2.0-5 libminiupnpc10 libnatpmp1 minissdpd transmission-cli transmission-common transmission-daemon
0 mis à jour, 7 nouvellement installés, 0 à enlever et 1 non mis à jour.
Il est nécessaire de prendre 1 123 ko dans les archives.
Après cette opération, 4 600 ko d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer ? [O/n]
[...]
Et voilà, c'est installé et fonctionnel (avec l'URL http://IPserveur:9091/transmission/web/).
Et oui, mais malheureusement, en l'état, transmission est mono utilisateur, nous allons donc avoir quelques modifications à effectuer.
Création du daemon
Debian a selon moi, la mauvaise mani de démarrer et d'activer par défaut les services que l'on installe, nous commençons donc par arrêter le daemon transmission, et l'enlever du démarrage automatique :
$ systemctl stop transmission-daemon
$ systemctl disable transmission-daemon
Puis nous allons créer notre propre service systemd (rien que ça).
Avec votre éditeur de texte préféré (vim, vi, nano, emacs etc ...), nous allons créer un fichier dans /lib/systemd/system/transmission@.service
, et on y place ceci dedans :
[Unit]
Description=Transmission BitTorrent Daemon for %i
After=network.target
[Service]
User=%i
Type=notify
ExecStart=/usr/bin/transmission-daemon -f --log-error -g ${HOME}/.config/transmission
ExecReload=/bin/kill -s HUP $MAINPID
[Install]
WantedBy=multi-user.target
En faite, seulement User=%i
change par rapport au service de base, ce %i
permet d'avoir un service 'dynamique', je pourrais en lancer plein, avec le même, mais avec des utilisateurs différent. Nous verons ceci un peu plus tard.
Il nous suffit de reload le daemon systemd pour prendre en compte ce nouveau service :
$ systemctl daemon-reload
Configuration
Création de notre 1er utilisateur
Bon là, rien de bien compliqué, si vous avez déjà vos utilisateurs de créer, vous pouvez passer cette étape
Nous créons donc un utilisateur, et pourquoi pas l'appeler spiderman :
$ useradd -d /home/spiderman -m -s /bin/bash spiderman
$ passwd spiderman
$ mkdir -p /home/spiderman/.config/transmission
$ chown spiderman: /home/spiderman/.config/transmission
Et voilà, j'ai pas besoin d'ajouter d'explication pour cette partie
Création de la configuration de spiderman
On attaque la configuration, pour commencer, nous allons copier la configuration de base de transmission, dans le répertoire précédemment créé de notre utilisateur :
$ cp /etc/transmission-daemon/settings.json /home/spiderman/.config/transmission/
$ chown spiderman: /home/spiderman/.config/transmission/settings.json
Puis on édite le fichier, pour y modifier ces informations :
# /home/spiderman/.config/transmission/settings.json
"download-dir": "/home/spiderman/torrents",
"rpc-whitelist-enabled": false,
"rpc-username": "spiderman",
"rpc-password": "spiderman",
"rpc-port": 12000,
"peer-port-random-on-start": true,
Là, je vous donne le minimum à modifier, ceci reste une configuration basique :
- download-dir : Le répertoire où vos torrents seront téléchargé
- rpc-whitelist-enabled : Ceci permets d'accéder à l'interface depuis n'importe où, si vous voulez limiter cet accès, laisser à true, mais n'oubliez pas de modifier le rpc-whitelist en y ajoutant vos IPs.
- rpc-username : Le nom d'utilisateur qui sera demandé pour se connecter à l'interface web (et même un client lourd), vous n'avez aucun besoin de mettre le même que l'utilisateur sous GNU/Linux, ça peux être n'importe quoi, faut juste s'en souvenir.
- rpc-password : Pareil, au choix, il faut le mettre en clair, mais il sera chiffrer au démarrage du service.
- rpc-port : Ici j'ai mis 12000, c'est un choix arbitraire, mais il faudra mettre un port différent par utilisateur.
- peer-port-random-on-start : Pour que le port utilisé pour le partage sois aléatoire, sinon il faudra gérer par utilisateur, c'est plutôt chiant.
Si vous voulez plus d'information sur d'autre configuration, je vous invite à regarder la documentation officiel, ou celle d'ubuntu, qui est très bien faite.
On lance le tout ?
C'est là la spécificité du fameux %i
, pour lancer transmission, nous utiliserons donc cette commande :
$ systemctl start transmission@USER
Donc pour notre spiderman :
$ systemctl start transmission@spiderman
Et pour qu'il se lance au boot du serveur :
$ systemctl enable transmission@spiderman
Nous pouvons tester avec http://IPserveur:12000/transmission/web/
Nous pouvons également vérifier que le processus tourne bien avec l'utilisateur spiderman :
$ ps -ef | grep transmission
spiderm+ 561 1 5 20:10 ? 00:01:27 /usr/bin/transmission-daemon -f --log-error -g /home/spiderman/.config/transmission
Et voilà, tout est bon pour notre spiderman
Un second utilisateur
Là j'irai beaucoup plus vite, nous créerons un utilisateur nommé ironman :
$ useradd -d /home/ironman -m -s /bin/bash ironman
$ passwd ironman
$ mkdir -p /home/ironman/.config/transmission
$ chown ironman: /home/ironman/.config/transmission
Nous créons son fichier de configuration :
$ cp /etc/transmission-daemon/settings.json /home/ironman/.config/transmission/
$ chown ironman: /home/ironman/.config/transmission/settings.json
Puis on modifie comme il faut
# /home/ironman/.config/transmission/settings.json
"download-dir": "/home/ironman/torrents",
"rpc-whitelist-enabled": false,
"rpc-username": "ironman",
"rpc-password": "ironman",
"rpc-port": 12001,
"peer-port-random-on-start": true,
Il ne faut surtout pas oublier de modifier le port, chaque utilisateur, doit avoir son propre port.
Pour finir nous lançons le service :
$ systemctl start transmission@ironman
$ systemctl enable transmission@ironman
Et on teste avec http://IPserveur:12001/transmission/web/
Revérifions également les processus :
$ ps -ef | grep transmission
spiderm+ 561 1 5 20:10 ? 00:01:27 /usr/bin/transmission-daemon -f --log-error -g /home/spiderman/.config/transmission
ironman 631 1 0 20:38 ? 00:00:00 /usr/bin/transmission-daemon -f --log-error -g /home/ironman/.config/transmission
Configuration reverse proxy
SOON