viernes, junio 07, 2013

Instalar torrent en Raspberry Pi - Parte II: Instalar el servidor de torrent (Deluge)

Aunque hay otros servidores de torrent más populares en linux mi preferido sigue siendo Deluge. Es un poco más complicado de configurar pero resulta ser bastante menos voraz con la conexión (sigo pudiendo navegar con mi red) dando una tasas de descarga muy altas. Además permite acceder al servidor desde un sencillo navegador, desde un cliente gráfico en otra máquina o incluso desde un teléfono android usando Transdroid. Esta última opción es especialmente útil porque el propio Transdroid dispone de un buscador así que el método de uso se vuelve especialmente sencillo: arrancamos en nuestro móvil transdroid, buscamos lo que queremos y directamente lo ponemos a descargar en nuestra RPi.

Vamos al método:

Fija la IP
Antes de todo sería conveniente que fijaras la dirección ip de tu RPi, si no será complicado que puedas conectarte a ella desde después. Tienes las instrucciones en este artículo.

Asegurar el espacio en disco
Si no lo has hecho antes es también importante que instales un disco duro externo que permita tener espacio de sobra para tus descargas. En el artículo anterior te explico cómo hacerlo.

En mi caso las descargas se llevarán a cabo en /media/usbdisk/torrent/. Asegúrate que el directorio que escojas exista y sea accesible para tu usuario pi.

Instalar y configurar Deluge server
Las instrucciones están extraídas de la propia web de Deluge y adaptadas a mi caso particular.

Podemos usar el paquete que se distribuye en los repositorios

$sudo apt-get install deluged deluge-console deluge-web

Hacemos una corta ejecución para que genere los archivos de configuración del usuario

$deluged
$pkill deluged

Añadimos un usuario que luego utilizaremos para conectarnos al servidor a través de la red:

$ echo "pi:pipass:10" >> ~/.config/deluge/auth


Ahora viene la configuración del arranque del servidor que es algo más delicada. Tenemos que crear un par de archivos:

$ sudo nano /etc/default/deluge-daemon

y pega este contenido dentro para que sea el usuario pi el que ejecuta deluge

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

# The init.d script will only run if this variable non-empty.
DELUGED_USER="pi"    

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

Ahora creamos el script de arranque, basta con editar el siguiente archivo:

$ sudo nano /etc/init.d/deluge-daemon

Y completarlo con el siguiente contenido:

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

:

Convertimos el archivo en ejecutable...

$sudo chmod 755 /etc/init.d/deluge-daemon

...con el siguiente comando hacemos que se ejecute en cada arranque...

$sudo update-rc.d deluge-daemon defaults


Y ya podemos arrancar el servidor...

$sudo service deluge-daemon start


Ya deberías poder conectar con el servidor abriendo tu navegador y visitando la dirección http://192.168.0.254:8112/ (ajustando la IP a la de tu RPi). Es el momento adecuado para que configures la carpeta donde quieres que realicen las descargas y demás.

Configurando Deluge para acceder con otros clientes
Habilitamos el acceso remoto para poder acceder desde nuestro nuestro portatil con el GUI

$deluge-console "config -s allow_remote True"
$deluge-console "config allow_remote"
$sudo service deluge-daemon restart

Ya puedes configurar tu cliente de Deluge en tu portátil.

Para configurar Transdroid debes asegurarte que el servidor web se conecta automáticamente al servidor local de Deluge. Lo apagamos, editamos la configuración y lo volvemos a arrancar.

$sudo service deluge-daemon restart
$nano ~/.config/deluge/web.conf

Busca la siguiente línea y la cambias así
"default_daemon": "" 
"default_daemon": "127.0.0.1:58845"

Protege de cambios el archivo web.conf para que no se actualice en cada arranque:

$chmod 444 ~/.config/deluge/web.conf

Ya puedes reiniciar el servidor y conectar con Transdroid.

$sudo service deluge-daemon start

1 comentario: