Noticia Madsonic: Instalar servidor de streaming de música en un Raspberry Pi

En este tutorial voy a explicar como instalar un servidor de streaming de música (madsonic) en la Raspberry Pi con Arch Linux ARM.
Para ver un tutorial de como instalar Arch Linux en una Raspberry Pi pueden mirar este post

Es recomendable no instalar entorno gráfico en la Raspberry Pi, ya que utiliza mucha memoria. Es mejor trabajar siempre usando una conexión ssh

Las principales características de madsonic son las siguientes:

  • Interfaz web intuitiva
  • Soporta transcodificación a varios formatos (Ej. FLAC > mp3)
  • Cuenta con clientes para Android e iOS
Limitar RAM para GPU y creación de área de intercambio (SWAP)

Los siguientes pasos son opcionales, pero yo recomiendo hacerlos para evitar que la Raspberry se quede con poca RAM

El servidor madsonic funciona bajo Java, por lo tanto, en una Raspberry Pi de 256 MB de RAM utiliza aproximadamente el 50% de la RAM. En este caso recomiendo crear un área de intercambio (swap) para evitar que la Raspberry Pi se quede corta de memoria.

1. Creamos un archivo que se utilizará como área de intercambio archivo y le asignamos un espacio de 512 MB

# fallocate -l 512M /swapfile

2. Asignamos permisos de lectura y escritura al archivo.

# chmod 600 /swapfile

3. Formateamos como swap

# mkswap /swapfile

3. Activamos swap

# swapon /swapfile

4. Agregamos la siguiente linea al archivo /etc/fstab para que monte la swap automáticamente.

/swapfile none swap defaults 0 0

5. Modificamos el archivo /etc/sysctl.d/99-sysctl.conf para que la escritura en swap sólo se haga en caso que tengamos poca RAM disponible. Agregamos la siguiente linea

vm.swappiness=10

6. Usando el comando free -h comprobamos la cantidad de RAM que tenemos.

7. Modificamos el archivo /boot/config.txt dependiendo del modelo de Raspberry Pi que tengamos, para limitar la cantidad de RAM asignada a los gráficos.

¡CUIDADO! Si ponemos muy poca RAM para la GPU, la Raspberry no arrancará y tendremos que introducir la SD Card a una computadora para reparar el archivo /boot/config.txt

Asignaremos 64 MB de RAM para gráficos.

  • Para Raspberry Pi modelo A (con 256 MB de RAM) modificamos la linea gpu_mem_256=128 por gpu_mem_256=64
  • Para Raspberry Pi modelo B (con 512 MB de RAM) modificamos la linea gpu_mem_512=316 por gpu_mem_512=64
Overclocking (Opcional)

Se recomiendo utilizar alguna fuente de enfriamiento para evitar que la Raspberry se sobrecaliente

Editaremos el archivo /boot/config.txt y descomentaremos alguna de las opciones de overclock que se encuentran al final del archivo.

##Modest
arm_freq=800
core_freq=300
sdram_freq=400
over_voltage=0
##Medium
#arm_freq=900
#core_freq=333
#sdram_freq=450
#over_voltage=2
##High
#arm_freq=950
#core_freq=450
#sdram_freq=450
#over_voltage=6
##Turbo
#arm_freq=1000
#core_freq=500
#sdram_freq=500
#over_voltage=6


Yo utilicé la opción Modesta (velocidad de 800), con dicha velocidad mi Raspberry Pi funciona bien.

Instalación de Madsonic


Madsonic se encuentra en el Arch Linux User Repository (AUR), por lo tanto necesitamos el paquete base-devel para poder compilar programas de AUR.

Instalamos los paquetes necesarios

# pacman -S wget curl base-devel yajl java-runtime libcups

Creamos un directorio para la compilación y descargamos madsonic desde AUR.

$ mkdir build
$ cd build
$ wget https://aur.archlinux.org/packages/ma/madsonic/madsonic.tar.gz


Extraemos los archivos y editamos el archivo PKGBUILD para agregar el soporte para procesadores ARM. Buscamos la linea arch=(‘i686′ ‘x86_64′) y agregamos
‘armv6h’.

$ tar zxf madsonic.tar.gz
$ cd madsonic
$ nano PKGBUILD
...
arch=('i686' 'x86_64' 'armv6h')


Usamos el comando makepkg para descargar y compilar el código de madsonic. Esto puede tardar un buen rato. Sean pacientes.

$ makepkg -g >> PKGBUILD
$ makepkg


El comando makepkg generará un archivo con extensión .xz, dicho archivo lo podemos instalar usando pacman.

# pacman -U madsonic-5.0.3860-1-armv6h.pkg.tar.xz

Instalación de Java Oracle para ARM


Después de instalar madsonic me he dado cuenta que openjdk utiliza casi el 100% de procesador y por lo tanto, esto representa un bajo rendimiento de la Raspberry Pi.

La solución a este problema es utilizar Java de Oracle para arquitectura ARM. Para mayor información sobre este tema, pueden revisar el articulo de oracle en donde muestran el Benchmark de Oracle Java vs OpenJDK en este link.

Descargamos Java Oracle para arquitectura ARM

