Instala un servidor web Lighttpd y cliente Torrent Transmission en Tomato RAF (scripting)

Escrito por Sergio De Luz
Firmwares

En otros artículos os enseñamos a instalar software adicional en vuestro router con Tomato RAF, algunos programas extra fueron el Lighttpd y el Transmission. Tenéis todos los manuales en la página dedicada al firmware Tomato RAF. Sin embargo, seguir estos manuales puede resultar complicado para los usuarios el tener que hacer tantas cosas vía comandos (Telnet o SSH), por este motivo, hemos decidido hacer unos scripts para automatizar al máximo la instalación de este software adicional.

También hemos incorporado una configuración totalmente funcional para poder sacar el máximo partido a tu router desde el primer momento.

Introducción

El objetivo de este proyecto es incorporar software adicional a un router con firmware Linux (Tomato RAF). El software que incorporaremos será un servidor web para alojar nuestra página web doméstica con nuestro propio hosting que será el router.

Otra funcionalidad que incorporaremos será la integración de un cliente Bittorrent al router para descargar contenido de cualquier tipo a un disco duro o unidad flash a través del puerto USB 2.0 del router; de esta forma, podremos ahorrar energía ya que tan sólo deberemos tener el router encendido y no el ordenador para descargar.

Descripción del sistema y requisitos

El router que hemos utilizado para la realización de este proyecto es el ASUS WL-500G Premium V2Tomato RAF 1.28.9006

Para la instalación del software adicional usaremos IPKG-OPTWARE y una unidad flash USB para almacenar los datos. La unidad flash tiene tres particiones:

  • Partición SWAP de 500MB: Debido a que este router tan sólo tiene 32MB de memoria RAM, es posible que en algunos casos se quede corta para el almacenamiento de procesos, por este motivo hemos decidido incorporar una memoria SWAP al sistema, aunque será más lenta que la memoria RAM, nos permitirá que el router funcione de forma fluida.
  • Partición EXT3: El router es de base Linux y todos los paquetes también por lo que es necesario la utilización de un sistema de archivos de Linux para la realización de todas las operaciones. Hemos elegido el sistema de archivos EXT3 con una capacidad de 3GB para el almacenamiento de todo el software adicional así como sus configuraciones.
  • Partición NTFS: Como Windows es ampliamente utilizado, vamos a usar esta partición para gestionar cualquier archivo con el router. Podremos copiar el contenido directamente al USB sin pasar por el router, de esta forma, la escritura (o lectura) será más rápido, porque en este router la CPU hace de cuello de botella y la velocidad no supera los 3MB/s. Debemos poner el nombre de esta partición como “BRON_USB” ya que de lo contrario el script no funcionará correctamente.

Nota: Si usamos un disco duro, pondremos 500MB de SWAP y el resto (EXT3 y NTFS) como queramos, pero debemos tener en cuenta que las descargas de Transmission irán a la partición EXT3.

Requisitos del router para la ejecución de los scripts de instalación:

  • El router necesitará tener conexión a Internet para descargar los archivos desde los servidores.
  • Deberemos activar el UPnP para que el cliente Bittorrent no tenga problemas a la hora de descargar archivos.

upnp

  • Otra configuración importante es activar el servidor SSH que incluye el firmware del router, ya que gestionaremos todo a través de este protocolo. Recomendamos desactivar telnet porque no es un protocolo de gestión seguro.

ssh

Una vez hecho esto, y con el resto de configuraciones por defecto podremos iniciar la instalación del software adicional.

Preparando el router para el software adicional

Una vez que hemos preparado el router como hemos dicho anteriormente, procedemos a entrar vía SSH a su administración en modo superusuario (root), introduciendo usuario y clave para el acceso (no vamos a usar certificados, tan sólo user/pass).

Lo primero que tenemos que hacer es preparar el router y descargar todos los scripts para que puedan ser utilizados.

