Ceci est une ancienne révision du document !



Deluge

Deluge est un client BitTorrent basé sur Python et GTK+. il s'intègre donc bien dans Gnome, XFCE et LXDE.

Fonctionnalités de base :
  • Affichage dans une seule fenêtre des téléchargements simultanés
  • Gestion des priorités de téléchargement (par torrent, mais aussi pour chacun des fichiers compris dans un torrent)
  • Supporte la Mainline DHT,
  • Supporte l'UPnP et le mappage des ports NAT-PMP
  • Supporte le chiffrement des flux
  • Supporte le µTorrent Peer Exchange
Greffons intégrés :
  • Création de torrents
  • Déplacements de torrents (une fois le téléchargement entamé)
  • Sauvegarde de différents paramétrages pour une utilisation "nomade"
  • Recherche de .torrent (à personnaliser)
  • Blocage d'IP par import de listes noires
  • Affichage graphique des flux entrants et sortants
  • Planificateur
  • Support des flux RSS

Vous avez besoin d'avoir un dépôt proposant Deluge:

Une fois qu'au moins un dépôt est disponible, actualisez la liste de votre gestionnaire de paquets (apt-get, aptitude).

Installez le paquet deluge.

Si vous souhaitez utiliser Deluge en ligne de commandes, installez le paquet deluge-console.

Installation

Démarrage

L'état de l'article actuel a pour pratique de lancer les services, démons ou services avec des utilisateurs dédiés.

sudo adduser --disabled-password --system --home /var/lib/deluge --gecos "SamRo Deluge server" --group deluge

Créez le fichier /etc/default/deluge-daemon Remplissez-le par le contenu suivant :

/etc/default/deluge-daemon
# Configuration for /etc/init.d/deluge-daemon
 
# The init.d script will only run if this variable non-empty.
DELUGED_USER="deluge"
 
# Should we run at startup?
RUN_AT_STARTUP="YES"

Créez un autre fichier du même nom dans /etc/init.d avec ce contenu:

/etc/init.d/deluge-daemon
#!/bin/sh
### BEGIN INIT INFO
# Provides:          deluge-daemon
# Required-Start:    $local_fs $remote_fs
# Required-Stop:     $local_fs $remote_fs
# Should-Start:      $network
# Should-Stop:       $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Daemonized version of deluge and webui.
# Description:       Starts the deluge daemon with the user specified in
#                    /etc/default/deluge-daemon.
### END INIT INFO
 
# Author: Adolfo R. Brandes 
# Modified: Sami Olmari
 
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="Deluge Daemon"
NAME1="deluged"
NAME2="deluge-web"
DAEMON1=/usr/bin/deluged
DAEMON1_ARGS="-d -c /var/lib/deluge -l /var/log/deluged.log -L warning"
DAEMON2=/usr/bin/deluge-web
DAEMON2_ARGS="-p 9092 -c /var/lib/deluge -l /var/log/deluge-web.log -L warning"
PIDFILE1=/var/run/$NAME1.pid
PIDFILE2=/var/run/$NAME2.pid
PKGNAME=deluge-daemon
SCRIPTNAME=/etc/init.d/$PKGNAME
 
# Exit if the package is not installed
[ -x "$DAEMON1" -a -x "$DAEMON2" ] || exit 0
 
# Read configuration variable file if it is present
[ -r /etc/default/$PKGNAME ] && . /etc/default/$PKGNAME
 
# Load the VERBOSE setting and other rcS variables
[ -f /etc/default/rcS ] && . /etc/default/rcS
 
# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions
 
if [ -z "$RUN_AT_STARTUP" -o "$RUN_AT_STARTUP" != "YES" ]
then
   log_warning_msg "Not starting $PKGNAME, edit /etc/default/$PKGNAME to start it."
   exit 0
fi
 
if [ -z "$DELUGED_USER" ]
then
    log_warning_msg "Not starting $PKGNAME, DELUGED_USER not set in /etc/default/$PKGNAME."
    exit 0
fi
 
#
# Function that starts the daemon/service
#
do_start()
{
   # Return
   #   0 if daemon has been started
   #   1 if daemon was already running
   #   2 if daemon could not be started
   start-stop-daemon --start --background --quiet --pidfile $PIDFILE1 --exec $DAEMON1 \
      --chuid $DELUGED_USER --user $DELUGED_USER --test > /dev/null
   RETVAL1="$?"
   start-stop-daemon --start --background --quiet --pidfile $PIDFILE2 --exec $DAEMON2 \
      --chuid $DELUGED_USER --user $DELUGED_USER --test > /dev/null
   RETVAL2="$?"
   [ "$RETVAL1" = "0" -a "$RETVAL2" = "0" ] || return 1
 
   start-stop-daemon --start --background --quiet --pidfile $PIDFILE1 --make-pidfile --exec $DAEMON1 \
      --chuid $DELUGED_USER --user $DELUGED_USER -- $DAEMON1_ARGS
   RETVAL1="$?"
        sleep 2
   start-stop-daemon --start --background --quiet --pidfile $PIDFILE2 --make-pidfile --exec $DAEMON2 \
      --chuid $DELUGED_USER --user $DELUGED_USER -- $DAEMON2_ARGS
   RETVAL2="$?"
   [ "$RETVAL1" = "0" -a "$RETVAL2" = "0" ] || return 2
}
 
