[ACTUALIZADO] Convierte tu Raspbery pi en un servidor de descargas. El proceso básico.

[Actualizado] He cambiado el punto de montaje del disco externo para ahorrar espacio en la tarjeta de memoria. Ahora funciona mejor.

[Actualizado] 23-07-2013. No solo se ha cambiado el punto de montaje del disco duro externo, sino de toda la instalación. Instalar el sistema de archivos en una tarjeta SD con su journaling y todo hace que una tarjeta dure menos de 6 meses. Desde que tengo el Raspberry Pi funcionando 24/7 ya he roto 2, una Sandisk y una Kingston. Ahora el sistema es más rápido y estable… de momento. Si aparecen problemas en el futuro, se irán solventando.

El objetivo de este post es explicar el modo de utilizar un Raspberry Pi como servidor dedicado a las descargas debido al alto precio de un PC clásico para este cometido. En esta primera parte, veremos cómo instalar y preparar la configuración básica. Si estás intentando usarlo como un centro multimedia de salón no es necesario nada de esto. Sigue los pasos indicados en esta entrada.

INGREDIENTES:

Un Raspberry Pi.

Una tarjeta SD de al menos 2 GB.

Un disco duro externo de 3,5” o uno de 2,5” con alimentación.

Una fuente de alimentación para el Raspberry Pi.

Lo primero que hay que hacer es conseguir una distribución para instalar en la tarjeta SD. Yo he escogido una ya adaptada a este hardware llamada Raspbian, además es una versión especial de Debian Wheezy, mi sistema operativo preferido con mucha diferencia. Se puede bajar de aquí.

Una vez en nuestro poder, se decomprime el archivo tar.gz para conseguir un archivo de imagen con extensión .img. Ahora introduce la tarjeta SD en el lector y copia todo el contenido de la imagen en ella. Es una imagen, de modo que restaurará completamente las particiones necesarias con sus sistemas de archivos correspondientes. Por eso no se trata de copiar el archivo directamente; para restaurar la imagen escribe en un terminal de root:

dd if=/ruta.archivo.de.imagen/imagen.img of=/dev/sdx

donde sdx es el dispositivo de la tarjeta. Si no sabes cuál es el dispositivo, en el mismo terminal de root

fdisk -l

y busca la partición de la tarjeta SD. Recuerda, no debes instalar la imagen en la partición sino en el dispositivo, de modo que si la tarjeta aparece como /dev/sdb1 el comando de instalación es

dd if=/ruta.archivo.de.imagen/imagen.img of=/dev/sdb.

Ya tenemos Debian Wheezy instalado en la tarjeta. Incluye el escritorio LXDE y aplicaciones varias, pero se las podemos quitar todas si andamos justos de espacio. No vamos a quitar nada, que eso se puede hacer más tarde y es una cuestión personal.

Lo que encontramos en la tarjeta SD es una partición de 59 MB con los archivos del directorio /boot y otra partición con el resto de la instalación. Lo que vamos a hacer es mantener la partición /boot en la tarjeta y usar el disco externo para el resto de los datos. Hemos de seguir dos pasos a continuación:

Dentro de la carpeta /boot (en la tarjeta), hay un archivo que se llama cmdline.txt que es necesario editar. Ábrelo con un editor de textos y cambia el texto root=/dev/mmcblk0p1 por root=/dev/sda1 y deja el resto como está. Si en lugar de mmcblk0p1 te encuentras con mmcblk0p2 u otra cosa similar no te preocupes, cámbialo por root=/dev/sda1 y listo.

A continuación es necesario grabar una imagen de la segunda partición, la que contiene todos los datos excepto el directorio /boot. Identifícala siguiendo el método anterior y guarda una imagen con

dd if=/dev/sdxn of=/ruta.al.archivo.de/imagen.img

donde sdxn es la partición de la tarjeta que queremos conservar, por ejemplo sdb2, sdc1, etc. Dependerá de qué dispositivos estén conectados al ordenador y en qué orden.

Una vez hecho esto, si aún no está conectado el disco duro externo que vamos a utilizar para descargar, conéctalo al ordenador. Vamos a formatearlo de la siguiente manera: una partición de 4GB para la instalación del sistema, una partición de 1GB (o 500 MB, como prefieras) para swap, y el resto para home. Todo en ext4. Se puede hacer por consola o en modo gráfico con GParted, la Utilidad de discos de Ubuntu u otros programas.

Ahora volvamos a la consola de root y buscamos la partición del disco externo que vamos a dedicar a la instalación de Raspbian. Supongamos que en la salida de fdisk -l encontramos esa partición como sdc1.

Se vuelca la imagen que se grabó antes con la instalación de la tarjeta SD con:

dd if=/ruta.al.archivo.de/imagen.img of=/dev/sdc1

suponiendo que sdc1 sea la partición correcta. Sustituir por lo que corresponda. Una vez echo esto, es necesario comprobar el sistema de ficheros y extender el tamaño de la imagen al total de la partición, para que la ocupe toda. Si te fijas, si haces df -h, verás que a pesar de tener 4 GB (o los que le hayas dedicado) disponibles, el tamaño real aparece idéntico al que había en la tarjeta. Para desfacer este entuerto, teclea los comandos (como superusuario siempre):