La funcionalidad del primer script es descargar los demás scripts en la partición NFTS del pendrive que hemos hablado anteriormente (ya que dejaremos todo el software adicional en la partición EXT3), también descargaremos un FSTAB modificado por nosotros y lo moveremos a /etc/fstab para posteriormente pasarlo a la NVRAM y que el router reconozca la partición SWAP y la partición EXT3 ya que por defecto la SWAP no la reconoce, y la EXT3 la monta en /tmp/mnt/ y no en /opt (optware) que es donde queremos.

Posteriormente, y como vamos a instalar un servidor web escuchando en el puerto 80, editamos la NVRAM para que la administración web del router sea en el puerto 8080 tanto en local como en Internet. A continuación comprometemos (commit) la NVRAM y reiniciamos el router para que se cargue la nueva configuración de particiones.

Para ejecutar el primer script, debemos bajarlo poniendo en la consola de SSH lo siguiente:

wget http://www.redeszone.net/app/uploads/cdn/down/firm/tomato_optware_scripts/script1_nvram.sh

A continuación debemos asignarle permisos de ejecución:

chmod 755 script1_nvram.sh

Y ejecutamos:

./script1_nvram.sh

Una vez que se ha reiniciado el router, tendremos las particiones montadas y podremos empezar a instalar el software adicional.

Instalación de servidor web (Lighttpd)

Lo primero que instalaremos será el servidor web, hemos elegido el servidor Lighttpd por su facilidad de configuración y que ocupa muy pocos recursos del router, también tenemos Apache 2 en los repositorios pero requiere mayores prestaciones.

El segundo script se encarga de crear las carpetas necesarias para alojar el software adicional así como asignar los permisos adecuados a las mismas para poder leer y escribir sin problemas. A continuación descargamos los paquetes IPKG que serán los que utilizaremos para instalar el software adicional. Una vez que los hemos colocado donde corresponden, procedemos a la instalación del servidor web y a configurar el router para que se inicie el servicio lighttpd cada vez que arranque el router, lo editamos directamente en la NVRAM y guardamos los cambios.

Debido a que este router tiene un cortafuegos basado en iptables, debemos escribir una instrucción iptables para que nuestro servidor web sea accesible desde el exterior, el propio script se encarga de incorporar esta regla en el cortafuegos.

Para facilitar la comprobación de que el servicio web funciona, hemos incorporado en el script, la descarga de una página web hecha por nosotros y que colocaremos en el directorio adecuado, de tal forma que cuando introduzcamos la IP del router o nuestra IP pública (desde el exterior) accedamos a la página web que hemos hecho.

En la siguiente imagen se puede ver la página web:

web

Para ejecutar el segundo script, entramos vía SSH al router, y nos vamos a la partición NTFS:

cd /mnt/BRON_USB

Y ejecutamos con la siguiente orden:

./script2_ipkg_web.sh

Cuando el router se reinicie tendremos todo funcionando.

Instalación de cliente Torrent (Transmission)

Ahora vamos a instalar el cliente Bittorrent, hemos elegido el cliente Transmission porque es el que normalmente incorporan todos los sistemas operativos basados en Linux. Una de las principales características de este cliente Torrent es el bajo consumo de recursos en el sistema, lo que lo hace perfecto para integrarlo en el router.

El tercer script se encarga de instalar Transmission, a continuación descargamos un script de inicio programado por nosotros para que se ejecute en el sistema, movemos este script y le asignamos los permisos adecuados para que en cada inicio del router, el cliente torrent se ejecute correctamente.

Para facilitar al usuario la configuración del cliente torrent, hemos decidido descargar el fichero de configuración e instalarlo en la ruta donde el proceso lee la configuración. De esta forma, tendremos el Transmission 100% funcional sin ninguna dificultad. También crearemos las carpetas necesarias para las descargas de archivos, descargas de torrent, y temporales.

