Instalando un servidor de streaming de audio bajo demanda en Linux
26 dAmerica/New_York April, 2006
Pues resulta que hoy hablando con un compañero (hola Andrés) me di cuenta de que había alguien más en el mundo que recientemente se había encontrado con una “necesidad” un poco peculiar: querer escuchar la música que tiene en su ordenador de casa desde cualquier sitio por medio de una conexión a internet. Y el caso es que yo hace un mes o dos estuve rallado con la misma problemática por una cuestión clara: (1) yo con música trabajo muchísimo mejor y (2) me había quedado sin portátil temporalmente, por lo que tuve que ingeniarmelas para poder escuchar música desde el ordenador de casa de alguna forma cómoda.
El caso es que buscando encontré dos posibles soluciones a mi “problema” de escucha remota:
- Montar una especie de “radio IP” que emitiese mi música por un puerto determinado al que conectarme con mplayer, o un programa similar. El problema de esta solución era que no podía decidir que escuchar en cada momento , ya que era en plan radio, y eso no parecía demasiado interesante.
- Montar un servidor de streaming de audio bajo demanda mediante el cual poder solicitar la música que yo quisiese en el momento que quisiese… para que fuese realmente como tener la música allá donde estuviese, solo que con la carácterística de que solo necesitaría un reproductor (mplayer, por ejemplo) y una conexión de banda ancha…
Y nada… buscando por ahí encontré dos programas que satisfacían las dos opciones: icecast, para montar la “radio IP”, y gnump3d, para la opción del servidor de streaming. Pero evidentemente, la segunda opción parecía la más interesante… así que me puse a ello y monté el servidor de marras, que resultó ser más útil y más cómodo de usar de lo que pensaba yo en un principio, por lo que no lo dudé ni un momento y me puse “manos a la obra”.
Pues bien, después de hablar hoy con Andrés estuve pensando y decidí que iba a compartir la experiencia con el mundo en mi blog, que pa algo lo tengo, ¿no?. Así que aqui está mi guia de como instalar un servidor de estas carácterísticas utilizando software libre, por supuesto.
Bueno, antes de nada comentar que yo utilicé la distribución de GNU/Linux Ubuntu 5.10 “Breezy Badger”, pero en principio sería exactamente lo mismo para cualquier otra distribución, lo único que cambiaría quizás es la instalación de los paquetes necesarios… aunque si la distribución usada es Debian o alguna derivada (Ubuntu, Mepis…) no debería dar ningún problema ya que apt-get se encarga de todo por nosotros.
Pues ahí va la guía en cuestión, aunque la verdad es que no es nada complicado instalarlo, por lo menos en Ubuntu:
- Instalar el servidor de streaming. El servidor se llama gnump3d y está accesible en los repositorios de Ubuntu. Para instalarlo lo único que hay que hacer es escribir:
- Configurar gnump3d. Para ello editamos el fichero /etc/gnump3d/gnump3.conf, en donde en principio solo tendremos que fijarnos en los valores de los siguientes campos:
port:: el puerto donde escuchará nuestro servidor de streaming, tanto para servirnos las música como para ofrecernos una aplicación web cojonuda con la que navegar por toda la música exportada por dicho servidor.root:: el directorio raíz de la carpeta que contiene toda la música que queremos “publicar”.enable_password_protection:: cada uno es cada uno… y cada dos una piragüa, pero yo activaría esta opción (que por defecto viene deshabilitada) para evitar “intrusiones no deseadas” en nuestro servidor. Para que esta opción funcione correctamente son necesarios varios pasos:- En la sección
AUTHORISATION OPTIONS, descomentar la línea donde está mencionada (en el fichero /etc/gnump3d/gnump3.conf) y poner su valor a 1: - Crear un fichero .password en el directorio raíz indicado con
rootcon una línea por cada par usuario/contraseña deseados, de la forma: - Asignar el fichero creado al usuario gnump3d (creado automáticamente al instalar el servidor) y cambiar sus permisos para que sólo él lo pueda leer:
###
enable_password_protection = 1
###username:password
username2:password2
………:………
usernameN:passwordNsudo chown gnump3d .password
sudo chmod 400 .passwordNota: el usuario al que asignamos la propiedad y el acceso del fichero es gnump3d porque es el que viene configurado por defecto, por lo que es lo más cómodo. No obstante, cambiando en /etc/gnump3d/gnump3.conf el valor del parámetro
user, y teniendo en cuenta que el usuario indicado tiene que existir en el sistema, podríamos poner cualquier otro, evidentemente.- En la sección
- Antes de arrancar por primera vez el servidor, es necesario indexar todos los ficheros de audio (Mp3 y Ogg) contenidos dentro (recursivamente) de la carpeta indicada con este parámetro (en mi caso, /almacen/Mp3), para lo que ejecutaremos el siguiente comando:
- Y nada… hecho lo anterior ya está el servidor instalado y configurado, solo queda arrancarlo y probarlo. Para arrancar el servidor, ejecutamos:
sudo apt-get update
sudo apt-get install gnump3d
Por si acaso a alguien no tiene los repositorios adecuados, aquí dejo el contenido del fichero sources.list que estoy usando yo, y que funciona perfectamente para este cometido:
## Breezy
deb http://archive.ubuntu.com/ubuntu breezy main restricted
deb http://archive.ubuntu.com/ubuntu breezy universe multiverse
deb-src http://archive.ubuntu.com/ubuntu breezy main restricted
deb-src http://archive.ubuntu.com/ubuntu breezy universe multiverse
## Breezy updates
deb http://archive.ubuntu.com/ubuntu breezy-updates main restricted
deb-src http://archive.ubuntu.com/ubuntu breezy-updates main restricted
## Breezy security
deb http://security.ubuntu.com/ubuntu breezy-security main restricted
deb http://security.ubuntu.com/ubuntu breezy-security universe multiverse
deb-src http://security.ubuntu.com/ubuntu breezy-security main restricted
deb-src http://security.ubuntu.com/ubuntu breezy-security universe multiverse
## Breezy extras
deb http://ubuntu-backports.mirrormax.net/ breezy-extras main universe multiverse restricted
## Breezy backports
# deb http://archive.ubuntu.com/ubuntu breezy-backports main restricted universe multiverse
sudo gnump3d-index
Este paso realmente no es imprescindible ya que, si intentamos arrancar el servidor sin haber indexado antes los ficheros, se llamará automáticamente a gnump3d-index la primera vez que lo arranquemos. Sin embargo, a mi me parece más claro hacerlo paso a paso… cuestión de gustos, supongo.
sudo /etc/init.d/gnump3d start
Y para probarlo lo único que tendremos que hacer es pinchar en el enlace correspondiente y especificar en “abrir con” (o lo que sea) el reproductor que queremos usar. Otra opción, si usamos mplayer, es hacer la llamada desde línea de comandos. Para ello copiamos la dirección de la canción o carpeta que queremos reproducir (enlace “Play all”, si es una carpeta, o “Download” si es una canción) y en una terminal escribimos:
mplayer -cache 512 -user USUARIO -passwd PASSWORD URL
…donde USUARIO y PASSWORD son válidos dentro del fichero .password y URL es la dirección copiada del navegador (si usamos firefox: botón derecho + “Copiar la ruta del enlace”). La opción -cache 512 indica que usemos una caché de 512 KB, muy útil para evitar saltos en la reproducción cuando estamos escuchando música remotamente… a mi con 512 KB me llegó para mis propósitos de escuchar la música desde mi casa (ADSL de 1Mb/256Kb) aunque cada uno que le ponga lo que le plazca.
Y bueno, con esto creo que está todo… si alguien detecta algo que no sea correcto o que no esté bien explicado, que no dude en poner un comentario y yo encantado de hacer la corrección pertinente. Yo por el momento me despido, y animo a todo el que lea este blog a probar gnump3d, porque realmente está muy bien, y a echar un vistazo con más detenimiento al fichero de configuración, ya que ofrece muchas más opciones interesantes que no fueron comentadas en este post (listas aleatorias, servir de feed para icecast, permisos para rangos de IPs…).
Un saludo y hasta la próxima… ah, por cierto, mientras escribía este post hice la instalación de cero en mi portátil, así que en principio debería funcionar lo que pongo, ya que yo estoy ahora mismo escuchando mi música por medio de este pedazo de servidor de streaming… aunque casi que para escuchar la música localmente no hace falta tanta historia, jeje