Deluge – Powerful torrent client with fancy web Interface

One of the most enjoyable benefits to have its own server might come from the ease to download any torrents (Especially some free GNU/Linux distribution) through a nice web interface accessible anywhere and then just go home and have your torrents waiting for you.

The 3 most popular torrents clients with Web Interface are Deluge, Rtorrent and Transmission. Let me tell you what are my preferences.

1) Deluge Torrent:

 

Deluge Torrent is for me the best compromise between a very powerful torrent client (like Rtorrent) and a very simple torrent client (Like Transmission).

Deluge’s performance is very good as I used to seeds 3000+ torrents of Creative Commons content (From Joomla) when I was promoting .ogg files on the platform, with a fancy web interface, good support and yet easy to install and configure.

 

2) Rtorrent

http://www.lennu.net/images/blog/2012-11-29/1.png

 

Rtorrent is for me the most powerful torrent client: Powerful command line interface, can handle 5000+ torrents, with several possible web interfaces as Wtorrent or Rutorrent for my 2 favorites, with multi user support, etc… but can be difficult to install…

http://filesharefreak.com/images2/seedbox_wtorrent.gif

http://filesharefreak.com/images3/rutorrent_index.gif

 

3) Transmission Bitorrent
http://icack.com/temp/trans-web.jpgTransmission is for me the safe one, easy to install quite powerful and good enough (Nice command line interface, good Web UI, …) but a bit too simple with not enough options.

 

Deluge is basically my favourite client for either Server or Desktop on either Linux, Windows or even Mac and here is how to install it on your server.

 

Installation

As root user (su) type:

apt-get install deluged deluge-webui

and accept the dependencies.

This will install the 1.3.3.2 version at this date on my Debian Stable system.

Configuration

To improve a bit the security and be more flexible, it’s better to create a dedicated deluge user to run this service and its dedicated log files. Still using root user (su), type:

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

touch /var/log/deluged.log
touch /var/log/deluge-web.log
chown deluge:deluge /var/log/deluge*

and create deluge configuration file: (Still in root)

nano /etc/default/deluge-daemon

and copy/paste the following configuration:

# 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"

And save (Using CTRL+X, then Y)

Now, create the Init script to be able to start/stop the daemon easily with the configuration you

nano /etc/init.d/deluge-daemon

and copy/paste:

#!/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

:

It will use the port 9092 in this case and thus you will have to open it into your router configuration to allow inbound connection. (Change the line 25 if you want to modify the port)

Then, make this script executable: (Still as root user)

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

add the script in your boot startup list:

update-rc.d deluge-daemon defaults

and start it:

/etc/init.d/deluge-daemon start

 

You should now have access to your working Deluge Torrent Web User Interface at http://myip:9092

The password will be “deluge”.

At your first login, a pop up will recommend you to change this password, just click Yes to do it.

 

Pirate Bay

Gravatar

Loves to discover web-based apps to install on his own server@home and write articles about it

0 Comments:

Add a comment