Recientemente adquirí una placa Cubietruck (Cubieboard 3) para trastear un poco y ver con qué le podía sacar provecho. Tras dedicarle un tiempo la he convertido en un servidor doméstico con los siguientes servicios:
- Compartición de archivos (SAMBA)
- Servidor de impresión (CUPS)
- Cliente de BitTorrent (Transmission)
Es un sistema de bajo consumo, con unas dimensiones muy reducidas, totalmente silencioso, dispone de conexión SATA para un disco de 2.5 pulgadas, y existe una carcasa económica (Ewell case) para albergar cómodamente todo el conjunto. En comparación con el PC convencional que tenía anteriormente funcionando las 24 horas, supone un cambio muy satisfactorio. Tras algunas semanas en funcionamiento, no le puedo reprochar nada en cuanto a rendimiento ni estabilidad, sin un solo fallo hasta ahora.
El único problema importante lo he encontrado con el grosor del disco duro, un Toshiba de 2TB de la serie MQ, que excede la altura del hueco dedicado a él en la caja, lo que me ha obligado a hacer un apaño para que no choque con la placa Cubietruck, y hace que no se pueda cerrar todo como es debido. Tenedlo en cuenta a la hora de comprar.
Para la instalación del sistema me he decantado por Debian Wheezy, partiendo de la fantástica imagen preparada por Igor Pečovnik. Nos ponemos manos a la obra…
Tras descargar la imagen y grabarla en la tarjeta SD, iniciamos el equipo con ella y transferimos la instalación a la memoria NAND del sistema:
sh ./nand-install.sh
Nos pedirá que reiniciemos y que volvamos a ejecutar de nuevo el mismo script, desde la SD. Tras esta segunda ejecución, ya podemos apagar el sistema y quitar la SD para iniciar de nuevo desde la NAND.
Eliminamos algunos archivos que ya no serán necesarios:
rm .install-exclude rm nand1-cubietruck-debian-boot.tgz rm nand_mbr.backup rm .reboot-nand-install.pid rm sata-install.sh
Actualizamos el sistema:
apt-get update apt-get upgrade
Reconfiguramos el idioma, ejecutando dpkg-reconfigure locales. Añadimos es_ES.UTF-8, y seleccionamos «None» cuando nos pida el default locale.
Establecemos el idioma por defecto ejecutando:
echo ": ${LANG:=es_ES.utf8}; export LANG" >> /etc/profile
Reconfiguramos la zona horaria con dpkg-reconfigure tzdata.
Editamos el archivo /etc/network/interfaces, y cambiamos la siguiente línea:
iface eth0 inet dhcp
Por estas cuatro, sustituyendo la IP de la segunda línea por la que decidamos:
iface eth0 inet static address 192.168.1.11 netmask 255.255.255.0 gateway 192.168.1.1
Podemos reiniciar y a partir de ahora podremos trabajar vía SSH contra esta IP fija que hemos definido.
Lo siguiente es opcional, para deshabilitar los servicios correspondientes al receptor de infrarrojos y el bluetooth, si no vamos a utilizarlos:
mv /etc/rc0.d/K01lirc /etc/rc0.d/k01lirc mv /etc/rc1.d/K01lirc /etc/rc1.d/k01lirc mv /etc/rc2.d/S03lirc /etc/rc2.d/s03lirc mv /etc/rc3.d/S03lirc /etc/rc3.d/s03lirc mv /etc/rc4.d/S03lirc /etc/rc4.d/s03lirc mv /etc/rc5.d/S03lirc /etc/rc5.d/s03lirc mv /etc/rc6.d/K01lirc /etc/rc6.d/k01lirc</p> <p style="text-align: justify;">mv /etc/rc0.d/K01bluetooth /etc/rc0.d/k01bluetooth mv /etc/rc1.d/K01bluetooth /etc/rc1.d/k01bluetooth mv /etc/rc2.d/S04bluetooth /etc/rc2.d/s04bluetooth mv /etc/rc3.d/S04bluetooth /etc/rc3.d/s04bluetooth mv /etc/rc4.d/S04bluetooth /etc/rc4.d/s04bluetooth mv /etc/rc5.d/S04bluetooth /etc/rc5.d/s04bluetooth mv /etc/rc6.d/K01bluetooth /etc/rc6.d/k01bluetooth
Teniendo ya el disco conectado al interfaz SATA, creamos una nueva partición primaria de todo el tamaño del disco:
fdisk /dev/sda
Formateamos la partición recién creada:
mkfs.ext4 -E lazy_itable_init=0,lazy_journal_init=0 /dev/sda1
Creamos el usuario que utilizaremos para acceder a los archivos compartidos, en este caso le llamaremos «stuff»:
adduser stuff
Creamos el punto de montaje para la partición del disco duro:
mkdir /stuff
Y montamos la partición:
mount /dev/sda1 /stuff
Configuramos el fstab para que la partición se monte automáticamente con el inicio del sistema:
echo "/dev/sda1 /stuff ext4 noatime 0 2" >> /etc/fstab
Establecemos los permisos necesarios:
chown stuff:stuff /stuff chmod 700 /stuff
Configuramos el disco duro para que pase a modo «standby» tras 20 minutos de inactividad, añadiendo lo siguiente al final del archivo /etc/hdparm.conf:
/dev/sda { spindown_time = 240 }
Instalamos el servicio SAMBA:
apt-get install samba samba-common-bin
Editamos el archivo /etc/samba/smb.conf, descomentando en primer lugar la línea «security = user», y comentando completamente los apartados [homes], [printers] y [print$]. Después añadimos las siguientes líneas al final del archivo:
[stuff] path = /stuff valid users = stuff guest ok = no writable = yes browsable = yes
Establecemos la contraseña del usuarios stuff para el servicio SAMBA:
smbpasswd -a stuff
Reiniciamos el servicio SAMBA y ya lo tendremos operativo:
/etc/init.d/samba restart
Instalamos el paquete de Transmission:
apt-get install transmission-daemon
Paramos el servicio para poder editar el archivo de configuración, ya que de lo contrario se perdería cualquier cambio que hagamos en él:
/etc/init.d/transmission-daemon stop
Editamos el archivo /etc/transmission-daemon/settings.json, donde configuraremos el directorio donde queremos que vayan las descargas (por ejemplo /stuff/download), la contraseña para acceder al interfaz web, y cualquier otro parámetro que consideremos. Uno de ellos es «umask», y debemos cambiarlo a 0.
Creamos el directorio de descargas que hemos configurado antes y establecemos los permisos necesarios:
mkdir /stuff/download chmod a+x /stuff chmod 777 /stuff/download
Ya podemos iniciar el servicio y comprobar el acceso vía web:
/etc/init.d/transmission-daemon start
Instalamos el servicio de gestión de impresoras:
apt-get install cups
Si vamos a conectar una impresora HP, como es mi caso, instalaríamos el siguiente paquete que proporciona todos los controladores necesarios:
apt-get install hplip
El sistema CUPS viene preparado para que lo configuremos desde el interfaz web, pero conectándonos localmente desde la propia máquina, no permitiendo conexiones externas. Para podernos conectar desde otro equipo, necesitaremos realizar un serie de cambios en el archivo /etc/cups/cupsd.conf.
En primer lugar cambiaremos la línea «Listen localhost:631» por «Port 631». Luego observaremos una serie de línea que aparecen así:
# Restrict access to the server... <Location /> Order allow,deny </Location> # Restrict access to the admin pages... <Location /admin> Order allow,deny </Location> # Restrict access to configuration files... <Location /admin/conf> AuthType Default Require user @SYSTEM Order allow,deny </Location>
Y deberemos dejarlas tal que así:
# Restrict access to the server... <Location /> Order allow,deny Allow 192.168.1.* </Location> # Restrict access to the admin pages... <Location /admin> Order allow,deny Allow 192.168.1.* </Location> # Restrict access to configuration files... <Location /admin/conf> AuthType Default Require user @SYSTEM Order allow,deny Allow 192.168.1.* </Location>
Reiniciamos el servicio para que actualice la configuración:
/etc/init.d/cups restart
Ahora ya nos podemos conectar desde cualquier navegador a la dirección http://192.168.1.11:631/admin (cambiando la IP por la que hayamos definido). Desde la opción Administración -> Añadir impresora, podremos seguir fácilmente los pasos para crear y compartir la impresora.
Puesto que en algún momento puede que nos interese realizar un apagado controlado el sistema sin tener que conectarnos a él remotamente, vamos a configurarlo para que ocurra cuando pulsemos el botón de power. Para empezar instalamos el software de gestión ACPI:
apt-get install acpid
Creamos el archivo /etc/acpi/events/button-power con el siguiente contenido:
event=button/power action=halt
Reiniciamos el servicio para que actualice la configuración y ya podemos hacer la prueba pulsando el power:
/etc/init.d/acpid restart
Configuramos el sistema de envío de correos electrónicos, instalando primero el software necesario:
sudo apt-get install ssmtp mailutils
Creamos el archivo /etc/ssmtp/ssmtp.conf con los datos del servidor SMTP que utilizaremos:
mailhub=host_servidor_smtp_externo:puerto FromLineOverride=YES AuthUser=usuario_smtp AuthPass=password_smtp
Creamos el archivo /etc/ssmtp/revaliases especificando el usuario que va a hacer uso del sistema:
root:usuario@dominio.com:host_servidor_smtp_externo:puerto
Ahora viene la parte divertida. Creamos un script que controlará la activación y desactivación del parpadeo del led naranja de nuestro Cubietruck. Esto lo utilizaremos para activarlo en caso de que se produzca una alarma por temperatura del sistema o por un estado anómalo del disco duro. Este script se ubicará en /usr/local/bin/led_alarm.sh y tendrá el siguiente contenido:
#!/bin/bash case "$1" in on) echo timer > /sys/class/leds/orange\:ph20\:led2/trigger ;; off) echo 0 > /sys/class/leds/orange\:ph20\:led2/brightness ;; esac
Le damos permisos de ejecución:
chmod +x /usr/local/bin/led_alarm.sh
Creamos el script que se activará en caso de un problema con el disco duro en /usr/local/bin/smartdnotify:
#!/bin/bash . /usr/local/bin/led_alarm.sh on echo "$SMARTD_MESSAGE" | mail -s "$SMARTD_FAILTYPE" "$SMARTD_ADDRESS"
Y le damos también los permisos necesarios:
chmod +x /usr/local/bin/smartdnotify
Instalamos las herramientas de monitorización de disco, que utilizarán el sistema S.M.A.R.T.:
apt-get install smartmontools
Reconfiguramos el servicio para que se inicie automáticamente y realice las comprobaciones cada 30 minutos:
sed -i 's/#start_smartd=yes/start_smartd=yes/g' /etc/default/smartmontools sed -i 's/#smartd_opts="--interval=1800"/smartd_opts="--interval=1800"/g' /etc/default/smartmontools sed -i 's/^DEVICESCAN /#DEVICESCAN /g' /etc/smartd.conf
Le indicamos que compruebe nuestro disco duro, pero no lo haga cuando se encuentra en «standby» (a menos que hayan pasado 24 horas desde el último chequeo), y que en caso de encontrar un error nos envíe un correo electrónico utilizando el script que hemos creado anteriormente:
echo "/dev/sda -d ata -H -n standby,48,q -m usuario@dominio.com -M exec /usr/local/bin/smartdnotify" >> /etc/smartd.conf
Iniciamos el servicio:
/etc/init.d/smartmontools start
Definimos el script que activará la alarma en caso de que se superen los 50 grados de temperatura del sistema, y la desactivará automáticamente cuando descienda por debajo de dicho umbral. Lo ubicaremos en /usr/local/bin/temperature_monitor.sh:
if [ "$TEMP_TRUNC" -gt "50" ]; then if [ ! -f $FLAG ]; then . /usr/local/bin/led_alarm.sh on touch $FLAG echo "Temperatura: $TEMP°C" | mail -s "Alerta de temperatura" $DEST fi else if [ -f $FLAG ]; then rm $FLAG . /usr/local/bin/led_alarm.sh off echo "Temperatura: $TEMP°C" | mail -s "Temperatura normalizada" $DEST fi fi
Le asignamos los permisos necesarios:
chmod +x /usr/local/bin/temperature_monitor.sh
Y añadimos la siguiente línea al crontab del usuario «root» para que se ejecute la comprobación cada 15 minutos:
*/15 * * * * /usr/local/bin/temperature_monitor.sh
Recursos consultados:
https://wiki.debian.org/Locale
http://www.thomas-krenn.com/
https://wiki.debian.org/
https://wiki.debian.org/
http://thismightbehelpful.
https://groups.google.com/
http://kevin.deldycke.com/
https://wiki.archlinux.org/
http://stackoverflow.com/
http://askubuntu.com/
http://info4admins.com/tips-
Gracias por el tutorial, ya que me ayudo a resolver el problema que tenia con Samba. Pero no consigo que me cambie el idioma. Que puede ser?