#
# Function that stops the daemon/service
#
do_stop()
{
   # Return
   #   0 if daemon has been stopped
   #   1 if daemon was already stopped
   #   2 if daemon could not be stopped
   #   other if a failure occurred
 
   start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --user $DELUGED_USER --pidfile $PIDFILE2
   RETVAL2="$?"
   start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --user $DELUGED_USER --pidfile $PIDFILE1
   RETVAL1="$?"
   [ "$RETVAL1" = "2" -o "$RETVAL2" = "2" ] && return 2
 
   rm -f $PIDFILE1 $PIDFILE2
 
   [ "$RETVAL1" = "0" -a "$RETVAL2" = "0" ] && return 0 || return 1
}
 
case "$1" in
  start)
   [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME1"
   do_start
   case "$?" in
      0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
      2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
   esac
   ;;
  stop)
   [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME1"
   do_stop
   case "$?" in
      0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
      2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
   esac
   ;;
  restart|force-reload)
   log_daemon_msg "Restarting $DESC" "$NAME1"
   do_stop
   case "$?" in
     0|1)
      do_start
      case "$?" in
         0) log_end_msg 0 ;;
         1) log_end_msg 1 ;; # Old process is still running
         *) log_end_msg 1 ;; # Failed to start
      esac
      ;;
     *)
        # Failed to stop
      log_end_msg 1
      ;;
   esac
   ;;
  *)
   echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
   exit 3
   ;;
esac
 
:

Rendez le script exécutable

sudo chmod a+x /etc/init.d/deluge-daemon

Configurez le lancement au démarrage du système

sudo update-rc.d deluge-daemon defaults

Lancez le service

sudo service deluge-daemon start

Installation automatisée

Ce script réalise l'installation et le démarrage tel que vu dans ce tutoriel:

sudo add-apt-repository ppa:deluge-team/ppa
sudo apt-get update
sudo apt-get install deluged deluge-web
sudo adduser --disabled-password --system --home /var/lib/deluge --gecos "SamRo Deluge server" --group deluge
sudo wget http://doc.ubuntu-fr.org/_export/code/deluge?codeblock=1 --output-document=/etc/default/deluge-daemon
sudo wget http://doc.ubuntu-fr.org/_export/code/deluge?codeblock=2 --output-document=/etc/init.d/deluge-daemon
sudo chmod a+x /etc/init.d/deluge-daemon
sudo update-rc.d deluge-daemon defaults
sudo /var/lib/deluge
sudo service deluge-daemon start

Configuration sous Xenial

Comme Xenial utilise systemd en remplacement de Init.d ou upstart pour la gestion des services, la configuration est légèrement différente.

Gestion des utilisateurs

Comme auparavant, on commence en creant un utilisateur specifique deluge avec un répertoire personnel /var/lib/deluge

sudo adduser --system  --gecos "Deluge Service" --disabled-password --group --home /var/lib/deluge deluge

Il est intéressant d'en profiter pour inclure les utilisateurs qui vont utiliser Deluge dans le groupe deluge afin qu'ils puissent facilement récupérer les fichiers téléchargés. Exemple pour l'utilisateur Toto :

sudo adduser Toto deluge

Suppressions des anciennes configurations

Assurez vous qu'il n'y ait pas d'anciens fichiers de configuration Init.d ou upstart sur votre machine.
Pour init.d :

sudo /etc/init.d/deluge-daemon stop
sudo rm /etc/init.d/deluge-daemon
sudo update-rc.d deluge-daemon remove 

Pour upstart :

sudo stop deluged
sudo stop deluge-web
sudo rm /etc/init/deluge-web.conf
sudo rm /etc/init/deluged.conf

Creation du service Deluge Daemon (deluged)

Créez le fichier /etc/systemd/system/deluged.service et éditez-le comme ceci :

/etc/systemd/system/deluged.service
[Unit]
Description=Deluge Bittorrent Client Daemon
After=network-online.target
 
[Service]
Type=simple
User=deluge
Group=deluge
UMask=007
 
ExecStart=/usr/bin/deluged -d
 
Restart=on-failure
 
# Configures the time to wait before service is stopped forcefully.
TimeoutStopSec=300
 
[Install]
WantedBy=multi-user.target
Modifiez UMask=007 selon votre convenance :
  • 007 donne l'accès complet à l'utilisateur et les membres du groupe deluge, aucun accès aux autres
  • 022 donne l'accès complet à l'utilisateur deluge et l'accès en lecture seul aux membres du groupe deluge et aux autres
  • 000 donne l'accès complet à tout le monde

Vous pouvez maintenant configurer le service pour qu'il soit lancé au démarrage, le lancer et vérifier son bon fonctionnement :

systemctl enable /etc/systemd/system/deluged.service
systemctl start deluged
systemctl status deluged

