Deluge

Deluge is a powerfull bittorrent service (based on libtorrent) with a lot of features.

Installation

Install the daemon :

  • deluged

Install one or more interfaces :

  • deluge-web for the web interface
  • deluge-console for the command line
  • deluge-gtk for the GTK interface

When installing the service for a remote use, intall at least deluge-console to test.

Note : python will be automatically installed.

Startup

Deluge is divided in two parts :

  • a deamon (deluged) always running
  • an interface locally or remotely (using tcp port 58846)

Setp1 : starting the service

# deluged
# ps aux|grep deluge
root     19758  0.8  1.1  60888 11720 ?        Sl   20:46   0:00 /usr/bin/python /usr/bin/deluged
root     19766  0.0  0.0   3696   800 pts/0    R+   20:46   0:00 grep deluge
#

Step 2 : starting the one interface with deluge-web, deluge-console or deluge-gtk

# deluge-web
[ERROR   ] 20:48:01 config:293 Error backing up old config..

In our example, the web interface is now available on the port 8112.

Note on passwords

deluged is a service that listen on the tcp port 58846.
deluged accounts are defined in the file ~/.config/deluge/auth.

Each line use the following template :

login:pass:level

password are clear text and the level is between 0 and 10 :

  • 0 : None
  • 1 : Read only
  • 5 : Normal
  • 10 : Admin

The localuser account is automatically defined and used by local interfaces.

Remote access is disabled by default. See allow remote access to enable it.

When the web interface is launched, this one is authenticated by his own password saved in web.conf (“deluge” by default).
:!:It is mandatory to change it at the first login.

Automatic startup

In the current version of the debian package, deluge doesn't run automatically on startup, and the web interface is not a daemon.
Moreover deluge run with the user than execute it and store parameters in the home user directory (in ~/.config/deluge).

We will now :

  • add a dedicated user for deluge
  • automatically start the service and the web interface

Adding a dedicated user

# adduser deluge
Ajout de l'utilisateur « deluge »...
Ajout du nouveau groupe « deluge » (1002)...
Ajout du nouvel utilisateur « deluge » (1002) avec le groupe « deluge »...
Création du répertoire personnel « /home/deluge »...
Copie des fichiers depuis « /etc/skel »...
Entrez le nouveau mot de passe UNIX :
Retapez le nouveau mot de passe UNIX :
passwd : le mot de passe a été mis à jour avec succès
Changing the user information for deluge
Enter the new value, or press ENTER for the default
        Full Name []:
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Ces informations sont-elles correctes ? [O/n] o
#

Automatically start the service and the web interface

This script comes from http://dev.deluge-torrent.org/wiki/UserGuide/InitScript (from http://apocryph.org/2008/11/30/setting_deluge_headless_ubuntu_seedbox_windows_client/).

Add the file /etc/default/deluge-daemon with the content (don't forget to change the user name) :

# Configuration for /etc/init.d/deluge-daemon

# The init.d script will only run if this variable non-empty.
DELUGED_USER="deluge"             # !!!CHANGE THIS!!!!

# Should we run at startup?
RUN_AT_STARTUP="YES"

Add the file /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 

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="Deluge Daemon"
NAME1="deluged"
NAME2="deluge"
DAEMON1=/usr/bin/deluged
DAEMON1_ARGS="-d"             # Consult `man deluged` for more options
DAEMON2=/usr/bin/deluge-web
DAEMON2_ARGS=""               # Consult `man deluge-web` for more options
PIDFILE1=/var/run/$NAME1.pid
PIDFILE2=/var/run/$NAME2.pid
UMASK=22                      # Change this to 0 if running deluged as its own user
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 --umask $UMASK --test > /dev/null
   RETVAL1="$?"
   start-stop-daemon --start --background --quiet --pidfile $PIDFILE2 --exec $DAEMON2 \
      --chuid $DELUGED_USER --user $DELUGED_USER --umask $UMASK --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 --umask $UMASK -- $DAEMON1_ARGS
   RETVAL1="$?"
        sleep 2
   start-stop-daemon --start --background --quiet --pidfile $PIDFILE2 --make-pidfile --exec $DAEMON2 \
      --chuid $DELUGED_USER --user $DELUGED_USER --umask $UMASK -- $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

:

Make the file executable and add it to the startup :

/etc/init.d# chmod 755 deluge-daemon
/etc/init.d# update-rc.d deluge-daemon defaults
 Adding system startup for /etc/init.d/deluge-daemon ...
   /etc/rc0.d/K20deluge-daemon -> ../init.d/deluge-daemon
   /etc/rc1.d/K20deluge-daemon -> ../init.d/deluge-daemon
   /etc/rc6.d/K20deluge-daemon -> ../init.d/deluge-daemon
   /etc/rc2.d/S20deluge-daemon -> ../init.d/deluge-daemon
   /etc/rc3.d/S20deluge-daemon -> ../init.d/deluge-daemon
   /etc/rc4.d/S20deluge-daemon -> ../init.d/deluge-daemon
   /etc/rc5.d/S20deluge-daemon -> ../init.d/deluge-daemon
/etc/init.d#

start the daemon :

# /etc/init.d/deluge-daemon start
# ps aux|grep del
deluge   20151  1.1  1.2  69084 12516 ?        Sl   21:46   0:00 /usr/bin/python /usr/bin/deluged -d
deluge   20162  2.6  0.9  96500  9624 ?        Sl   21:46   0:00 /usr/bin/python /usr/bin/deluge -u web
root     20178  0.0  0.0   3640   504 pts/1    R+   21:46   0:00 grep del
#

Allow remote access

To allow remote access (for example with the GTK interface on Windows/Linux), we need to do the following steps :

  • add a user in the file $home/.config/deluge/auth, for example :
matthieu:mypassword:10
  • stop deluge : /etc/init.d/deluge-daemon stop
  • allow remote access into the file $home/.config/deluge/core.conf by modifying the line :
"allow_remote": true,
  • start deluge : /etc/init.d/deluge-daemon start
  • on the GTK client :
    • disable the classic mode in Edit » Preferences then Interface » classic mode
    • use the connection manager to add the new server

Tunning

Once it's started, modify the following parameters :

  • web interface password (Preferences » Webui » Mot de passe)
  • listening port (Preferences » Network » Incoming Port)
  • bandwidth limit (Preferences » Bandwidth » Global)
  • download folders (Preferences » Downloads » Folders)

Backup

  • /home/deluge/.config/deluge

Links

en/linux/deluge.txt · Last modified: 2011/01/09 11:58 by matthieu
Recent changes RSS feed Debian Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki