De todo un poco

Transmission BT en OpenWRT

with 4 comments

Transmission BT es simplemente una implementación del protocolo Bitorrent que utilizaremos para descargar archivos torrent desde nuestro router sin necesidad de tener un computador encendido. Aquí describo cómo instalarlo y configurarlo en OpenWRT, además de agregarle algunos script que ayudaran a mejorar la experiencia.

Instalando y configurando Transmission

Para instalar Transmission debemos instalar los paquetes necesarios, el núcleo (transmission-daemon), la interfaz web (transmission-web), y unas utilidades para manejarlo desde la línea de comandos (transmission-cli):

opkg update

opkg install transmission-daemon transmission-web transmission-cli

Para configurar Transmission empezamos por los parámetros del cliente en sí modificando el archivo /etc/config/transmission, es importante fijar el parámetro config_dir en /etc/transmission y no usar watch_dir ya que por alguna razón misteriosa el cliente ni siquiera inicia, así te ahorrarás mucho tiempo y problemas. Entonces la configuración quedó algo así en mi caso:

config transmission

option enable 1

option config_dir /etc/transmission

option download_dir /home/NOMBRECARPETA/Descargas

option speed_limit_up 20

option speed_limit_up_enabled true

option rpc_whitelist ‘127.0.0.1,192.168.1.*’

option rpc_whitelist_enabled true

option incomplete_dir_enabled true

option incomplete_dir /home/NOMBRECARPETA/Descargas/$incomplete

option rpc_authentication_required true

option rpc_username USUARIO

option rpc_password CONTRASEÑA

option dht_enabled true

option open_file_limit 2

option peer_limit_global 150

option peer_limit_per_torrent 75

option ratio_limit 2

option preallocation false

Luego, los archives torrents que agregamos al cliente no los quiero almacenados en un directorio de la partición de sistema asi que creo un symlink desde el directorio de transmission a mi propio directorio:

mkdir /home/NOMBRECARPETA/Descargas/\$torrents

ln -s /home/NOMBRECARPETA/Descargas/\$torrents /etc/transmission/torrents

Nos aseguramos que se inicie al comienzo:

/etc/init.d/transmission enable

Luego de reiniciar tendremos Transmission funcionando con la interfaz web en el puerto 9091.

Publicando la interfaz web de Transmission con Lighttpd

Lo siguiente es opcional.

Por otro lado, como ya tengo montado un servidor web con Lighttpd no quiero otro servidor web funcionando, así que como la interfaz web de Transmission no es dinámica, tomaré los archivos y los publicare con lighttpd. Para esto se requiere que el paquete lighttpd-mod-proxy esté instalado.

Primero copié los archivos de /usr/share/transmission/web a /usr/share/transmission/transmission y desinstalé transmission-web

mkdir /usr/share/transmission/transmission

cp –a /usr/share/transmission/web /usr/share/transmission/transmission

opkg remove transmission-web

Monté el servidor de transmission con lighttpd que es más eficiente modificando el archivo /etc/lighttpd/lighttpd.conf agregué:

$HTTP[“url”] =~ “^/transmission” {

server.document-root = “/usr/share/transmission”

#Redirigimos las solicitudes RPC

proxy.server = (

“/transmission/rpc” => ((

“host” => “127.0.0.1”,

“port” => 9091

)))}

Agregar script para manejar cola de descargas

Uno de los detalles de transmission es que no maneja cola de descargas simplemente o inicia todas las descargas o no inicia ninguna al menos que las pauses manualmente, por eso existen varios scripts que permiten que cada cierto tiempo revise que hayan un máximo número de torrents activos y máximo número de descargas activas, esta es solo una implementación particular que encontré por ahí.

Creamos un archivo llamado “transmission-queue” (puede ser cualquier nombre, solo es para ser consistente) y lo ubicamos en /usr/bin/, luego le ponemos el siguiente contenido, y le fijamos los parámetros MAXDOWN y MAXACTIVE además de USERNAME y PASSWORD con lo que configuramos en un comienzo el acceso RPC en el archivo /etc/config/transmission. La diferencia entre MAXDOWN y MAXACTIVE es la cantidad de torrents que están finalizados y están sirviendo.

#!/bin/sh

# *************

# Configuration

REMOTE=”/usr/bin/transmission-remote”

USERNAME=”Pedro”

PASSWORD=”5782″

MAXDOWN=”2″

MAXACTIVE=”2″

CONFIG=”/etc/transmission/settings.json”

# *************

# Set-up variables

CMD=”$REMOTE –auth $USERNAME:$PASSWORD”

LOGCMD=”/usr/bin/logger -t transmission-queue ”

MAXRATIO=$(cat $CONFIG | grep \”ratio-limit\”:)

