Recientemente he tenido que montar un pequeño servidor para una aplicación web que tenía que estar en una intranet. He aprovechado que tenía un TonidoPlug para montarlo ahí, aunque hoy por hoy hay multitud  de mini ordenadores ARM en los que puedes instalar linux.

Mini-Ordenadores ARM:

Desde Raspberry Pi (25$+), pasando por el famoso MK802 (54$), FXI Cotton Candy (TBA), Panda Board (161$), Hackberry (60$), BeagleBoard (150$), CuBox (140$), Gumstick Overo (150$), TonidoPlug2 (120$), OpenRD (150$), Pogoplug Pro (?), BeagleBone (89$), IGEPv2 (188€), Mele A100 (95$), Nitrogen6X (300$), ODROID-X (129$), TrimSlice (213$+)… Los rangos de precios van de 50€ a 300€ y la media está en 100€.

Hay que tener en cuenta que los precios son orientativos: pueden cambiar con el tiempo y variar entre distribuidores. Además hay que tener en cuenta que los precios son sin gastos de envío. Hay que ver por cuanto saldrían los gastos de envío, el ratio $/€, las prestaciones de cada uno y el tiempo que estamos dispuestos a esperar para recibirlos.

Mi recomendación:

Yo tengo y recomiendo el MK802 chino por la calidad/precio. Viene con Android, tiene Wifi-G, 1GHZ-A8, 1GB de RAM, 4GB de memoria interna, lector de Micro-SD, puerto USB para enchufar dispositivos, HDMI, se puede enchufar por usb como fuente de alimentación además de a la pared, tiene aceleración gráfica OpenGl ES, (no tiene ethernet, aunque hoy en día con WiFI basta), es muy pequeño (un poco más que un pendrive) y tiene carcasa y  permite instalar diversas distros de linux y usarlo como servidor. Se puede comprar en AliExpress bastante bien de precio (54$) (47$). Por un poco más tienes algo parecido a un MK802 Dual Core 1.2GHZ-A9 y Wifi-N (77$) (aunque ese modelo no lo he probado, tiene buena pinta también).

Por 80$ (61€ al cambio) podemos tener un MK802 + USB 32gb 100/60mb/s (sin gastos de envío si podemos esperar mes y medio).

Memoria persistente:

Y una memoria usb 15/7MB/s de 16gb (12€) o una memoria 53/15 de 8GB (13€) se puede conseguir por unos 10€ a día de hoy . Por 24€ podemos conseguir una memoria 70/30 MB/s de 32GB (24€). También podemos considerar usar HDDs via USB aunque saldrán más caros, gastarán más energía y harán más ruido y igual no necesitamos tanto espacio y con una memoria USB es suficiente.

Caso concreto TonidoPlug + Stick USB 10/5MB/s 16GB + ArchLinux:

Aunque los compré hace tiempo, imagino que en su momento me costaría todo unos 120€.

Decidí instalarle ArchLinux porque es muy sencillo y el rendimiento que se obtiene es muchísimo mejor que la distribución ubuntu que viene con el dispositivo. Además lo actualizan a menudo y tiene las últimas versiones del software que utilizaba PHP 5.4, Nginx 1.2…

Guia de instalación de ArchLinux para TonidoPlug:

http://archlinuxarm.org/platforms/armv5/tonidoplug

Usando “pacman” el equivalente a apt-get y yum de archlinux:

http://archlinuxarm.org/support/guides/applications/package-management](http://archlinuxarm.org/support/guides/applications/package-management)

Comandos básicos:

Updatear paquetes instalados: pacman -Syu
Buscar un paquete por nombre: pacman -Ss nombre
Instalar un paquete por nombre: pacman -S nombre

Instalando git, svn, php, mysql, nginx, php-fpm:

pacman -Syu
pacman -S git svn php php-apc php-fpm mysql nginx
rc.d list
rc.d start nginx
rc.d start php-fpm
rc.d start php-mysqld

En el archivo /etc/rc.conf al final habrá una lista de servicios
DAEMONS=(hwclock syslog-ng network netfs crond sshd)

Aquí podemos añadir nginx, php-fpm, y mysqld de forma que se arranquen al iniciar el sistema quedando por ejemplo:
DAEMONS=(hwclock syslog-ng network netfs crond sshd php-fpm mysqld nginx)

Configuración de no-ip:

Si se va a acceder desde Internet al servidor, además redireccionar el puerto 80 al dispositivo, puede ser una buena idea crear una cuenta no-ip y hacer que el servidor la sincronice para lidiar con las ips dinámicas.
Creamos cuenta en: http://www.no-ip.com/
pacman -S noip
# Configuramos la cuenta</span>
noip2 -C
rc.d start noip
(añadir también el demonio noip al rc.conf)

Configuración de nginx para funcionar con php-fpm:

Si queremos que nginx funcione como un apache cualquiera, procesando archivos PHP a pelo sin un dispatcher (cosa no recomendada, pero bastante típica):

server {
        listen       80;

        root   /home/www;
        index  index.html index.htm index.php;

        location ~ \.php$ {
                include /etc/nginx/fastcgi_params;

                fastcgi_connect_timeout 60;
                fastcgi_send_timeout 180;
                fastcgi_read_timeout 180;
                fastcgi_buffer_size 128k;
                fastcgi_buffers 4 256k;
                fastcgi_busy_buffers_size 256k;
                fastcgi_temp_file_write_size 256k;
                fastcgi_intercept_errors on;

                fastcgi_index index.php;

                fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
                fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;

                if (-f $request_filename) {
                    fastcgi_pass 127.0.0.1:9000;
                }
        }
}

Configuraciones adicionales

MySql

Si queremos acceder a mysql via socket tcp y hacerlo únicamente desde local:

Editamos /etc/mysql/my.cnf

Comentamos la línea con skip-networking y añadimos bind-address</span> = 127.0.0.1

Si queremos que se pueda acceder a mysql desde alguna interfaz concreta escribimos la ip de la interfaz, si queremos que se pueda acceder desde todas las interfaces 0.0.0.0

¿MongoDb?

Para usar mongodb en plataformas ARM hay que compilar del código fuente y aplicar el parche que puse aquí para los updates atómicos:

https://jira.mongodb.org/browse/SERVER-1811