Informe - Groove Basin Universidad Nacional de Quilmes - Laboratorio de Redes y Sistemas Operativos Matias Zacarias, Javier Toledo Julio 2016 1 Introducción En este informe se documentará el proceso de instalación y configuración de una aplicación de tipo cliente-servidor, Groove Basin. Se detallará la forma correcta de instalarla en Ubuntu 16.04 y Linux Mint 17.3. Se comentarán los problemas que surgieron durante la instalación y configuración y se tratará de dar las posibles soluciones a estos problemas. Ademas se enumerarán los distintos casos de usos que se han probado. 2 Groove Basin Groove Basin es un servidor-reproductor de música que permite configurar un servidor y asi compartir música local o remotamente. Los usuarios que accedan al servidor por medio de la interfaz web que incluye Groove Basin o algún otro cliente externo podran controlar el reproductor y gestionar la colección si es que tienen los permisos adecuados. • Caracteristicas: – Incluye un cliente web ligero para gestionar la coleccón de música. – Soporta el protocolo MPD, por lo que se pueden elegir entre una gran variedad de clientes aparte del propio. – Soporte de streamming. Permite escuchar localmente y/o hacer streamming de la música. – Soporte scrobbling de Last.fm – Gestión de playlists (solo usuarios admin). – Permite descargar y agregar música. 1 Figure 1: https://github.com/andrewrk/groovebasin 3 Instalación Para realizar la instalación se puede optar por utilizar un script de instalación, https://github.com/matiazzz/install-groovebasin, o seguir el siguiente tutorial en donde se detalla paso a paso el proceso. 1. Instalar node (Groove Basin necesita la versión v0.10.36 que se instalará por medio de Node Version Manager) $ $ $ $ $ $ $ sudo apt-get update sudo apt-get remove --purge node nodejs sudo apt-get install build-essential checkinstall curl libssl-dev curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh | bash source ~/.profile nvm install v0.10.36 nvm use v0.10.36 2. Instalar libgroove y otras dependencias necesarias. $ sudo apt-add-repository ppa:andrewrk/libgroove (solo para Linux Mint) $ sudo add-apt-repository ppa:mc3man/trusty-media (solo para Linux Mint) $ sudo apt-get update $ sudo apt-get install git cmake ffmpeg libebur128-dev libchromaprint-dev libsdl2-dev libavformat-dev libavcodec-dev libavfilter-dev libavutil-dev $ sudo apt-get install libgrooveplayer-dev libgrooveloudness-dev libgroovefingerprinter-dev libgroove-dev 3. Instalar Groove Basin (desde el codigo fuente) $ git clone --branch 1.5.1 https://github.com/andrewrk/groovebasin.git $ cd groovebasin/ $ npm run build 4 Configuración e inicio de Groove Basin Antes de poder iniciar el servidor es necesario hacer unas pequeñas configuraciones. 1. Correr el comando ’npm start’ para que se creen automaticamente los archivos de configuración. Esto va a mostrar un error, ignorarlo y continuar con el siguiente punto. 2 2. Es necesario darle permisos de lectura y escritura al archivo config.json que se encuentra en la carpeta del proyecto que se clono anteriormente. Para ello se ejecuta el siguiente comando: • sudo chmod 666 config.json 3. Por ultimo abrir con cualquier editor de texto el archivo config.json para configurar los distintos atributos disponibles. Con especificar la ruta correcta de la colección de música es suficiente para que Groove Basin funcione correctamente. De todas formas a continuación se da una breve explicación de cada aspecto configurable. host: Host para acceder al cliente web. port: Puerto para acceder al cliente web. musicDirectory: Ruta donde se encuntra la colección de música. mpdHost: Host para el protocolo MPD. mpdPort: Puerto para el protocolo MPD. encodeBitRate: Calidad de audio del streamming. 4. Finalmente ejecutar el comando ’npm start’ para iniciar el servidor. 5. Luego en cualquier navegador web accedemos con la siguiente dirección: • https://localhost:16242 * 16242 es el puerto por defecto, si se eligio otro se debe especificar el puerto correcto. * Para acceder de forma remota es necesario conocer la ip y el puerto donde se encuentra alojado el servidor. 6. Dentro del cliente web se debe crear una cuenta con permisos de administrador. Para eso ir a la pestaña Settings y apretar el boton ’Make Admin Account’, en la terminal se imprimirá el nombre y usuario de la cuenta que luego puede cambiarse. El admin es quien decide que perimisos tienen los demas usuarios que accedan al servidor. 5 Casos de uso y otros clientes Ademas del cliente web se han probado otros clientes para acceder al servidor por medio del protocolo MPD: ncmpcpp: Se trata de un cliente para MPD que corre sobre la consola, la interfaz fue desarrollada con la libreria Ncurses. Se encuentra en los repositorios de ubuntu y Linux Mint por lo que la instalación no tubo inconvenientes. Se configura por medio de un archivo de texto. 3 Sonata: Es un cliente con interfaz GTK con muchas caracteriscas, tales como letras y portadas de albunes, teclas multimedias, edición de tags, etc. La configuración es muy simple. También se encuntra en los repositorio y está desarrollado con GTK y python. MPDroid: Es un cliente para dispositivos móviles con sistema operativo Android. Permite navegar por la librerı́a de música, hacer streamming y controlar el reproductor. Se ha levantado un servidor con una colección bastante acotada y otra mucho mas grande (aprox. 200gb). Con la primer colección todos los clientes respondieron muy bien, sin embargo con la colección mas grande el cliente web falló en mostrar algunos albunes que se encontraban en la colección y la interfaz se tornó un poco lenta. Mientras que los demas clientes respondieron bastante bien. 6 Problemas y soluciones durante la instalación 1. En un principio se instaló node con el comando sudo ’apt-get install nodejsdev nodejs-legacy npm’ como dice el readme del proyecto, pero esto instala una versión de node distinta a la necesaria. Por lo que se uso Node Version Manager. 2. En Ubuntu todas las dependencias se encuentran en los repositorios oficiales. Mientras que en Linux Mint fue necesario agregar un PPA para instalarlas. 3. Al momento de compilar groovebasin hubo varios problemas por falta de algunas dependencias como libgrooveplayer-dev libgrooveloudness-dev libgroovefingerprinter-dev, las cuales no estan indicadas en el readme del proyecto. *Para resolver estos y otros problemas menores se acudió al sector de issues del proyecto, el cual es recomendable en caso de tener un problema que no figure aca. https://github.com/andrewrk/groovebasin/issues 7 Conclusión Groove Basin es una herramienta util para compartir música, controlarla remotamente desde otros dispositivos distintos a donde se encuentra el servidor. Viene con un cliente web propio por lo cual no es necesario ninguna herramienta extra. Si bien la instalación no es muy simple como cualquier otra aplicación no deberı́a tener mayores incovenientes si se sigue esta guı́a. La configuración es relativamente sencilla, aunque seria muy bueno que en un futuro se pueda configurar por medio de una interfaz más amigable para el usuario. El hecho 4 de que soporte el protolo MPD es muy bueno por que se pueden elegir entre muchos clientes acordes a las necesadidades de cada usuario. 5