8/28/2014

Mi experiencia con la Raspberry Pi

0. INTRODUCCIÓN

En este artículo voy a hablar de mi experiencia con la Raspberry Pi. Para los que no sepáis qué es, viene a ser un ordenador de ultra bajo coste ($35) y del tamaño de un paquete de tabaco, con el que en realidad se pueden hacer virguerías. Sin embargo, la mejor parte viene cuando hablamos del consumo energético (menos de 5w) y de la ausencia de ruido pues no lleva ventilador.
Ya imaginaréis que estas dos cualidades - bajo consumo y ningún ruido - hacen de este computador un candidato excelente para cualquier propósito doméstico en el que se requiera un ordenador encendido permanentemente. Por ejemplo, un centro de descargas (emule/torrent), o una unidad de almacenamiento personal disponible a través de Internet.

Este artículo no explica en sí mismo cómo configurar la Pi. Mis conocimientos de Linux se limitan a las nociones básicas aprendidas en la universidad, y lo que me permiten es entender más o menos lo que voy haciendo cuando leo artículos y manuales de otros. La literatura en Internet es muy extensa, hay artículos de la Pi para todo lo que se puede hacer con ella; algunos de dichos artículos, los que yo he utilizado, están referenciados en este post.

El objetivo de esta entrada es sin embargo contar un caso real, mi caso, para demostrar qué se puede hacer con este cacharro y mostrar un caso de estudio real.

MI SISTEMA RASPBERRY PI
Hardware:
 - Raspberry Pi modelo B
 - Tarjeta SD clase 10 8Gb
 - Disco duro externo toshiba 1TB formato ext3 (nativo de linux)
 - USB HUB conectado a la corriente eléctrica.
NOTA: Es posible que el disco duro externo autoalimentado funcione bien tirando directamente de la alimentación USB de la Pi. Sin embargo, para eliminar riesgos, recomiendo un HUB USB autoalimentado. Un USB que proporcione un voltaje inestable podría llegar a perjudicar la vida útil de algunos discos duros.
Sistema operativo:
 - XBian
Otro software:
 - Reproductor multimedia: XBMC embebido en la distribución
 - Descargas: Amule con interfaz web amule-web
 - DNS dinámico: Cliente de no-ip instalado en la Pi
 - Compartir ficheros en la red doméstica: Samba
 - Compartir ficheros por Internet: vsftpd

1. ARRANCAR LA PI

ELECCIÓN DEL SISTEMA OPERATIVO
Existen distintas distribuciones de linux adaptadas para la Raspberry Pi, todas ellas en continua evolución. Por lo tanto, no puedo aconsejar sobre cuál utilizar, porque los criterios que yo tuve en cuenta en mi elección podrían no ser válidos ahora o en el futuro. Lo cierto es que en su momento descarté por ejemplo la distribución OpenElec porque creo recordar que estaba orientada 100% a la reproducción multimedia, hasta tal punto que no podía accederse por ssh. Yo necesitaba algo más "ordenador" y menos "sistema empotrado" para poder cacharrear. Finalmente me decidí por XBian.
http://www.xbian.org/

INSTALACIÓN DEL SISTEMA OPERATIVO EN LA TARJETA SD
Este paso es muy sencillo. Basta con ir a la web oficial de la distribución, descargarsela en zip y seguir los pasos para instalarla en la tarjeta SD que meteremos en la Pi (y que hará las veces de disco duro de nuestro supercomputador). Este paso obviamente ha de hacerse desde un ordenador convencional, ya sea Linux, Windows o Mac.
http://www.xbian.org/download/
Tan sencillo como eso, introducimos la SD en la Pi, la conectamos por HDMI a la TV, le damos corriente y ya tenemos XBMC funcionando. Es más, conectando un Pendrive por USB a la Pi ya podemos empezar a ver películas en prácticamente cualquier formato/códec. Así de fácil.

XBMC 
Este sistema, que viene ya instalado (empotrado) en la distribución XBian es un universo en sí mismo. Hay plugins para casi todo, incluyendo para ver la TV online y ver vídeos de páginas de descargas online, tipo "Pelisalacarta". Reconozco que no he sido capaz de echarlo a andar, pero sobre todo porque para series y películas soy más de tener descargado que de ver online. Debe ser que en el fondo soy de la vieja escuela.
De entre las cosas que más me han llamado la atención que puede hacer XBMC es funcionar como si fuera un Apple TV para la función de Airplay. Es decir, activando esto mi iPad reconoce XBMC como un dispositivo al que puede enviar vídeo. Por 35 € !!
Nota: Apple TV me costó a mi 109 €, ahora creo que está en 99.

EMPOWERING LA PI
Tras terminar los pasos anteriores, tenemos un reproductor multimedia al que podemos pinchar un pendrive para ver pelis, fotos, escuchar música, etc.

Lógicamente, para el resto de casos es necesario conectar la Pi a Internet. En mi caso lo he hecho por cable, que siempre es mejor si tenemos esa opción. En mi caso tengo el router de Internet justo detrás de la TV, de modo que es bastante cómodo.