wget --no-cookies \
--no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; \
oraclelicense=accept-securebackup-cookie" \
"http://download.oracle.com/otn-pub/java/jdk/7u55-b13/jdk-7u55-linux-arm-vfp-hflt.tar.gz"


Descomprimimos el archivo en la ruta /opt/java-oracle/

# mkdir /opt/java-oracle
# tar -zxf jdk-7u55-linux-arm-vfp-hflt.tar.gz -C /opt/java-oracle

Creamos la variable de entorno de Java Home y respaldamos los ejecutables de Java de OpenJDK.

# JHome=/opt/java-oracle/jdk1.7.0_55
# test -L /usr/bin/java && mv /usr/bin/java{,.backup}

Creamos enlaces simbólicos para para java y javac.

# ln -sf /opt/java-oracle/jdk1.7.0_55/bin/java /usr/bin/java
# ln -sf /opt/java-oracle/jdk1.7.0_55/bin/javac /usr/bin/javac


Ahora podemos probar la instalación de java con el comando java -version

[eroland@alarmpi ~]$ java -version
java version "1.7.0_55"
Java(TM) SE Runtime Environment (build 1.7.0_55-b13)
Java HotSpot(TM) Client VM (build 24.55-b03, mixed mode)

Editamos el archivo de configuración de madsonic para que utilice Java Oracle y no Java OpenJDK.

# nano /var/madsonic/madsonic.sh

Y modificamos la lina JAVA_HOME para que quede de la siguiente manera

JAVA_HOME=/opt/java-oracle/jdk1.7.0_55/jre:/usr/lib/jvm/java-7-openjdk
Configuración de madsonic


La configuración de madsonic se realiza en el archivo /var/madsonic/madsonic.sh, lo primero que hacemos es respaldarlo.

cp /var/madsonic/madsonic.sh{,.backup}

En dicho archivo se puede modificar el puerto que usará madsonic (por defecto usa el puerto 4040), la ruta de la carpeta donde estarán almacenadas las canciones, etc.

Añadiremos un Disco Duro Externo conectado por USB en donde pondremos las canciones a reproducir.

Si el disco duro tiene formato NTFS, es necesario instalar el paquete ntfs-3g para poder montar el disco.

# pacman -S ntfs-3g

Creamos la carpeta donde se montará el disco duro y le damos los permisos necesarios

# mkdir /mnt/Datos
# chmod 775 /mnt/Datos

Obtenemos el punto de montaje de nuestro Disco Duro

$ ls -l /dev/disk/by-label/
total 0
lrwxrwxrwx 1 root root 10 Dec 31 1969 Datos -> ../../sda2
lrwxrwxrwx 1 root root 10 Dec 31 1969 PS3 -> ../../sda1


En mi caso me interesa el disco con etiqueta Datos que se encuentra en /dev/sda2
Sin embargo, utilizar la etiqueta para montar el disco no es muy recomendado, ya que si la etiqueta cambia, el disco no podrá montarse.

Obtenemos el identidificador unico (UUID) de nuestro disco duro.

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

Tendremos un resultado parecido a este

[eroland@alarmpi ~]$ ls -l /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root 10 Dec 31 1969 19F4-1917 -> ../../sda1
lrwxrwxrwx 1 root root 15 Dec 31 1969 2300-4E18 -> ../../mmcblk0p1
lrwxrwxrwx 1 root root 10 Dec 31 1969 58F6AA78F6AA55D2 -> ../../sda2
lrwxrwxrwx 1 root root 15 Dec 31 1969 b471cde8-2a15-44e7-acce-e9a2a54511a6 -> ../../mmcblk0p5


Anotamos el UUID de nuestro disco duro (en este caso 58F6AA78F6AA55D2)

Agregamos la siguiente linea al final del archivo /etc/fstab

UUID=58F6AA78F6AA55D2 /mnt/Datos ntfs-3g default 0 0
Recuerden cambiar el UUID, por el que obtengan de los comandos de arriba

Reiniciamos nuestro Raspberry Pi y automáticamente se montará el Disco Duro.

Finalmente iniciamos el servicio de madsonic

# systemctl start madsonic.service

Si queremos que el servicio se inicie automáticamente cada que el sistema cargue.

# systemctl enable madsonic.service

Y listo, tenemos nuestro servidor de streaming de música.

Una vez iniciado el servico de madsonic, podemos entrar desde nuestro navegador preferido a la dirección IP de nuestro Raspberry Pi junto con el puerto 4040, en mi caso es la 192.168.17.1:4040 y entramos usando los datos user=admin password=admin.



Ya dentro de la interfaz web podemos agregar nuevos usuarios y cambiar la contraseña por defecto.

Bueno, este es mi primer aporte, espero les guste.

Fuentes:
http://d.stavrovski.net/blog/post/s...erver-with-madsonic-archlinux-and-cubieboard2
http://www.techjawab.com/2013/06/how-to-setup-mount-auto-mount-usb-hard.html

La entrada Madsonic: Instalar servidor de streaming de música en un Raspberry Pi aparece primero en Desde Linux.


KED3G44CMs8


Continúar leyendo...