e2fsck -f /dev/sdc1

resize2fs /dev/sdc1

Si está montado el sistema de archivos, no se podrá comprobar, de modo que desmóntalo antes con umount /dev/sdc1.

Ahora lo que hay que hacer es montar el sistema completo; es decir, coge tu Raspberry Pi, insértale la tarjeta SD, conéctale un cable de red, el almacenamiento externo y, finalmente, enchufa la fuente de alimentación al puerto micro-USB. Yo he usado un cargador de iPod, que como normalmente ya se carga cuando se enchufa al ordenador, pues no le daba mucho uso. Recuerda que se recomienda que dé 1 amperio, que es lo que da el alimentador de Apple, o como mínimo 0,7 amperios. Un cargador de móvil también sirve si proporciona esa intensidad. Estos datos están siempre en una pegatina o serigrafiados en el propio cargador.

Esta es la imagen de la instalación completa para tener debajo del escritorio y que no moleste. Al estar dentro de una caja de cartón también sirve para recoger lo que sobre de los cables de alimentación o del ISP (el coaxial blanco que va al router).

Vista frontal.
Vista frontal.

En esta vista posterior se aprecian tres cables de datos que salen del router. Uno de ellos va al RaspberryPi, los otros dos están para conectar otros dispositivos cuando sea necesario sin tener que andar buscando cables por casa. Los terminales están sueltos dentro de la caja.

Vista posterior.
Vista posterior.

Y esta es la vista del interior de la caja. El RaspberryPi está metido en una cajita de papel para que no haya nada que toque la placa base por error. Está la regleta de alimentación con interruptor y protección, el disco duro externo, el RPi y un montón de cables, sin ordenar porque como no se ve nada…

Vista interior.
Vista interior.

Conéctalo todo. Espera unos segundos a que arranque y vete a otro ordenador que también esté conectado al router (el mismo que estabas usando hasta ahora sirve). OPCIÓN: Si puedes conectar un teclado USB y un monitor HDMI (o DVI con adaptador) a tu Raspberry, no es necesario que hagas las cosas a través de ssh, pero el objetivo es un sistema barato, compacto y discreto que podamos situar detrás de una librería, en una estantería o en una caja, como yo, por lo que la mejor opción será la conexión remota. Si tienes monitor y teclado, con el comando “startx” después del arranque iniciarás una sesión de LXDE. Pero es algo que nunca he probado. A partir de aquí puedes seguir haciéndolo todo en local y en modo gráfico. Yo sigo en “modo conexión remota”.

Ya estamos en otro ordenador de la red, el portátil o el de sobremesa, cualquier otro ordenador de la casa. Averigua la IP que ha adquirido el Raspberry Pi conectándote al router a través de un navegador. En el apartado “Users” o “Active Connections” o algo por el estilo podrás ver la IP del equipo que estás usando y también la del Raspberry. Toma nota de la dirección y cierra el navegador.

Ahora abre una consola y teclea

ssh -P22 pi@IP

El sistema te pide una contraseña: es la contraseña del RPi, por defecto es “raspberry”. Introdúcela y verás que cambia la línea del prompt. Ya estás conectado al pequeño Raspberry. La conexión que acabas de establecer es a través del protocolo SSH. Si no sabes nada acerca de él, te recomiendo que leas la siguiente entrada.

Pero, si te fijas, se está usando la instalación de la tarjeta, cosa que no queremos, por lo que debemos editar el fstab. Para ello, teclea:

sudo ls -l /dev/disk/by-uuid

Al final de cada línea está los nombres de la particiones (/dev/sdb1, por ejemplo). Antes hay una cifra larguísima en hexadecimal que es la UUID o identificación única de cada dispositivo. Cópiala.  Haz una copia de seguridad del fstab con el comando sudo cp /etc/fstab /etc/fstab.copia. Ahora editaremos el archivo correspondiente con:

sudo nano /etc/fstab

y al final del archivo, debajo de la línea que dice: /dev/mmcblk0p1  /boot  vfat , etc, añadiremos una línea que contenga lo siguiente:

UUID=41cd5baa-7a62-4706-c9e8-02c43ccee8d9   /            ext4     defaults,noatime   0   1
UUID=b8f34a74-7b9c-41f9-84ed-5b68d52732fa    /home   ext4     defaults             0        0
UUID=657d0693-bc8f-4017-aac5-2d40c27d0f42   none     swap   sw                      0        0

donde las largas ristras de números son las que hemos copiado de la salida del comando anterior, una para la raíz, otra para home y otra para la swap. Los números anteriores, por lo tanto, no sirven más que como ejemplo. Si los copias tal cual, no funcionará seguro.

Guarda, cierra y reinicia.

¿Todo ha ido bien? Si es así, lo verás fácilmente volviéndote a conectar al pequeño Raspberry y comprobando el tamaño de los sistemas de ficheros y su punto de montaje con el comando df -h.

A partir de aquí, aumentaremos un poco la seguridad.