Por último, editamos la NVRAM para que el proceso Transmission se ejecute cada vez que se inicia el router. Suponemos que el cliente Torrent se usará de forma local, y se administrará de la misma forma, por lo que no hemos creado la regla necesaria en el cortafuegos para acceder desde el exterior, de esta forma, aumentamos la seguridad de nuestra red local. Si queremos acceder desde Internet tenemos varias opciones, como por ejemplo hacer SSH Tunneling, configurar el servidor OpenVPN que incorpora el router o abrir el puerto 9091 en el firewall.

Una vez que hemos terminado, procedemos a reiniciar el router para que carguen todos los procesos adecuadamente.

Para ejecutar el segundo script, entramos vía SSH al router, y nos vamos a la partición NTFS:

cd /mnt/BRON_USB

Y ejecutamos con la siguiente orden:

./script3_torrent.sh

Cuando el router se reinicie tendremos todo funcionando.

Si entramos en el Transmission vía IP_router:9091 veremos la siguiente interfaz:

transmission

Hasta aquí hemos llegado con este manual para instalar un servidor web y cliente Torrent de forma totalmente automatizada.

Anexos

Os recomendamos descargar los siguientes archivos para conocer a fondo todas las opciones y características tanto del servidor web como del cliente Transmission. Con estos anexos podréis configurar vuestro software para que se ajuste a vuestras necesidades. Actualmente la configuración que tenéis es la que hemos usado nosotros.

Próximamente iremos ampliando las funcionalidades, pero eso será en otra página y tomando como base lo que ya tenemos aquí.


