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

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í.