Apple iWatch

Exactamente lo mismo que sacar el móvil para mirar la hora.
Reloj del siglo XX.

La misma gente a la que le parecía incómodo mi reloj de bolsillo abandonó el de pulsera porque ya tenía uno en el móvil (en el bolsillo). Ahora se comprarán un iWatch para evitar sacar el móvil del bolsillo cuando les llegue un correo.

Y mientras tanto el reloj, igual que el móvil, hará lo que Apple quiera que haga. Una declaración de la Free Software Foundation al respecto. La traducción, aquí.

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

Convierte tu Raspberry Pi en un servidor de descargas. rTorrent

Tras las últimas entradas dedicadas al Raspberry Pi en las que instalamos y configuramos Debian Wheezy para que funcione sin entorno gráfico en el pequeño artilugio británico, llegamos al final. Un servidor de torrents, que no solo de aMule vive el pirata.

Si lo que buscas es un centro multimedia, no te pierdas la siguiente entrada del blog.

He escogido un gestor de torrents en linea de comando, uno muy muy liviano y muy muy completo. Es incluso muy muy fácil de manejar en cuanto se aprenden cuatro cosas. Al final os pondré un enlace a una página en la que enseñan la manera de menejar su interfaz, pero intentaremos que quede todo configurado desde el inicio y no haya que tocar nada. Empezamos:

sudo aptitude install rtorrent screen

Respecto a rtorrent, ninguna duda, es el gestor de torrents que he escogido. Screen es un emulador de consola dentro de la consola; es decir, nos permite lanzar un programa, desvincularnos de él para que siga corriendo en segundo plano, dejar la terminal libre para hacer otras cosas y retomar el programa original cuando lo deseemos. Para usar estas características, hemos de descargar y usar un pequeño script cortesía de CeeC, para lo que haremos:

wget http://sites.google.com/site/xonosweb/Home/rtdaemon

Y luego, una vez descargado, le damo permisos de ejecución:

sudo chmod +x rtdaemon

Y lo copiamos a una carpeta donde el sistema lo trate como programa ejecutable:

sudo mv rtdaemon /usr/bin/

Aún no está listo. Falta configurar rtorrent.

Para configurar este programa es necesario un archivo de texto, de nombre “.rtorrent.rc” que se guarda, oculto, en la carpeta del usuario. Es un archivo complicado, por lo que es mejor bajarse un archivo de muestra y retocarlo después. Este es uno, el mío; descárgalo, renómbralo a .rtorrent.rc y guárdalo en /home/pi. Todo junto desde tu sesión en Raspberry a través de ssh:

wget https://bokunoshumi.files.wordpress.com/2012/12/rtorrent1.odt

mv rtorrent1.odt .rtorrent.rc

nano .rtorrent.rc

Ya tenemos abierto el archivo dispuesto a ser modificado.

En las líneas”upload_rate” y “download_rate” ajusta la velocidad máxima de subida y la velocidad máxima de bajada. Como va a estar funcionando las 24 horas del día, y como supongo que querrás navegar normalmente en cualquier momento, es una buena idea ajustar una velocidad de subida de 1/3 o menos de la total, igual que para aMule, de modo que siempre quede ancho de banda para navegadores, tablets o lo que sea.

El directorio de descargas está ajustado a “/home/pi”, pero si has ajustado de modo diferente el punto de montaje de tu disco o prefieres que los torrents se descarguen en otro directorio, escríbelo en la línea “directory”.

Ahora viene algo importante.

Hay un directorio donde el programa guarda sus datos de sesión y no funcionará si él. Viene definido en la línea

session = /home/pi/archivo/sesion

También hay un directorio donde guardar los archivos .torrent que te bajes de internet. rTorrent vigila ese directorio e incluye en su lista de descargas esos archivos sin que tengas que hacer nada. Te bajas el archivo, lo copias en esa ruta y te olvidas de él. Se puede ajustar en esta línea:

