Dual Transmission
Ce post va expliquer comment installer, sur le même serveur, deux instances de transmission en parallèle.
Mais quel intérêt ? Chacun y trouvera le sien, pour moi il s’agissait de pouvoir disposer d’une 2ème instance cloisonnée de la première afin de mieux gérer contrôles d’accès et quotas. Transmission n’aime pas trop quand sa partition sature. 🙁
Ceci dit, ce tuto sert tout aussi bien pour une compilation simple si vous souhaitez avoir la dernière version disponible par exemple.
Environnement
OS : Debian GNU/Linux 8 (jessie) (64bits)
Ce tuto a été réaliser sur une Debian Jessie. Avec l’apparition du Systemd et les spécificité de chaque distro, je ne garantirai pas le bon fonctionnement sur un autre environnement !
La première instance de Transmission sera supposée installée avec un simple apt-get install transmission-daemon
.
Pré-Requis à l’Installation
On commence d’abord par installer les dépendances pour la compilation.
1 | root@server:~# apt-get install build-essential automake autoconf libtool pkg-config intltool libcurl4-openssl-dev libevent-dev zlib1g-dev libssl-dev |
Et on récupère les sources.
1 2 3 4 5 6 7 8 9 10 | root@server:~# cd /tmp/ root@server:/tmp# wget https://download.transmissionbt.com/files/transmission-2.92.tar.xz [...] 2016-06-21 22:07:56 (9.43 MB/s) - 'transmission-2.92.tar.xz' saved [3378116/3378116] root@server:/tmp# sha256sum transmission-2.92.tar.xz 3a8d045c306ad9acb7bf81126939b9594553a388482efa0ec1bfb67b22acd35f transmission-2.92.tar.xz root@server:/tmp# tar xvf ./transmission-2.92.tar.xz |
Compilation
Là l’idée est de bien gérer les paramètres d’installation afin de ne pas percuter l’instance transmission installée avec apt. Toutes les options possibles sont détailles grâce à un ./configure --help
. Ici l’installation est faite dans le répertoire /opt/transmission
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | root@server:/tmp/transmission-2.92# ./configure --help `configure' configures transmission 2.92 to adapt to many kinds of systems. [...] Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names [...] root@server:/tmp/transmission-2.92# ./configure --prefix=/opt/transmission/usr/local --exec-prefix=/opt/transmission --program-prefix=alt\- --enable-daemon --enable-cli --enable-utp root@server:/tmp/transmission-2.92# make root@server:/tmp/transmission-2.92# make install |
Le compilateur permet de rajouter un préfixe ou un suffixe au nom du programme, mais aussi de complètement changer le nom ! Dans mon cas, j’ai préféré « alt-transmission » pour bien marquer la différence avec l’instance « apt ». Mais l’appeler « bisous-hadopi » est tout à fait possible ! 🙂
Configurer le Daemon
On crée dans un premier temps un utilisateur et un groupe « alt-transmission ».
1 2 | root@server:~# groupadd -r alt-transmission root@server:~# useradd -r -g alt-transmission -s /sbin/nologin -m -c "alt-transmission user" alt-transmission |
Et on installe un script Systemd. Ici un seul piège, il faut que la description (ligne 3) soit différente de celle de l’instance Transmission « principale ».
1 2 3 4 5 6 7 8 9 10 11 12 13 | root@server:~# cat /lib/systemd/system/alt-transmission.service [Unit] Description=Alt Transmission BitTorrent Daemon After=network.target [Service] User=alt-transmission Type=simple ExecStart=/opt/transmission/bin/alt-transmission-daemon -f --log-error ExecReload=/bin/kill -s HUP $MAINPID [Install] WantedBy=multi-user.target |
On peut alors activer et démarrer le service « alt-transmission »… Ou presque.
1 2 3 4 5 6 | root@server:~# systemctl enable alt-transmission.service Created symlink from /etc/systemd/system/multi-user.target.wants/alt-transmission.service to /lib/systemd/system/alt-transmission.service. root@server:~# systemctl stop transmission-daemon root@server:~# systemctl start alt-transmission.service |
Il est préférable d’arrêter avant le Transmission fourni par apt avec un systemctl stop transmission-daemon.service
. En effet, le premier lancement va créer un fichier de config settings.json
avec les paramètres par défauts risquant de faire entrer en conflit les deux instances de Transmission.
Éditez donc le fichier de config et assurez-vous que les deux instances utilisent des IPs et des ports différents. Profitez-en pour paramétrer la nouvelle instance Transmission selon vos besoins.
1 2 | root@server:~# ls /home/alt-transmission/.config/transmission-daemon/settings.json -alh -rw------- 1 alt-transmission alt-transmission 2.2K Jun 25 11:08 /home/alt-transmission/.config/transmission-daemon/settings.json |
Problème Fréquent
Cette erreur vient de l’utilisation du protocole uTP.
1 2 3 4 5 6 7 8 9 10 11 | root@server:~# service alt-transmission status * alt-transmission.service - Alt Transmission BitTorrent Daemon Loaded: loaded (/etc/systemd/system/alt-transmission.service; enabled) Active: failed (Result: timeout) since Fri 2016-06-24 20:07:45 CEST; 14h ago Process: 14855 ExecStart=/opt/transmission/bin/alt-transmission-daemon -f --log-error (code=exited, status=0/SUCCESS) Main PID: 14855 (code=exited, status=0/SUCCESS) Jun 24 20:06:16 server alt-transmission-daemon[14855]: [2016-06-24 20:06:16.634] UDP Failed to set receive buffer: requested 4194304, got 266240 (tr-udp.c:84) Jun 24 20:06:16 server alt-transmission-daemon[14855]: [2016-06-24 20:06:16.634] UDP Failed to set send buffer: requested 1048576, got 266240 (tr-udp.c:95) Jun 24 20:06:16 server alt-transmission-daemon[14855]: [2016-06-24 20:06:16.634] UDP Failed to set receive buffer: requested 4194304, got 266240 (tr-udp.c:84) Jun 24 20:06:16 server alt-transmission-daemon[14855]: [2016-06-24 20:06:16.634] UDP Failed to set send buffer: requested 1048576, got 266240 (tr-udp.c:95) |
Vous pouvez au choix :
- ignorer l’erreur
- désactiver le protocole utp dans le fichier settings.json (paramètre « utp-enabled »)
- rajouter les lignes suivantes dans le fichier
/etc/sysctl.conf
net.core.rmem_max = 4194304
net.core.wmem_max = 1048576
En Conclusion
Si tout s’est bien passé, deux instances de transmission tournent maintenant en parallèle sur votre serveur. N’oubliez pas qu’il est possible de les protéger toutes les deux derrière un reverse proxy en SSL.