Si no hay posibilidad de conectar la Pi a Internet por cable ethernet (RJ-45), hay adaptadores USB WiFi para la Pi por unos 8-10 €, pero lo cierto es que yo aún no he configurado el que compré porque no me ha hecho falta. No debe ser difícil de hacer.

ADMINISTRACIÓN REMOTA DE LA PI POR SSH
Como decía, para el resto de pasos necesitamos que la Pi tenga Internet, y además acceder a ella para entrar con un terminal. El ssh viene instalado por defecto en Raspbian, de modo que lo único que necesitamos es un cliente de SSH. Yo utilizo los siguientes:
Windows: Putty (http://www.putty.org/)
Android: ConnectBot
iPad: Server Auditor

Basta con entrar con el usuario y clave por defecto de la distribución (creo recordar que era xbian/raspberry) y lógicamente cambiar la contraseña por defecto a una propia, especialmente porque querremos poder entrar en remoto desde Internet.

Por defecto, tras el login, Xbian muestra un menú en modo texto con algunas operaciones habituales de administración de la Pi. Es útil, pero para el resto de cosas que os contaré abajo utilizaremos directamente la línea de comandos, así que tras hacer login hay que salir del menú.

MONTAR EL DISCO DURO EXTERNO
Una vez tenemos acceso a la consola SSH, ya podemos montar el disco duro externo en la Pi. Esto es una tarea común de linux y además bastante sencilla, por lo que no pondré enlaces a manuales, porque además no recuerdo cuál utilicé. Sí diré que formateé el disco como ext3, tras hacer la siguiente valoración:

  • FAT32 -> No soporta ficheros de más de 4Gb. Considerando que vamos a poder ver películas en HD (e incluso 3D), es una limitación que obliga a descartar esta opción.
  • NTFS -> No se lleva bien con linux, especialmente para la escritura en disco. 
  • EXT3 -> No se puede leer fácilmente desde Windows. Sin embargo, es con diferencia la que mejor rendimiento tendrá en nuestra Pi. Considerando que le vamos a meter mucha caña, escoger la opción que ofrezca el mejor rendimiento es una buena elección. Podemos solucionar la incompatibilidad con Windows mediante dos soluciones: 1) Instalando un servidor SAMBA para integrar el disco como una unidad de red en cualquier PC de nuestra LAN y 2) Instalando software de lectura de ext3 en Windows por si tenemos que acceder al contenido del disco conectado directamente al PC por USB (por ejemplo, si nos lo llevamos de viaje).
OVERCLOCKING
Hay varias posibilidades de overclocking. Lo bueno es que recuerdo haber leído que se puede hacer overclocking hasta ciertos límites conservando la garantía. 

2. INSTALAR EL SERVIDOR DE DESCARGAS

Sólo por el hecho de que llevo muchos años utilizándolo, yo soy más de eMule que de Torrents, y ése es el único motivo por el que en la Pi también me decanté por amule.

INSTALACIÓN Y CONFIGURACIÓN DE AMULE
Amule es una versión de emule (que es open source) para Linux. Una vez instalado el servidor (amule-daemon), hay dos herramientas que nos ayudarán:
 - Amule-web para lanzar un servidor Web desde el que poder añadir enlaces ed2k y comprobar cómo van las descargas. Se cae de vez en cuando, pero reiniciando el servicio amule vuelve a levantarse. He leído varios artículos que solucionan esto con un script que comprueba periódicamente si el servicio está caído para reiniciarlo.
 - Amule-GUI para tener una interfaz de escritorio en otro ordenador desde la que gestionar completamente nuestro amule.
Os dejo el tutorial que seguí para instalarlo:
http://jcoredumped.blogspot.com.es/2013/03/instalar-y-configurar-amule-daemon-para.html
Luego edité el fichero de configuración para que las opciones de servidores y filtrado de IPs fuesen las que se recomiendan en el siguiente tutorial (es la mejor forma de mantener un emule sano, sin virus):
http://forum.emule-project.net/index.php?showtopic=125752&st=0&p=894076&

3. ACCEDER REMOTAMENTE AL ALMACENAMIENTO DE LA PI

Una vez tenemos el disco duro conectado a un ordenador que estará encendido las 24h, el siguiente paso es poder acceder a él desde el exterior. De esta forma, podemos centralizar en el disco no sólo nuestras descargas (emule/torrent) sino también todos nuestros vídeos, música, fotos, documentos... Eso sí, será tan valioso que tendremos que plantearnos cómo hacer copias de seguridad para eliminar el riesgo de perderlo todo por culpa de un accidente o avería.
La configuración que yo tengo es la siguiente: FTP accesible desde Internet y samba accesible sólo desde la red doméstica.
Reconozco que el FTP es una solución muy técnica, pero en mi caso es una forma de aprovechar un puerto que suele estar abierto en los firewalls de cualquier red corporativa, por ejemplo la de mi empresa. Una alternativa al FTP podría instalar algún producto que permita la gestión del disco a través de Web (hay muchos), pero el problema es que así ocuparíamos el puerto 80 de IP externa, y yo utilizo dicho puerto para acceder remotamente al emule y poder iniciar una descarga desde cualquier sitio del mundo con Internet, incluyendo mi puesto de trabajo :D
Con samba podremos tener una unidad de red desde cualquier dispositivo, incluyendo PC Windows/Linux, Android, iOS...