MAXRATIO=${MAXRATIO#*\”ratio-limit\”: }

MAXRATIO=${MAXRATIO%*, }

# *************

# deal with downloads

DOWNACTIVE=”$($CMD -l | tail -n +2 | grep -v 100% | grep -v Sum | grep -v Stopped | wc -l)”

if [ $MAXDOWN -lt $DOWNACTIVE ]; then

DOWNTOSTOP=”$($CMD -l | tail -n +2 | grep -v 100% | grep -v Sum | grep -v Stopped | \

tail -n $(expr $DOWNACTIVE – $MAXDOWN) | awk ‘{ print $1; }’)”

for ID in $DOWNTOSTOP; do

NAME=”$($CMD –torrent $ID –info | grep Name:)”

$LOGCMD “<<< $ID: ${NAME#*Name: }”

$CMD –torrent $ID –stop >> /dev/null 2>&1

done

else

[ $(expr $MAXDOWN – $DOWNACTIVE) -gt 0 ] && (

DOWNINACTIVE=”$($CMD -l | tail -n +2 | grep -v 100% | grep Stopped | wc -l)”

[ $DOWNINACTIVE -gt 0 ] && (

DOWNTOSTART=”$($CMD -l | tail -n 2 | grep -v 100% | grep Stopped | \

head -n $(expr $MAXDOWN – $DOWNACTIVE) | awk ‘{ print $1; }’)”

for ID in $DOWNTOSTART; do

NAME=”$($CMD –torrent $ID –info | grep Name:)”

$LOGCMD “>>> $ID: ${NAME#*Name: }”

$CMD –torrent $ID –start >> /dev/null 2>&1

done

)

)

fi

# Then deal with total active

ACTIVE=”$($CMD -l | tail -n 2 | grep -v Sum | grep -v Stopped | wc -l)”

if [ $MAXACTIVE -lt $ACTIVE ]; then

TOSTOP=”$($CMD -l | tail -n 2 | grep 100% | grep -v Stopped | \

tail -n $(expr $ACTIVE – $MAXACTIVE) | awk ‘{ print $1; }’)”

for ID in $TOSTOP; do

NAME=”$($CMD –torrent $ID –info | grep Name:)”

$LOGCMD “<<< $ID: ${NAME#*Name: }”

$CMD –torrent $ID –stop >> /dev/null 2>&1

done

else

[ $(expr $MAXACTIVE – $ACTIVE) -gt 0 ] && (

SEEDINACTIVE=”$($CMD -l | tail -n 2 | grep 100% | grep Stopped | \

awk -v ratio=$MAXRATIO ‘{ if (strtonum(substr($0,52,4)) < ratio) print $0 ;}’ | wc -l)”

[ $SEEDINACTIVE -gt 0 ] && (

TOSTART=”$($CMD -l | tail -n 2 | grep 100% | grep Stopped | \

awk -v ratio=$MAXRATIO ‘{ if (strtonum(substr($0,52,4)) < ratio) print $0 ;}’ | \

head -n $(expr $MAXACTIVE – $ACTIVE) | awk ‘{ print $1; }’)”

for ID in $TOSTART; do

NAME=”$($CMD –torrent $ID –info | grep Name:)”

$LOGCMD “>>> $ID: ${NAME#*Name: }”

$CMD –torrent $ID –start >> /dev/null 2>&1

done

)

)

fi

Lo hacemos ejecutable con el comando siguiente

chmod +x /usr/bin/transmission-queue

Y luego agregamos una línea en el archivo /etc/crontabs/root para que se ejecute cada 5 minutos

*/5 * * * * /usr/bin/transmission-queue

Después de reiniciar debería funcionar perfecto.

Written by overside_

26.noviembre.2010 a 17.42

4 comentarios

Subscribe to comments with RSS.

  1. Hola. Gracias por la info publicada. Tengo un problema que no puedo resolver, resulta que instalé OpenWRT en un TP-Link 1043, y las descargas las realizo en un disco externo usb con partición Ext3.
    Todo anda fenómeno. Si pauso la descarga desde la interfaz web de transmission y la retomo , no hay problemas. Pero cuando se corta la energía o lo apago, al encender el router:
    1)No retoma la descarga automaticamente, esto creo que lo solucionaría con lo que indicas en tu bolg.
    2)Lo peor es que si manualmente le doy el link de descarga de un por ej. magnet ,comienza de nuevo la descarga, desde cero, es decir ni se entera que ya bajó algo. En el disco externo miro y veo lo que descargó , pero el transsmission ni se entera, alguna sugerencia para que investigue?. Lo hecho está publicado en refoscodaniel.blogspot.com.
    Gracias desde ya por tu tiempo.

    Daniel

    16.abril.2012 at 14.25

  2. Hola compañeros, necesito saber como configurar mi router para poder tener acceso al RPC de transmission a traves de internet. Puedo accesar facilmente desde la red interna pero no desde afuera de mi casa.

    manichon

    30.enero.2013 at 18.00

  3. Hola, y muchas gracias por la info, pero no sé como puedo modificar el archivo /etc/config/transmission

    Antonio Morales

    16.noviembre.2013 at 06.25

  4. #vi /etc/config/transmission

    Anónimo

    9.noviembre.2016 at 13.11


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: