Montando un servidor DLNA y un gestor de descargas con un portátil reciclado y Linux.

dlna

Edito el 16/04/15 para indicar esta muy interesante opción https://juanjodominguez.wordpress.com/2015/02/02/montando-synology-dsm-nas-en-un-portatil/

Las vacaciones son un buen momento para cacharrear y disfrutar un poco de la parte divertida del IT. Mi viejísimo Acer Aspire one (512 MB de RAM) estaba ya para jubilarse después de tres años sin descanso sirviendo contenido multimedia, actuando como NAS,  gestionando descargas e, incluso, avisándome de los cortes de luz en casa. Como en casa hemos decidido “jubilar” un Acer Extensa 5230 con 1 GB de RAM, me pareció que era el mejor momento para darle una segunda vida a dicho equipo. Teniendo en cuenta que éste tiene pantalla y teclado (completamente destrozados en el anterior) la cosa ha sido muy fácil de llevar a cabo. Un buen aspirado y limpieza del ventilador con CRC, fáciles de hacer en este equipo, lo deja listo para el combate. 😉

extensa5230

La distribución elegida ha sido Linux Mint 17 Qiana 64 bits con Cinnamon; las hay más ligeras, sí, pero este ya estaba instalado de este modo y la pereza me pudo 😉

Montando un disco USB en el arranque

En primer lugar, he configurado un disco externo USB 2.0 de 1 TB como almacenamiento principal para los datos. Lo tenía por ahí y si con el Aspire ONE funcionó, ¿por qué no iba a hacerlo ahora? Si tenéis disponible un equipo con suficiente disco interno para vuestras necesidades, podéis obviar este paso.

Bien, para que la cosa marche como debe, el disco USB debe montarse durante el arranque del sistema; como si fuera un disco interno.  Para respetar la estructura del fichero /etc/fstab tenemos que conocer primero el UUID del disco . Para ello, tenemos el comando blkid, que hay que ejecutar con sudo. En el caso de mi equipo, el resultado sería el siguiente:

neo@Nas-Tux ~/bin $ sudo blkid
/dev/sda1: UUID=”4bd871b1-cdaa-4843-9d2f-5587b15c286b” TYPE=”swap”
/dev/sda5: UUID=”ada5dc75-c4a5-4fcd-a439-3323488b4c3c” TYPE=”ext4″
/dev/sda6: UUID=”32ce8875-4ab5-434b-85d9-6aa1cca5ea99″ TYPE=”ext4″
/dev/sdb1: LABEL=”1TB” UUID=”2d124e23-ba12-4383-b7ca-c26f8b80bc5f” TYPE=”ext2″

Vemos aquí que cada partición tiene su UUID. Es este “chorizo” de letras y números lo que necesitamos para ponerlo en nuestro /etc/fstab y que se monte el volumen cada vez que encendamos el equipo. La línea quedaría como sigue:

UUID=2d124e23-ba12-4383-b7ca-c26f8b80bc5f       /datos1 ext2    defaults,auto,users     0 0

Por cierto, el disco ya estaba previamente particionado y formateado como extended 2.

Instalando miniDLNA

Lo siguiente que hay que hacer es instalar miniDLNA; un servidor DLNA que es muy fácil de configurar y que funciona realmente bien. Para hacerlo, tenemos que añadir un repositorio e instalar el paquete:

sudo add-apt-repository ppa:djart/minidlna

sudo apt-get update

sudo apt-get install minidlna

Una vez instalado, tan sólo hay que editar el fichero /etc/minidlna.conf y buscar la sección

# If you want to restrict a media_dir to a specific content type, you can
# prepend the directory name with a letter representing the type (A, P or V),
# followed by a comma, as so:
#   * “A” for audio    (eg. media_dir=A,/var/lib/minidlna/music)
#   * “P” for pictures (eg. media_dir=P,/var/lib/minidlna/pictures)
#   * “V” for video    (eg. media_dir=V,/var/lib/minidlna/videos)

Aquí, añadiremos las líneas necesarias para lo que queramos serviro por DLNA, usando el formato indicado por el propio fichero. en mi caso:

media_dir=V,/datos1/pelis

media_dir=V,/datos1/series

Lo ponemos en el fichero /etc/rc.local, justo antes del exit 0, para que arranque cada vez que arranque el equipo. El comando a añadir es:

/etc/init.d/minidlna start

Con esto, ya podremos ver el contenido multimedia que esté en esas carpetas desde nuestra smart tv, tablet, móvil, etc…

Suspender el equipo durante la noche y reanudarlo, automáticamente, por la mañana

Algo que no hice con mi anterior “servidor” fue el hecho de “suspenderlo” durante las horas en las que, seguro, no voy a estar utilizándolo; siempre que NO esté arrancado Amule (mi gestor de descargas habitual), en ese caso, no se suspende.

Para todo esto, he usardo el comando rtcwake, que nos permite poder suspender el equipo diciéndole también, en qué momento queremos que vuelva a la vida. Lo que hago es poner en un pequeño script lo que quiero que haga el equipo antes de entrar en suspensión y lo que va a hacer en cuanto resuma su actividad. El script es el siguiente (ojo con las comillas! deben ser las “normales”, en mi teclado español, en la tecla del 2 con shift) :

