{{tag>en en:linux en:file_transfert en:server}}
====== 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 =====
* http://deluge-torrent.org/
* http://deluge-torrent.info/
* http://forum.deluge-torrent.org/
* http://apocryph.org/2008/11/30/setting_deluge_headless_ubuntu_seedbox_windows_client/