Convierte tu RaspberryPi en un servidor de noticias

rssOtra de las cosas maravillosas que puedes hacer con un Raspberry Pi que te sobre es instalarte un lector de noticias centralizado y autónomo que puedas consultar desde cualquier ordenador de la red local o desde el exterior. Si quieres ver más cosa que puedes hacer fácilmente, visita la serie de entradas que empieza aquí. La razón de esta instalación es, como no podía ser de otra manera, la autonomía tecnológica en la medida de lo posible.

Seguir leyendo

Cómo controlar aMule a través de su interfaz web.

mulaMira tú por dónde, pero me he encontrado con que en los repositorios de Debian Jessie no está el paquete que necesito para conectarme con el demonio de aMule que tengo corriendo en mi maravilloso RaspberryPi [1], llamado amule-utils-gui.

De manera que en una instalación limpia de Debian toca apuntar los repositorios a sid, actualizar la lista de paquetes e instalar. Después deshacer los cambios en /etc/apt/sources.list y volver a actualizar la lista de paquetes. La verdad es que no es para tanto, pero si eres un quisquilloso de la estabilidad y la pureza del sistema no es muy recomendable andar instalando paquetes de varias ramas.

¿Solución? Fácil, accede a aMule a través de su interfaz web. Solo necesitas un navegador y podrás conectarte desde la red local o, si redireccionas el puerto en el router, desde cualquier lugar y dispositivo.

¿Cómo? Muy sencillo. Está todo explicado en la entrada correspondiente a la configuración del demonio de aMule [2]. Por si acaso no te hace falta o no te apetece tragarte todo el rollo de la instalación y entresacar lo necesario, aquí está:

Conéctate al ordenador en el que está corriendo el demonio de aMule, bien a través de SSH, bien directamente si tiene teclado y monitor. A continuación, edita el archivo de configuración de aMule con el comando:

$ nano .aMule/amule.conf

y busca la siguiente sección:

[WebServer]
Enabled=0
Password=
PasswordLow=
Port=4711

Cambia Enabled=0 por Enabled=1, introduce la misma contraseña que está escrita unas líneas más arriba (en la sección llamada [External Connection]) en su lugar correspondiente y toma nota del número de puerto. Graba, sal y reinicia el servicio con

$ service amule-daemon restart

Listo. Ve a un navegador y, en la barra de direcciones, escribe la IP del servidor, dos puntos y el puerto. Por ejemplo, en mi caso 192.168.0.20:4711. Si deseas conectarte desde el exterior debes redirigir el puerto 4711 (o el que sea que hayas configurado) hacia la IP del servidor y escribir en el navegador, en lugar de esa IP, la IP de salida del router. Te aparecerá una pantalla en la que introducir la contraseña.

amuleweb

¡Tachán!

Enlaces:

[1] https://bokunoshumi.wordpress.com/2012/11/24/convierte-tu-raspberry-pi-en-un-servidor-de-descargas-por-que/

[2] https://bokunoshumi.wordpress.com/2012/12/09/convierte-tu-raspberry-pi-en-un-servidor-de-descargas-amule/

Cómo crear un script que vigile el funcionamiento de un proceso

mula

El nacimiento de esta entrada tiene que ver conla configuración de un servidor autónomo de aMule en un Raspberry Pi.

Resulta que me he encontrado con el problema de que aMule se cierra cada vez que termina la descarga de un archivo grande (de 6 GB o más) o cuando está completando una descarga terminada si la lista de descargas pendientes es muy larga. Aún no sé cuál es la razón ni proponer una solución elegante al problema, pero hay una manera rápida y sencilla de arreglar las cosas: crear un programa que vigile si aMule está corriendo y, si no lo hace, que lo ejecute. Como se puede intuir, este tutorial es para el aMule pero sirve exactamente igual para cualquier proceso que se pare y necesitemos reiniciar de manera autónoma, solo hay que cambiar los comandos.

Para ello me he basado en un script escrito por Pedro Ventura que he modificado ligeramente yo mismo. Lo que hay que hacer es lo siguiente:

Accede a tu RaspberryPi del modo habitual (sesión gráfica, SSH…). Voy a suponer, en lo sucesivo, que el acceso es por consola. Una vez en la sesión de usuario pi, crearemos un archivo nuevo al que llamaremos controlAmule:

nano controlAmule.sh

y, dentro de este archivo, que lógicamente aparecerá vacío, hay que escribir lo siguiente

#!/bin/bash
RESTART=”/etc/init.d/amule-daemon start”
PGREP=”/usr/bin/pgrep”
AMULED=”amuled”
# busca el proceso
$PGREP ${AMULED}
# si no existe y el comando anterior devuelve 0
if [ $? -ne 0 ]
then
# restablece amule-daemon
$RESTART
fi

Recuerda que si copias y pegas desde este blog debes repasar las comillas para que sean las correctas. WordPress intenta introducir comillas de apertura y cierre diferentes, pero en el programa deben ser comillas rectas normales.

Guarda con Ctrl+O y sal con Ctrl+X. El programa necesario ya está hecho. Hazlo ejecutable escribiendo:

chmod +x controlAmule.sh

Ahora solo hay que conseguir que esta verificación del proceso emuled se ejecute de forma periódica. Ejecuta

crontab -e

y se abrirá un editor (nano) con un archivo nuevo en el que hay unas instrucciones escritas en inglés. Ni caso. Desplázate hasta el final del archivo e incluye:

*/15 * * * * bash /home/pi/controlAmule.sh