schedule = watch_directory,5,5,load_start=/home/pi/archivo/torrents/*.torrent

Como se ve, he creado una carpeta, dentro de la carpeta personal del usuario pi, de nombre “archivo” y dentro de ella otras dos, una para “sesion” y otra para “torrents”. Configura todos los directorios a tu gusto, pero recuerda que deben existir las rutas que definas en estas líneas.

Hay una serie de configuraciones posibles que no están activadas, como dejar de compartir al llegar a un determinado ratio, etc, pero yo prefiero borrar los torrents manualmente.

Por último, fíjate en las líneas

port_range = 7890-7999

dht_port = 7881

En esa línea se definen los puertos que rTorrent usa para escuchar. Ábrelos en el router o cámbialos por otros que estén abiertos.

Y con esto estará configurado y listo para funcionar. Allá vamos:

El demonio de rTorrent es muy sencillo de manejar. Simplemente escribe

rtdaemon start

para iniciarlo,

rtdaemon show

para ver el programa y controlarlo, y

rtdaemon stop

para detenerlo.

Añade algún archivo torrent en la carpeta que hemos definido antes e inicia el programa con el comando rtdaemon start.

Ya está funcionando. De momento, con esta configuración, tendrás que iniciarlo cada vez que el ordenador se encienda, porque no arranca automáticamente.

Para controlar rTorrent, aunque es muy sencilo, hay que aprender los pasos básicos. Para ello recomiendo visitar los siguientes enlaces:

http://ciberterminal.blogspot.com.es/2008/02/howto-usar-rtorrent-como-un-profesional.html

http://tuxpepino.wordpress.com/2007/05/18/%C2%BFconocias-rtorrent

Convierte tu Raspberry Pi en un servidor de descargas. ¿Por qué?

Hace un tiempo que me compré un Raspberry Pi para usar de centro multimedia. La experiencia no ha podido ser mejor, por lo que ahora tengo otro para usar como servidor de descargas, es decir, tener corriendo aMule y un servidor de torrents las 24h.

[Actualizados los cálculos con precios de 2014]

Una de las razones por las que me he decidido a jubilar mi viejo Athlon XP 2600 es el consumo. Una simple multiplicación que, en los tiempos que corren, me ha puesto los pelos de punta. La cuenta de la vieja: si el ordenador consume unos 150 W (65 del procesador, 12 cada uno de los dos discos duros y 60 la tarjeta gráfica más otros componentes como lectores-grabadores o tarjeta de red, cuyo consumo no he podido determinar, y el monitor, usado durante un tiempo indeterminado), durante 24 h son 3600 Wh al día. En un año el consumo de energía es de 1314000 Wh, es decir 1314 KWh. Y la compañía eléctrica me cobra la electricidad a 0,126 €/KWh. El precio total anual de bajarse las series todas es de 165,56 € al año.

Así que he desmontado el disco duro “grande”, y me he gastado 30 € en una caja para alimentarlo y usarlo como disco externo USB. Así lo he montado todo (ordenador, router y almacenamiento) juntito en un cajón. Ahora el consumo máximo es, teóricamente, de 17 W: 5 del ordenador y 12 del disco duro (el consumo del router está fuera del cálculo porque no puede eliminarse sea cual sea el ordenador que se use) y el año me sale a 18,76 € (por 148,92 KWh de consumo total). El ahorro es de 146,80 € al año, ¡un 88%!. Si la inversión ha sido de casi 75 € entre el Raspberry pi, la caja del disco y una regleta de alimentación, está amortizado en 6 meses. Y si ya tienes una regleta de enchufes o un disco externo libre, aún más ahorro y menos tiempo de amortización. Mejor imposible.

¿Alguien duda todavía de por qué he hecho el cambio?

En poco tiempo publicaré un post que estoy preparando Echadle un vistazo a la entrada con el proceso necesario para llegar a buen puerto con este proyecto.

NOTA: El consumo máximo de un equipo es muy sencillo de estimar sabiendo las características de su alimentación. Si el transformador (el cargador del móvil, por ejemplo, que es lo que yo uso; en la siguiente entrada se explica) da  los 5 V y una intensidad de 1 A, aplicando la fórmula de la potencia eléctrica (P=V·I) tenemos que P=5 W. Si el ordenador no demanda constantemente 1 A a la fuente de alimentación, sino que esta trabaja más relajadamente, el consumo es incluso menor. En realidad el consumo del Raspberry Pi en solitario, sin Wifi ni teclados Bluetooth ni nada ronda los 3,5 W (5V y 700mA mínimos recomendados para la fuente de alimentación). El consumo exacto se puede saber midiéndolo directamente con un amperímetro, pero soy un poco vago a veces…