Continúa leyendo
  • Asd

    ¿Me recomendáis algún router baratito al que le pueda poner Tomato RAF? El mío es muy antiguo (Contrend CT-5361) y no tiene conexión usb ni nada :/

    Me interesa para el tema de las descargas sobre todo y probablemente use el servidor web.

    Gracias

    • ASUS RT-N16, 65€ 🙂

      Pero no tiene módem! Todos son neutros.

  • Edgar

    root@unknown:/tmp/home/root# chmod 755 script1_nvram
    chmod: script1_nvram: No such file or directory
    no paso de esa parte no entiendo que hago mal porfavor si me pudieran guiar
    mi router es un linksys e4200 v1 y uso la misma version de tomaro que la guia

    • Te dice que no existe el fichero para hacer el CHMOD, ¿has puesto bien la ruta?

      Pon “chmod 755 sc” y después de esa C dale al tabulador (justo encima de bloq mayus) y te completará el archivo.

  • Edgar

    Gracias por responderme Sergio perdona otra molestia termino el script con el cual tenia problemas ahora no se como ejecutar el siguiente comando ./script1_nvram como lo ejecuto root@unknown:/tmp/home/root# /script1_nvram
    -sh: /script1_nvram: not found perdon a y muchas gracias

    • Tienes que poner un PUNTO antes de /.

      Es así (literalmente):

      ./nombre_script

      Dime si puedes hacerlo.

      • Edgar

        Bueno parece que ando muy tonto el dia de hoy perdona no entiendo muy bien a que nombre te refieres ./nombre_script en ese campo que dice nombre que se supone que tenga que poner nombre de que mi router? perdona soy un poco nuevo en esto anteriormente intente tambien hacer los otros tutoriales y tampoco pude perdona por ser tan molestoso muchas gracias y eres el mejor 😀

        • Sí, que tienes que poner:

          ./script1_nvram

          Un PUNTO delante de / para ejecutar el archivo .sh .

  • Eso indica que no se ha montado bien /opt como escritura. En el menú del router te aparece como montado? en USB/NAS lo puedes mirar.

    Al no montártelo como escritura, todos los errores que ves es por eso… revisa el fstab:

    cat /etc/fstab

    Porque debes tenerlo así:

    /dev/sda1 none swap sw 0 0
    /dev/sda2 /opt ext3 rw,noatime 1 1

    Has hecho bien la partición EXT3?

    • edgar

      asi lo tengo la verdad no se en que parte falle si me pudieras guiar http://nsae01.casimages.net/img/2013/06/27/130627071701200772.jpg

      • Tienes mal hechas las particiones del disco duro, por eso no se te monta correctamente. Tienes que hacerlas en el mismo orden: SWAP, EXT3 y NTFS.

        Ves que te pone “sda” is not mounted? ese es el problema…te la monta en otro directorio y no en /opt tal y como pone en el fstab.

  • edgar

    muchas gracias Sergio por tu tiempo pude instalar al fin y tenias razon fue que hise mal las particiones ahora mi duda es como o con que programa copio lo que descargue a otra unidad por medio de la red y otra duda si saco el pendrive tendre que hacer de nuevo todo el proceso ? uchas gracias por la guia

    • Para sacar los datos descargos por bittorrent o lo que quieras, puedes usar el propio servidor FTP en modo administrador que trae integrado Tomato RAF. Apartado USB/NAS FTP Server, pinchas en Admin Login y entrarás en el sistema de archivos…cuidado con tocar lo que no debes. Como cliente FTP te recomiendo filezilla.

      Si sacas el pendrive, antes apaga el router…lo sacas y haces lo que quieras y luego lo vuelves a meter en el usb y lo enciendes, no hace falta hacer todo el proceso.

      Recuerda que los datos se guardan en la EXT3 y que Windows no reconoce este sistema de archivos de manera nativa…

  • edgar

    Buenas sergio queria preguntarte algo ya instale todo normal y queria preguntarte si hay alguna forma de poner una cola de descarga en el torrent ya que no encuentro la opcion para poder hacer eso ooh hay que configurar algun archivo y tambien queria preguntarte como le quito la opcion de contraseña al ingresar a la pagina de torrent muchas gracias por tu respuesta 😀

    • Hola,

      Lo de la cola de descargas, no te recomiendo poner más de 3 porque el router se resiente.

      Respecto a la clave.

      settings.json en /opt/data/torrents/.config/transmission-daemon/settings.json

      Y modificas: rpc-authentication-required”: false,

      Modificas el TRUE por FALSE.

      Para editarlo, basta con entrar por SSH y hacer:

      vi /opt/data/torrents/.config/transmission-daemon/settings.json

      Aunque mejor usa NANO (editor):

      nano /opt/data/torrents/.config/transmission-daemon/settings.json

      Y modificas lo necesario y reinicias el router (realmente con reiniciar el proceso de transmission valdría).

      • Edgar

        Muchas gracias por la pronta respuesta Sergio mi problema principalmente es que quiero bajar de 1 a 1 es que mi coneccio no da para darle con 3 descargas al mismo tiempo y pues si se pongo a descargar 1 termina y los otros dos nunca comienzan haber si conoces alguna solucion 😀

        • En el fichero de configuración al menos no pone nada de lo que pides, no sé si realmente se puede…te lo miro el finde si tengo tiempo.

  • César Cortés

    Hola, estoy intentando configurar un Router E4200 con este tutorial, pero al intentar hacer los primeros paso el script arroja esto

    =============================================================================
    Bienvenidos al #RedesZoneTeam y a este script para automatizar el software adicional
    Autor: Sergio de Luz para http://www.redeszone.net
    Firmware compatible: Tomato RAF de Victek
    =============================================================================
    Descargando todos los archivos necesarios desde RedesZone.net
    wget: bad address ‘cdn.redeszone.net’
    chmod: script2_ipkg_web.sh: No such file or directory
    wget: bad address ‘cdn.redeszone.net’
    chmod: script3_torrent.sh: No such file or directory
    Paso 1: Editando la NVRAM para preparar el FSTAB correctamente
    wget: bad address ‘cdn.redeszone.net’
    chmod: fstab: No such file or directory
    mv: can’t rename ‘fstab’: No such file or directory
    Paso 2: Editando la NVRAM para cambiar a puerto 8080 la gestion del router
    Guardando datos en la NVRAM y reiniciando router. Espere…
    Commit… done.
    Rebooting…

    Existe alguna manera de evitar los error de directorios no encontrados.

    Gracias por el tutorial.