Creation du service Deluge Web UI (deluge-web)

Créez le fichier /etc/systemd/system/deluge-web.service et éditez-le comme ceci :

/etc/systemd/system/deluge-web.service
[Unit]
Description=Deluge Bittorrent Client Web Interface
After=network-online.target
 
[Service]
Type=simple
 
User=deluge
Group=deluge
UMask=027
 
ExecStart=/usr/bin/deluge-web
 
Restart=on-failure
 
[Install]
WantedBy=multi-user.target

Vous pouvez maintenant configurer le service pour qu'il soit lancé au démarrage, le lancer et vérifier son bon fonctionnement :

systemctl enable /etc/systemd/system/deluge-web.service
systemctl start deluge-web
systemctl status deluge-web

Mise en service des log

Pour le débogage, il est recommandé de mettre en service les logs en créant le répertoire /var/log/deluge et en assignant les logs à l'utilisateur deluge

sudo mkdir -p /var/log/deluge
sudo chown -R deluge:deluge /var/log/deluge
sudo chmod -R 750 /var/log/deluge

Pour que nos 2 services précédemment créés et lancés activent les logs, il faut modifier la ligne ExecStart= en y ajoutant l'option -l et -L

ExecStart=/usr/bin/deluged -d -l /var/log/deluge/daemon.log -L warning
ExecStart=/usr/bin/deluge-web -l /var/log/deluge/web.log -L warning

Il n'y a plus qu'a relancer les services pour que les modifications prennent effet.

systemctl restart deluged
systemctl restart deluge-web

Et configurer la rotation des logs en creant le fichier /etc/logrotate.d/deluge avec le contenu suivant

/etc/logrotate.d/deluge
/var/log/deluge/*.log {
        rotate 4
        weekly
        missingok
        notifempty
        compress
        delaycompress
        sharedscripts
        postrotate
                systemctl restart deluged >/dev/null 2>&1 || true
                systemctl restart deluge-web >/dev/null 2>&1 || true
        endscript
}

Utilisation

Par défaut l'interface est joignable sur le port 8112. Mais dans le fichier de configuration ci-dessus, on a spécifié le port 9092.

http://localhost:9092

Vous pouvez le modifier dans l'interface. Notez que vous ne pouvez pas configurer un port inférieur à 1024 sans manipulations que je ne décrirai pas ici.

Chiffrer vos échanges

Si vous utilisez deluge en dehors de votre réseau local (en déplacement, ou via votre mobile avec une appli comme Transdroid), il est possible que vous souhaitiez chiffrer vos échanges avec votre serveur.

Pour ce faire, deluge supporte le chiffrement via SSL que vous pouvez activer dans Préférences>Interface>Use SSL de l'interface Web de Deluge. Vous pouvez éventuellement créer vos propres certificats SSL que vous placerez dans le dossier /var/lib/deluge/ssl avant de modifier vos préférences.

Deluge refuse de démarrer :

Si Deluge refuse de démarrer, il peut y avoir plusieurs raisons à cela. Lancer Deluge dans un terminal pour voir un peu plus en détail ce qui se passe.

Si vous obtenez quelque chose qui ressemble à l'analyse des trackers actifs suivi d'une erreur semblable, lisez la méthode de résolution après.

Exemple :

Torrent Size 71904023.0
Available Space 5355061248
Raising error: 
deluge_core; using libtorrent 0.11.0.0. Compiled with NDEBUG value: 1
terminate called after throwing an instance of 'boost::filesystem::filesystem_error'
  what():  boost::filesystem::default_name_check: default name check already set
Abandon (core dumped)

il suffit d'exécuter cette commande dans un terminal :

$ rm ~/.config/deluge/*.state && rm ~/.config/deluge/torrentfiles/*.fastresume

Impossible de créer un torrent:

Certaines versions de Deluge (dont la 1.3.10-3) peuvent comporter un bug empêchant la création d'un torrent. Il suffit de mettre à jour vers la version suivante 1.3.12-1. Voir discussion ci-dessous:

https://forum.ubuntu-fr.org/viewtopic.php?id=926501

Mise à Jour :

Lorsqu'une nouvelle version de Deluge sort, elle est disponible dans un premier temps sur le site officiel et quelques heures après dans les Dépôts (ci-dessus), entre temps si vous lancez Deluge et que les dépôts n'ont pas encore été mis à jour Deluge va afficher une message au lancement qui vous envoie sur le site officiel pour récupérer la mise à jour manuellement, ce qui enlève donc l'intérêt des dépôts. Pour y remédier allez dans "Préférences" puis "Divers" et enfin décochez "Etre averti des nouvelles versions". Ainsi les mises à jour s'effectueront avec le gestionnaire de mise à jour comme les autres logiciels.

Connexion à l'interface web du daemon Deluge

Lors de la connexion à l'interface web, celle_ci vous demande de rentrer un password. par défaut (lors de la première connexion), le password est deluge. Le système vous demandera alors d'en changer.


  • deluge.1474431606.txt.gz
  • Dernière modification: Le 21/09/2016, 06:20
  • par zarmu