FTP
Como servidor FTP instalé vsftpd, y reconozco que en esta parte es donde más chapucero fui. Compartí todo el sistema de ficheros y con el usuario root, pero las prisas me pudieron frente a hacer las cosas bien :(

No recuerdo el tutorial que utilicé para instalar vsftpd, pero sí que no era específico para la Pi. Nos vale cualquiera que explique cómo instalar el servidor FTP en linux.

SAMBA
Instalar un servidor samba es muy sencillo, especialmente si sigues los pasos del siguiente enlace:
http://sobrebits.com/montar-un-servidor-casero-con-raspberry-pi-parte-8-nas-con-raspberry-pi-y-samba/
Una vez instalado, puedo acceder a un disco (ext3) desde mi PC a través de la red. Eso es lo básico. Otras cosas que puedo hacer es:

  • Navegar por mi carpeta de fotos desde Android. Yo utilizo ES file Explorer.
  • Navegar por mi carpeta de vídeos desde Android (desde ES file Explorer) y reproducir cualquier vídeo con VideoLAN, lanzándolo al Chromecast si es necesario.
  • Reproducir algunos vídeos en el iPad con GoodPlayer (hay limitaciones con algunos codecs). Esta aplicación permite configurar servidores SMB.
CONFIGURAR UN DNS DINÁMICO (no-ip.com)
Desde hace ya algunos años yo utilizo dominios de no-ip.com. Es una Web que te permite registrar dominios gratuitos que puedes redirigir a tu IP, aunque ésta no sea fija. El truco está en instalar un servicio dentro de tu red interna que periódicamente se conectará a no-ip para informar de cuando nuestro proveedor nos cambie la IP externa. La idea es sencilla, y en para Windows hay un instalable que hace esto. Para línux se requieren un par de pasos más, pero tampoco es hacer un reloj... Lo que sí recuerdo es que tuve que instalar el make (sudo apt-get install make), porque no venía instalado por defecto en la distribución.
El siguiente enlace (en su punto 2) explica cómo hacer esto.
http://geekytheory.com/tutorial-raspberry-pi-7-escritorio-remoto-vnc-no-ip/

4. CONCLUSIONES DE MI EXPERIENCIA

ESTABILIDAD

  • La Pi+XBian no es tan estable como un servidor de 64 procesadores montando una debian. Eso hay que tenerlo claro. Sin embargo es muy estable especialmente en aquello que más maduro tiene, como el propio SO (esto sobra decirlo) o la reproducción de vídeo. JAMÁS se me ha colgado durante la reproducción de vídeo.
  • Algunos de los servicios que montes sí pueden fallar, especialmente los más novedosos o aquellos que no tengan soporte.

RENDIMIENTO
El rendimiento de la Pi es en general excelente para los usos domésticos descritos arriba. Lógicamente hay veces que puede haber cuellos de botella en acceso a disco, en la propia red, que además son difíciles de diagnosticar, precisamente por la cantidad de interrelaciones que hay entre los distintos cacharros electrónicos.
Como ejemplo de capacidad de rendimiento, mi amule está permanentemente funcionando. Pues bien, lo he llegado a tener reproduciendo a través del XBMC en calidad HD y al a vez sirviendo por samba otro vídeo (alojado también en el HD conectado a la Pi) que se estaba reproduciendo en Android. Cool !

Como reflexión adicional, es asombroso de lo que es capaz un cacharrito con 512 Mb de RAM con el SO adecuado... He encontrado definiciones de la Pi del tipo "En hardware es similar a un ordenador de 2003". ¡¡ Ni de lejos nuestro XP realizaba de forma tan eficaz lo que hace nuestra frambuesa electrónica !!

OTROS USOS CURIOSOS
Siguiendo el manual que enlazo abajo, programé un script que envía la temperatura de la Pi cada 5 minutos a un servidor de Internet para tener un control completo de su temperatura. Añadiendo un sensor de temperatura a la Pi, podemos tener un registro de temperatura de nuestro salón, o de nuestra ciudad/barrio, si ponemos el sensor en el exterior.
http://geekytheory.com/conectando-la-raspberry-pi-a-xively-internet-of-things/

PRÓXIMOS PASOS

  1. Como decía arriba, centralizar toda tu información/documentación/fotos está muy bien. Está genial de hecho. Es más, no hay nada mejor que centralizar...hasta que el disco duro se te avería, se te cae, se moja, se quema.... El siguiente paso es hacer una copia de seguridad a otro disco duro (espejo) con el comando rsync de linux. 
  2. Con el tiempo es más que probable que monte incluso una segunda Pi, de forma que pueda separar físicamente los discos en espejo para minimizar el riesgo en caso de accidente.
  3. Aprender Python, se puede cacharrear mucho y bien con una Pi si conoces este lenguaje de programación.

OTROS ENLACES DE INTERÉS
Introducción completa a Raspberry Pi
Tutorial completo de XBMC

No hay comentarios: