====== Seedbox avec deluge (deluged et deluge-web) ======
===== Historique de cet article =====
* Article initialement écrit en 2013 sous Debian Wheezy, avec la version 1.3.3-2+nmu1 de Deluge. L'interface web était alors pas mal buggée et pas vraiment utilisable, ça a sûrement évolué depuis.
* Article repris en août 2017, sous Debian Stretch, avec la version de Deluge 1.3.13.
===== Préambule =====
Deluge a été conçu de façon flexible et modulaire. Il est possible de le lancer en tant que [[def>daemon]], c'est à dire sans interface graphique. Il est alors possible de lui greffer l'interface graphique souhaitée, qui peut être une console, une interface graphique classique (GTK), ou bien une interface web. Dans le cas d'une seedbox, on sera plutôt tentés par l'interface web.
Quel est l'intérêt de cette solution par rapport à [[p2p>rtorrent]]+rutorrent ?
* La solution Deluge a pour avantage d'avoir son interface web (la WebUI) déjà packagée dans Debian, donc installable en 1 click (ainsi que ses mises à jour que vous n'aurez donc pas à faire à la main).
* La WebUI intègre son propre serveur web, vous n'aurez donc pas besoin d'installer un serveur web (omme le requiert ruTorrent).
Le guide du site officiel (en anglais) décrivant cet usage type "Seedbox" pour Deluge, appellé "Thin Client", est consultable ici : http://dev.deluge-torrent.org/wiki/UserGuide/ThinClient
Nous ne suivrons pas strictement ce guide, car Debian dispose déjà de rails qui nous invitent à procéder d'une certaine façon, donc suivons ces rails...
L'une des limitations de cette solution est qu'elle n'est pas orientée "multi-utilisateurs", donc si vous partagez votre accès à votre seedbox avec d'autres personnes, tous les torrents seront rassemblés dans une même interface. Note: il en va de même avec le couple rtorrent+rutorrent, par contre on peut mimer un cloisonnement entre les usagers avec le couple [[:p2p/rtorrent/pyroscope-rtorrent-ps|rtorrent+pyroscope]], mais c'est plus de boulot... il existe peut-être plus simple...
===== Installation sous Debian Stretch =====
Cela se fait assez simplement, il suffit d'installer les paquets **deluged** et **deluge-web**.
Il n'est pas nécessaire d'installer le meta-paquet **deluge**.
apt install deluged deluge-web
Rappel: le "d" du bout deluge**d** signifie [[def>daemon|daemon]], autrement dit il est conçu pour tourner en tant que service système, sans interface graphique liée.
==== Un peu de repérage ====
Debian créé un compte utilisateur système nommé ''debian-deluged'', qui ne dispose pas de répertoire /home.
# systemctl status deluged
● deluged.service - LSB: Start or stop the Deluge BitTorrent daemon.
Loaded: loaded (/etc/init.d/deluged; generated; vendor preset: enabled)
Active: active (exited) since Sat 2017-08-05 22:30:38 CEST; 17min ago
Docs: man:systemd-sysv-generator(8)
Tasks: 0 (limit: 4915)
CGroup: /system.slice/deluged.service
On voit ici que même sous Stretch, qui utilise SystemD, le script de lancement est du type init.d.((Deluge fournit [[http://dev.deluge-torrent.org/wiki/UserGuide/Service/systemd|ici]] un fichier Unit pour systemD si cela vous intéresse.)).
Le chemin du script est ''/etc/init.d/deluged'', on évitera de le modifier (car il est réécrit à chaque mise à jour du paquet) mais on peut regarder son contenu.
Il nous indique l'emplacement du fichier de config : ''/var/lib/deluged/config''. Après vérification, il s'agit d'un répertoire, qui est normalement vide.
Il indique aussi le chemin d'un journal d'activité (écrasé/réécrit à chaque lancement de Deluge) : ''/var/log/deluged/daemon.log''.
Petit problème maintenant, Debian est gentil d'avoir fourni le script pour démarrer le démon, mais aucun script n'est fourni pour l'interface web, qui doit être lancée elle aussi. Nous y remédierons un peu plus tard.
===== Comment démarrer Deluge =====
==== Manuellement ====
SystemD gère les scripts init.d, on peut donc gérer le démarrage de Deluge via SystemD.
# Vérifier si Deluge tourne
systemctl status deluged
# Fermer Deluge à la main
systemctl stop deluged
# Démarrer Deluge manuellement
systemctl start deluged
==== Au démarrage du système ====
Par la suite, on souhaitera que Deluge soit automatiqement démarré par SystemD, à chaque redémarrage du système.
Il faut pour cela éditer le fichier ''/etc/default/deluged'', et changer la valeur sur "1" pour indiquer que oui, on désire charger le démon au démarrage du système.
Vous pouvez modifier cette valeur maintenant, mais il est plus sage de d'abord éditer la configuration de Deluge, et de vérifier si elle fonctionne.
===== Générer un squelette de configuration =====
On a dit que le répertoire ''/var/lib/deluged/config'' était vide. Deluge va pouvoir générer un squelette de config qui nous servira de base, il suffit pour cela de démarrer deluged, puis de l'arrêter.
# On redémarre Deluged, et on l'éteint.
systemctl stop deluged
systemctl start deluged
systemctl stop deluged
Vérifiez que le répertoire de config a bien été rempli :
ls /var/lib/deluged/config
Redémarrez Deluge à la main, puis jettez un oeil au log pour vérifier si celui-ci trouve bien ses fichiers de conf :
systemctl start deluged
less /var/log/deluged/daemon.log
===== Gérer le démarrage de la WebUI façon SystemD =====
On va reprendre le script proposé sur le site de Deluge, en l'adaptant à Debian : http://dev.deluge-torrent.org/wiki/UserGuide/Service/systemd
[Unit]
Description=Deluge Bittorrent Client Web Interface
Documentation=man:deluge-web
After=network-online.target deluged.service
Wants=deluged.service
[Service]
Type=simple
User=debian-deluged
Group=debian-deluged
UMask=027
ExecStart=/usr/bin/deluge-web
Restart=on-failure
[Install]
WantedBy=multi-user.target
Puis on l'active, on la démarre, et on vérifie que ça tourne :
systemctl enable /etc/systemd/system/deluge-web.service
systemctl start deluge-web
systemctl status deluge-web
===== Accéder à l'interface web =====
Maintenant, tout dépend de "où" vous avez installé Deluge. Sur une machine distante, sur votre ordi ou un autre ordi de votre réseau local. Mais l'histoire est la même, il vous faut son adresse IP (ou un nom de domaine qui redirige vers cette adresse IP). Mais a priori, pas un soucis, vous savez déjà accéder à votre machine.
Astuce si votre ordi tourne sous linux, vous pouvez donner un nom d'hôte à votre seedbox pour en faciliter l'accès depuis votre ordi :
En étant root, sur sa propre machine (et non pas sur la seedbox) :
# Remplacez 192.168.x.y par l'adresse IP de votre seedbox
echo "192.168.x.y delugeweb" >> /etc/hosts
On accèdera ensuite à l'interface de Deluge via : http://delugeweb:8112 (chez moi, la version https ne passe pas...).
Le mot de passe par défaut est **deluge**, il vous recommende de le changer juste après votre 1ère connexion.
==== Problème de communication entre deluged et deluge-web ====
Et là je tombe sur un truc chiant, visible par un ''systemctl deluge-web status'' :
août 06 15:44:48 mplserv deluge-web[31983]: [ERROR ] 15:44:48 client:391 RPCError Message Received!
août 06 15:44:48 mplserv deluge-web[31983]: --------------------------------------------------------------------------------
août 06 15:44:48 mplserv deluge-web[31983]: RPCRequest: daemon.login(, )
août 06 15:44:48 mplserv deluge-web[31983]: --------------------------------------------------------------------------------
août 06 15:44:48 mplserv deluge-web[31983]: File "/usr/lib/python2.7/dist-packages/deluge/core/rpcserver.py", line 262, in dispatch
août 06 15:44:48 mplserv deluge-web[31983]: ret = component.get("AuthManager").authorize(*args, **kwargs)
août 06 15:44:48 mplserv deluge-web[31983]: File "/usr/lib/python2.7/dist-packages/deluge/core/authmanager.py", line 89, in authorize
août 06 15:44:48 mplserv deluge-web[31983]: raise BadLoginError("Username does not exist")
août 06 15:44:48 mplserv deluge-web[31983]: BadLoginError: Username does not exist
août 06 15:44:48 mplserv deluge-web[31983]: --------------------------------------------------------------------------------
Bon, il y a une solution... Ajoutons un utilisateur comme indiqué ici : http://dev.deluge-torrent.org/wiki/UserGuide/ThinClient#AddUsertotheauthenticationfile
Fermer le démon, éditer le fichier auth, ajouter un utilisateur, enregistrer le fichier.
Puis redémarrer deluged.
Dans l'interface web, dans la petite fenêtre «Gestionnaire de connexion» où l'on constate que la WebUI ne parvient pas à communiquer avec le démon, recréez une entrée, et indiquez le login+mdp que vous avez écrit dans le fichier auth. Cette fois-ci, Deluge-Web devrait retrouver son copain Deluged.
===== Configuration Basique =====
Maintenant que vous pouvez accéder à l'interface web de Deluge, et que deluged et deluge-web communiquent bien ensemble, vous pouvez aller dans les préférences via l'interface web.
On vous conseille de changer l'emplacement des téléchargements (actuellement dans /var/lib...). Rangez ça [[:p2p:deluge#organisez_vos_repertoires_de_telechargement|comme vous l'aimez]].
Le répertoire de destination de vos téléchargements devra aussi avoir ses permissions revues (avec chown et chmod).
Le propriétaire devra être l'utilisateur "debian-deluged".
chown -R debian-deluged /mnt/local/1/downloads/deluge/
===== Rendre accessible les fichiers téléchargés =====
Vous avez plusieurs solutions pour rappatrier les fichiers présents dans le répertoire de votre serveur.
La solution la plus commune est d'installer un serveur web, souvent Apache, qui propose un bête listing des fichiers, vous n'avez qu'à clicker pour télécharger via votre navigateur. L'inconvénient est que c'est peu pratique si vous souhaitez récupérer de nombreux fichiers.
Une solution linuxienne, c'est de faire un montage sshfs de votre répertoire. Presque rien à configurer, très pratique.
Et pour un accès qui fonctionne quel que soit la plateforme, la solution sftp (qui repose sur SSH) est pas mal. Les utilisateurs devront juste installer Filezilla pour pouvoir accéder à vos fichiers. Nous avons écrit un guide : [[:documentation/linux/serveur-sftp]]
===== Extensions navigateurs pour envoyer les torrents vers la WebUI =====
Des plugins sont disponibles ici : http://dev.deluge-torrent.org/wiki/Plugins#BrowserPlugins
Le plugin pour Chrom(ium), [[https://chrome.google.com/webstore/detail/gabdloknkpdefdpkkibplcfnkngbidim|DelugeSiphon]], a été testé avec succès. Penser à aller dans les options, et à indiquer l'URL+mdp de la WebUI.
Les plugins firefox ont été testés sans succès : l'un est dédié à d'anciennes versions de Firefox, donc pas envie de l'installer. L'autre est un script GreaseMonkey qui ne semble pas faire le boulot dans mon cas, après l'avoir édité, je ne vois pas d'icône Deluge apparaître dans les pages web.
===== Documentation externe =====
* http://dev.deluge-torrent.org/wiki/UserGuide/ThinClient : Guide d'usage du couple deluged+WebUI
* http://dev.deluge-torrent.org/wiki/UserGuide/Service : Config des services au démarrage pour le démon et la WebUI (SystemD, init.d, upstart...)
* http://bugs.debian.org/cgi-bin/pkgreport.cgi?package=deluge
* http://bugs.debian.org/cgi-bin/pkgreport.cgi?package=deluge-web