Guarda con Ctrl+O y sal con Ctrl+X (el nombre de archivo que el programa propone es muy raro, pero no importa. De nuevo, ni caso). Lo que has hecho es programar, para el usuario pi, una tarea que se ejecute cada 15 minutos. Y esa tarea es la que realiza el programa que acabas de escribir. Por supuesto, si deseas guardar el script en otra ubicación o darle otro nombre no pasa nada, pero tienes que respetar la ruta y el nombre en el comando del crontab. También puedes cambiar la frecuencia de ejecución a 5 minutos (*/5…), a 45 minutos (*/45…) o a cualquier intervalo de tiempo que se te ocurra y te parezca correcto. Cron permite una gran versatilidad en la configuración del tiempo, puedes lanzar un proceso los martes a las 3 de la mañana, cada hora de lunes a viernes, el día de tu cumpleaños a la hora de tu nacimiento, lo que quieras. En internet hay multitud de tutoriales para aprender a programar cron. Otra opción, si eres de los que prefieren tener todo centralizado, es editar como root el archivo /etc/crontab e incluir una línea bajo las que ya existen con el mismo contenido de antes. En este caso debes incluir el nombre del usuario entre los asteriscos y el comando a ejecutar, así: */15 * * * * pi bash /home/pi/controlAmule.sh. Los comandos que tengas programados para tu usuario puedes verlos con crontab -l, editarlos con crontab -e y eliminarlos con crontab -r.

Ya solo queda un paso: reiniciar. Si no quieres hacerlo, ejecuta

sudo /etc/init.d/cron restart

si tienes configurado sudo. Si no, abre una consola de root y escribe el mismo comando sin sudo.

¡Y listo, familia, fácil y sencillo.!rpi1

Configura tu mando a distancia en OpenELEC y Raspbmc

[EDITADO]: Desde hace un tiempo, el proyecto XBMC ha cambiado de nombre. Ahora es KODI. Por eso han cambiado algunas rutas de algunos archivos y yo también las he cambiado aquí. Si algo no funciona bien, decídmelo y lo corrijo. En todo el texto del artículo podéis cambiar XBMC por KODI y todo sigue igual.

Ya sabéis cómo instalar XBMC en un RaspberryPi. Incluso a solucionar algún problema puntual que pudiera aparecer.

Una de las grandes ventajas de XBMC en el RPi es que incluye el estándar CEC de comunicación entre dispositivos, de modo que si tienes conectada una TV moderna por HDMI podrás controlar XBMC a través del mando a distancia de la televisión. Sin embargo, y ahí aparece el problema que inspira esta entrada, es que el mando de mi Sharp Aquos no tiene un botón que XBMC interprete adecuadamente para el menú contextual. Eso me obliga a usar el control remoto a través de Android, el botón secundario de un ratón, etc. Una lata.

¿Solución? Mapear una nueva tecla para esa función. ¿Cómo? Fácil y sencillo:

Conéctate a RPi a través de SSH, de modo gráfico o en terminal, al modo habitual (asumo que si has conseguido instalar el sistema, esto no representa un problema). Copia el archivo remote.xml de su ubicación original a la nueva:

cp /opt/xbmc-bcm/xbmc-bin/share/xbmc/system/keymaps/remote.xml /home/pi/.xbmc/userdata/keymaps/remote.xml

y edita el nuevo archivo:

nano .xbmc/userdata/keymaps/remote.xml

En este punto hay que hacer una precisión. En el método que propuse en la entrada anterior conseguimos instalar Raspbmc. Si has instalado OpenELEC, cosa muy recomendable y que estoy probando (ya os diré algo), el comando para copiar el archivo es distinto, pues la ruta original también es distinta:

Para OpenELEC:

cd .kodi/userdata/keymaps && cp /usr/share/kodi/system/keymaps/remote.xml ./remote.xml

nano remote.xml

Ahora viene el momento en el que hay que pensar qué tecla te viene bien. En mi caso he escogido el botón azul del teletexto, pues queda lejos de los botones más habituales y es sencillo de encontrar. Originalmente es un acceso directo a «Mis imágenes», pero yo no lo uso, así que me gusta este botón para el menú contextual.

En el código del archivo busca lo siguiente:

<title>ContextMenu</title>

y comenta la línea introduciendo <!– al comienzo y –> al final de ella. Si en lugar de title la etiqueta es diferente, no importa, esa es la tecla originalmente asignada, la que el mando no tiene. Si usas OpenELEC esta línea no existe, sáltate este paso y sigue.

Ahora hay que buscar las etiquetas <blue> y </blue> encerrando un texto como XBMC.ActivateWindow(MyPictures) o algo así. Cambia ese texto por ContextMenu, de modo que la línea quede como sigue:

<blue>ContextMenu</blue>

Si no quieres perder la información anterior, por si es necesario recuperarla en un futuro, comenta la línea completa igual que la anterior, es decir, inserta los caracteres <!– al principio de la línea y los caracteres –> al final. Después inserta una nueva línea y escribe el código anterior. Modificando este archivo no tienes por qué limitarte al botón azul o al menú contextual. Dentro de las opciones que hay listadas en el mismo puedes hacer las modificaciones que necesites y cambiar todos los botones que quieras. Recuerda que si haces muchos cambios, puede que sean difíciles de deshacer si hay algún problema, no es mala idea hacer una copia de seguridad del archivo antes de toquetearlo.

Guarda con Ctrl+o y sal con Ctrl+x. Listo. Reinicia XBMC y comprueba que todo haya ido bien. Ahora, al pulsar el botón azul cuando está resaltado un archivo podrás marcarlo como visto, borrarlo si habilitas la opción, añadirlo a la cola y el resto de opciones del menú contextual.