Ceci est une ancienne révision du document !
Deluge a été conçu de façon flexible et modulaire. Il est possible de le lancer en tant que 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.
Le guide du site officiel (en anglais) décrivant cet usage, appellé “Thin Client”, est consultable ici : http://dev.deluge-torrent.org/wiki/UserGuide/ThinClient#ClientSetup1
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…
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 deluged signifie daemon, autrement dit il est conçu pour tourner en tant que service système, sans interface graphique liée.
Info: deluged intègre son propre serveur web, il n'est donc pas utile d'installer apache ou un autre serveur web.
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.1).
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
.
… Y'a quand même un truc qui m'intrigue, Debian est gentil d'avoir fourni le script pour démarrer le démon, mais l'interface web se lance indépendemment, et nécessite elle-ausi un script. Nous y remédierons un peu plus tard.
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
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.
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
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
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.
On peut s'amuser à ajouter un nom d'hôte pour faciliter l'accès depuis notre ordi :
En étant root, sur sa propre machine (et non pas sur la seedbox) :
echo "192.168.1.201 delugeweb" >> /etc/hosts
On accèdera ensuite à l'interface de Deluge via : http://delugeweb:8112 (chez moi, la version https ne passe pas…)
Pour configurer deluge, vous devrez simplement vous rendre sur la page web que deluge-web a dû mettre en place de lui-même, sur le port 8112. Rendez-vous avec votre navigateur sur http://ip.de.votre.serveur:8112
Il vous demande un mot de passe, par défaut il s'agit de: deluge Il vous est alors conseillé de le changer dans les options.
Voilà tout pour la configuration basique.
Je constate plusieurs problèmes avec l'interface web:
Je termine là mon expérience pour le moment, hélas peu concluante donc.
La webgui est buggée, donc incomfortable. Il serait possible d'utiliser un autre biais pour configurer deluge. Il est aussi possible que ce problème soit corrigé dans la version upstream (1.3.4) de Deluge.
Je constate un bug qui resort dans le terminal où deluge-web a été lancé:
KeyError: label -------------------------------------------------------------------------------- [ERROR ] 21:12:31 client:393 RPCError Message Received! -------------------------------------------------------------------------------- RPCRequest: core.get_torrents_status({u'label': u''}, [u'queue', u'name', u'total_size', u'state', u'progress', u'num_seeds', u'total_seeds', u'num_peers', u'total_peers', u'download_payload_rate', u'upload_payload_rate', u'eta', u'ratio', u'distributed_copies', u'is_auto_managed', u'time_added', u'tracker_host', u'save_path'], True) -------------------------------------------------------------------------------- File "/usr/lib/python2.7/dist-packages/deluge/core/rpcserver.py", line 298, in dispatch ret = self.factory.methods[method](*args, **kwargs) File "/usr/lib/python2.7/dist-packages/deluge/core/core.py", line 426, in get_torrents_status torrent_ids = self.filtermanager.filter_torrent_ids(filter_dict) File "/usr/lib/python2.7/dist-packages/deluge/core/filtermanager.py", line 173, in filter_torrent_ids if (not status[field] in values) and torrent_id in torrent_ids:
[ERROR ] 21:20:57 client:393 RPCError Message Received! -------------------------------------------------------------------------------- RPCRequest: core.enable_plugin(Execute) -------------------------------------------------------------------------------- File "/usr/lib/python2.7/dist-packages/deluge/core/rpcserver.py", line 298, in dispatch ret = self.factory.methods[method](*args, **kwargs) File "/usr/lib/python2.7/dist-packages/deluge/core/core.py", line 506, in enable_plugin self.pluginmanager.enable_plugin(plugin) File "/usr/lib/python2.7/dist-packages/deluge/core/pluginmanager.py", line 82, in enable_plugin super(PluginManager, self).enable_plugin(name) File "/usr/lib/python2.7/dist-packages/deluge/pluginmanagerbase.py", line 151, in enable_plugin component.start([instance.plugin._component_name]) File "/usr/lib/python2.7/dist-packages/deluge/component.py", line 278, in start if self.components[name]._component_depend: KeyError: CorePlugin.Execute --------------------------------------------------------------------------------
[ERROR ] 21:46:41 json_api:227 Error calling method `web.get_host_status` [ERROR ] 21:46:42 json_api:228 free variable 'host' referenced before assignment in enclosing scope Traceback (most recent call last): File "/usr/lib/python2.7/dist-packages/deluge/ui/web/json_api.py", line 219, in _handle_request result = self._exec_local(method, params, request) File "/usr/lib/python2.7/dist-packages/deluge/ui/web/json_api.py", line 186, in _exec_local return meth(*params) File "/usr/lib/python2.7/dist-packages/deluge/ui/web/json_api.py", line 750, in get_host_status return response(_("Offline")) File "/usr/lib/python2.7/dist-packages/deluge/ui/web/json_api.py", line 745, in response return host_id, host, port, status, info NameError: free variable 'host' referenced before assignment in enclosing scope
Le défi maintenant consisterait à isoler les bugs, les reproduire, et trouver le commit correspondant de façon à ce qu'ils soient réintégrés dans la version stable de Wheezy.