Lo primero que hay que hacer, ya que es un ordenador al que nos vamos a conectar constantemente a través de la red del hogar, es definir una IP fija. Para ello escoge una que te venga bien. Por ejemplo, la que has escrito en el comando anterior, con el que iniciaste la conexión, o una más sencilla de recordar, siempre dentro del rango que permita tu router. Por lo general, están entre 192.168.0.10 y  192.168.0.255; consulta el manual para asegurarte. En mi caso tengo configuradas las direcciones así: 10 para un equipo, 20 para otro, 30 para el siguiente, etc. Escoge una, anótala y abre el siguiente archivo /etc/network/interfaces escribiendo:

sudo nano /etc/network/interfaces

y haz, lo primerito, una copia de seguridad por si las moscas. Aprieta Ctrl+O y añade “.copia” al nombre del archivo. Acepta con “Y” cierra el editor con Ctrl+X. Vuelve a abrir el archivo original de nuevo repitiendo la orden anterior. Desplázate hasta donde pone

iface eth0 inet dhcp

y cambia “dhcp” por “static” (sin las comillas). Añade una línea y escribe:

address IP

netmask 255.255.255.0

gateway 192.168.0.1

donde IP es la dirección que has escogido antes y “gateway” es la IP de tu router. Lo de “netmask” escríbelo así, tal cual. Reinicio de la conexión con el comando

/etc/init.d/networking restart

Ahora debería estar conectado de nuevo con la IP fija. Escribe “ifconfig” y comprueba que la IP es la correcta. Se se ha cortado la conexión ssh entre ambos ordenadores vuelve a establecerla, pero esta vez escribiedo la nueva IP.

Otra cosa muy importante, en un equipo que va a estar conectado las 24 horas sin supervisión, es aumentar la seguridad del usuario “pi” y del servidor ssh. Para ello, hay que editar un archivo de configuración como superusuario. El usuario “pi” tiene acceso a sudo, por lo que no hay más que escribir en la línea de comando:

sudo nano /etc/ssh/sshd_config

En este archivo hay opciones que debemos cambiar para aumentar la seguridad. Para empezar, cambiar el puerto de conexión, que es el 22 por defecto. En la línea que pone “Port 22” cambia el 22 por otro número, como 4321, por ejemplo. Eso cambia el puerto que escucha el servido ssh. Dado que hay multitud de ataques al puerto 22 buscando conexiones abiertas, es el primer cambio que hay que hacer. Hay más cambios posibles, pero os dejo un post interesante al respecto del tristemente abandonado blog “Entre tuxes y pepinos”. Es este.

Lo siguiente es cambiar la contraseña del usuario, la que hemos escrito para establecer la conexión al principio (“raspberry” por defecto), para que conexiones no autorizadas no tengan la contraseña tan fácil de adivinar. Escribe:

sudo raspi-config

y, en el menú que surge, escoge la opción de cambio de contraseña y sigue las instrucciones.

Llegados a este punto, te recomendaría un reinicio para comprobar que todo está bien puesto en su sitio y una copia del sistema. Para ello, en la misma consola escribe

sudo reboot

y el Raspberry Pi se reiniciará. Durante el proceso, obviamente, se cortará la conexión y desaparecerá el prompt del Pi, volviendo a ver el nombre del usuario local. Espera un momento y vuelve a conectarte, usando la nueva IP, el nuevo puerto, el mismo nombre de usuario (pi) y la nueva contraseña.

Otro de las acciones que me gusta hacer en aras de mayor seguridad (por los extraños y para manazas) es desactivar sudo y tener que acceder como root para romper algo. Lo que hay que hacer es configurar una contraseña de superusuario súper-segura. Teclea:

sudo passwd

para configurar una nueva contraseña. A continuación, editaremos un archivo:

sudo visudo

y, cuando se abra el fichero, comenta las líneas (comentar es introducir el carácter # al inicio de la línea, tal y como se ve en el ejemplo):

# Allow members of group sudo to execute any command
#%sudo  ALL=(ALL:ALL) ALL

y

#includedir /etc/sudoers.d
#pi ALL=(ALL) NOPASSWD: ALL

Una vez hecho esto, el comando sudo no funcionará y será necesario conectarse al ordenador con:

ssh -p4321 root@IP

donde, como siempre, 4321 es el puerto que hemos escogido para ssh e IP es la dirección que ya hemos configurado a mano.

Y este es el resultado final con todo funcionando debajo de el escritorio de mi despacho. Silencio total y un servidor 24/7:

Resultado final.
Resultado final.

Ahora solo hay que instalar los programas que uno desee y configurarlos al gusto. Si sabes cómo, no hay problema; si no, atento al próximo post para instalar y configurar un servidor de aMule.

Espero que os haya gustado y le saquéis provecho.

Fuentes:

Método de prueba y error.

Varias visitas a la tienda a comprar tarjetas SD.

http://lgallardo.com/2013/03/17/correr-raspberry-pi-desde-un-disco-usb/

Más prueba y error.

3 comentarios en “[ACTUALIZADO] Convierte tu Raspbery pi en un servidor de descargas. El proceso básico.

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