#
# Script para suspender el equipo durante 6 horas si no
# esta arrancado amule. Se lanza a las 02:00 con un cron.
#
# JJDC 2014. https://juanjodominguez.wordpress.com
#
/bin/ps -ae|/bin/grep amule
if [ $? = 0 ]
then
exit 1
else

# COMANDOS A EJECUTAR ANTES DE SUSPENDER EL SISTEMA
/etc/init.d/minidlna stop
sleep 10
/bin/umount /datos1
sleep 10
echo “=================================” >> /home/neo/bin/wakeup.out
echo “=================================” >> /home/neo/bin/wakeup.out
echo “=================================” >> /home/neo/bin/wakeup.out
echo “Suspendiendo” >> /home/neo/bin/wakeup.out
/bin/date >> /home/neo/bin/wakeup.out
/usr/bin/sensors >> /home/neo/bin/wakeup.out
echo “———————————” >> /home/neo/bin/wakeup.out

# SUSPENDEMOS A MEMORIA (el tiempo va en segundos)
/usr/sbin/rtcwake -m mem -s 21600

# COMANDOS A EJECUTAR DESPUES DE RESTABLECER EL SISTEMA
echo “Reaundando” >> /home/neo/bin/wakeup.out
/bin/date >> /home/neo/bin/wakeup.out
/usr/bin/sensors >> /home/neo/bin/wakeup.out
sleep 10
/usr/bin/lsusb
/bin/mount /datos1
sleep 10
/etc/init.d/minidlna start
fi

En él, antes de suspender, paro el servidor miniDLNA y desmonto el disco USB. Mi disco USB pasa a un estado “standby” cuando no detecta señal en el puerto USB y si no lo desmontamos antes y lo montamos, después de la suspensión, tiene comportamientos “raros”. También genera un pequeño fichero wakeup.out donde nos deja ta temperatura que tenía la CPU antes de suspender y después, por hacernos una idea del “desgaste” que le hemos ahorrado al equipo.

El script, en mi caso, está en /home/neo/bin, con lo que tendréis que adaptar los path a vuestro entorno. Se lanza añadiendo esta línea al cron, con sudo crontab -e:

00 02 * * * /home/neo/bin/wakeup.sh

Que, en pocas palabras, le dice al sistema que tiene que arrancarlo todos los días a las 2:00 am. Aquí se puede personalizar esto según nuestras necesidades, lógicamente.

Matando Amule cuando terminen las descargas

Con este pequeño script, cerraremos Amule cuando el directorio temporal de descargas esté vació; señal de que no hay descargas en curso. También eliminamos el fichero de lock para que no haya problemas al iniciar de nuevo Amule. Lo que hago es lanzarlo desde el cron, de una forma similar al anterior script, 15 minutos antes de que entre en funcionamiento el script de suspensión. De ese modo, si ya no ya descargas pendientes, se cierra Amule y el equipo se suspende a la hora programada… Se podría incluir esto en el script de suspensión y que lo hiciera todo desde allí; pero, de este modo, podemos lanzar la comprobación de descargas con la frecuencia que se necesite y no tener la mula arrancada sin necesidad; al final, todo es consumo, aumento de temperatura, etc…

#
# Script para matar amule cuando haya terminado las descargas
#
# JJDC 2014. https://juanjodominguez.wordpress.com

ps -ae|grep amule

if [ “$?” = “0” ]; then
descargas=`ls /home/neo/.aMule/Temp/|wc -m`
if [ $descargas -ne 0 ]; then
exit 1
else
/usr/bin/pkill amule
rm /home/neo/.aMule/muleLock
date >> /home/neo/bin/matalamula.out
echo “Mula muerta!!!!” >> /home/neo/bin/matalamula.out
echo “====================================================” >> /home/neo/bin/matalamula.out
fi
else
exit 1
fi

Accediendo en remoto a nuestro equipo

Tenemos varias opciones. La primera, el acceso SSH. Tan solo tenemos que instalar el paquete correspondiente al servidor SSH con sudo apt-get install openssh-server (o desde la interfaz gráfica, en el gestor de paquetes de la distro elegida).

La segunda, muy útil, es mediante el escritorio remoto de Nomachine.

Descargamos el paquete correspondiente a nuestra distro y lo instalamos como más nos guste. Como resultado, podremos acceder a nuestro escritorio remoto desde cualquier sistema operativo, incluidos dispositivos móviles y, ahí, lanzar los trabajos que necesitemos que realice el servidor: descargas, conversiones de formatos, creación de DVDs, lo que se os ocurra. Por cierto, el paquete debemos instalarlo tanto en el servidor como en el equipo que vayamos a usar para acceder en remoto.

Un comentario en “Montando un servidor DLNA y un gestor de descargas con un portátil reciclado y Linux.

  1. Pingback: Montando Synology DSM NAS en un portátil. | La Píldora Roja

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