Wtorrent Howto

Descripción

Se trata de compilar todo lo necesario para ejecutar wtorrent, incluyendo rtorrent.
En este documento usaré una debian standard y lighttpd + php5 compilado desde las fuentes oficiales

Compilación

xmlrpc-c

Los binarios provistos por los repositorios oficiles de debian NO valen para lo que necesitamo, asi que es necesario descargar y compilar.
Para ello acudimos a:
http://xmlrpc-c.sourceforge.net/
Y descargamos la version estable actual, en nuestro caso:

wget http://garr.dl.sourceforge.net/sourceforge/xmlrpc-c/xmlrpc-c-1.06.31.tgz

Descomprimimos y entramos al directorio:
tar xzfv xmlrpc*tgz
cd xmlrpc-c*
./configure
make
make install

Hay que asegurarse previamente de eliminar los paquetes de debian que puedan entrar en conflicto con la compilación, valdría la orden:

dpkg-query -l "*libxmlrpc*" | grep "^ii"

y si hay alguno instalado, eliminarlo de manera habitual.

Una vez hecho esto, seguramente el propio paquete nos indique que se ha de añadir una ruta para ldconfig y la nueva librería, en principio se debería instalar en

/usr/local/lib

por lo que con estas ordenes estaría solucionado:
echo "/usr/local/lib" > /etc/ld.so.conf.d/usrlocallib.conf
ldconfig

librtorrent & rtorrent

En la página oficial tenemos todo lo necesario:
http://libtorrent.rakshasa.no/
Podemos descargar la ultima versión estable o alguna de las inestables (yo llevo usando una inestable casi 1 año sin problemas)
Se pueden encontrar en:
http://libtorrent.rakshasa.no/downloads/

Para compilarlo con soporte xmlrpc es necesario añadir la opción —with-xmlrpc-c

Por lo tanto quedaría algo así:

wget http://libtorrent.rakshasa.no/downloads/rtorrent-0.8.2.tar.gz
wget http://libtorrent.rakshasa.no/downloads/libtorrent-0.12.2.tar.gz
tar xzfv libtorrent-0.12.2.tar.gz
tar xzfv rtorrent-0.8.2.tar.gz
cd libtorrent*
./configure --with-xmlrpc-c
make
make install
cd ..
cd rtorrent*
./configure --with-xmlrpc-c
make
make install

Si al iniciar rtorrent indica algo como:

(17:39:47) XMLRPC initialized with 444 functions.

Significa que todo ha ido correctamente

php

La compilación del php puede ser bastante complicada, como en este caso solo se necesita soporte xmlrpc, obviaré mayores requerimientos.
Como anteriormente acudimos a la página principal para descargarlo y hacemos una compilación estandar añadiendo soporte xmlrpc:

./configure  --with-xmlrpc
make
make install

También tenemos la opción de hacer un make test después de compilar.

lighttpd

De nuevo la compilación es bastante estandar, únicamente yo le añado ssl para opciones de seguridad posteriores

./configure --with-openssl --with-zlib --with-bzip2
make
make install

Configuración

rtorrent

Hay que añadir la opción:

# SCGI / XML-RPC config
scgi_local = /path/to/socket/.rtorrent-rpc.socket

Que ha de ser un sitio donde tengamos acceso de lectura escritura y ha de ser accesible para el usuario que corre lighttpd, por lo tanto no debería ser nuestra home por que seguramente los permisos del directorio sean demasiado restrictivos.

Hay un problema de seguridad por que como el usuario de lighttpd debe poder leer/escribir en el socket o bien le damos la pertenencia a apache con nuestro grupo y cambiamos permisos o damos permisos globales.
Lo trato más adelante.

lighttpd

Primero hay que configurar lighttpd para que ejecute php's, para lo que se añade soporte cgi/scgi al lighttpd (aparte de las que ya existan

server.modules              = (
                               "mod_scgi",
                               "mod_cgi",
                        )

Más adelante:
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )
cgi.assign = ( ".php" => "/apps/php5/bin/php-cgi" )

Aquí hay que cambiar el path al binario del php.
Con esto deberíamos poder ver un "hello world" desde el servidor web.

La configuración básica para conectar con rtorrent es:

scgi.server = (
                "/RPC2" =>
                  ( "localhost" =>
                    (
                      "socket" => "/path/to/socket/.rtorrent-rpc.socket",
                      "check-local" => "disable",
                      "disable-time" => 0,  # don't disable scgi if connection fails
                    )
                  )
              )

# Allow only localhost to access to RPC2 socket
$HTTP["host"] =~ "(.*)" {
  #!~ is a perl style regular expression not match
  $HTTP["remoteip"] !~ "^(localhost|127\.0\.0\.1)$" {
    $HTTP["url"] =~ "^/RPC2" {
      url.access-deny = ( "" )
    }
  }
}

Lo que hay que cambiar es :

Variable Valor Comentario
socket "/path/to/socket/.rtorrent-rpc.socket" path hasta el socket anterior
$HTTP["remoteip"] (localhost|127\.0\.0\.1) ip's desde las que permitimos la conexion al "gateway" hacia el socket, es el conector

Y reiniciar el lighttpd si estaba ejecutandose.

wtorrent

Ha llegado el momento descargar y descomprimir wtorrent. Como no hay que compilarlo, simplemente hay que cambiar las opciones básicas.
(descomprimirlo en algún sitio accesible por lighttpd logicamente)
Lo primero después de descomprimir:

chown -R www-data:www-data wtorrent
cd wtorrent
mkdir tpl_c
chown www-data:www-data tpl_c

Esto es necesario para que se generen dinamicamente las páginas y para que se creen posteriormente lo que necesita wtorrent.

Cuando tengamos esto podemos acceder al wizard de instalación:
http://ip-del.servidor/wtorrent/install.php
(Hay que cambiar la ruta por donde se haya descomprimido).

La configuración es bastante simple, únicamente puede llevar a duda la variable:
rTorrent scgi folder
Que corresponde con la ruta que se ha añadido anteriormente al lighttpd, si has copiado será:

/RPC2

Con esto ya estará configurado, se puede probar que está todo OK accediendo a la url sin el install.php.

Seguridad

  • Lo primero es borrar el install.php del directorio del wtorrent.
  • Y también se deberían cambiar los permisos de los ficheros de configuración (depende del usuario que sea el dueño), a algo por el estilo:
chmod 444 wtorrent/conf/*
  • Añadir/Cambiar la configuración de url.access-deny por algo como:
url.access-deny         = ("~", ".inc", ".db", ".tpl.php", ".cls.php", ".conf.php", "^.*" )

Para excluir la base de datos, templates, configuraciones y alguna cosa más.
  • Eliminar listado de directorio de wtorrent:
$HTTP["url"] =~ "^/wtorrent($|/)" {
                dir-listing.activate = "disable"
        }
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License

SSL configuration warning

This site has been configured to use only SSL (HTTPS) secure connection. SSL is available only for Pro+ premium accounts.

If you are the master administrator of this site, please either upgrade your account to enable secure access. You can also disable SSL access in the Site Manager for this site.