Home
QUÉ
Re-Inicio
QUIÉN
Paseo de las Estrellas
CÓMO
Regalaté +
¡¡Meritocracia Ya!!
CUANDO Y DÓNDE
Relojo de Abraxas 
EL PORQUÉ
¿Por qué no?
CONTACTO




Gramola WiFi

(El objetivo de este sistema es que los usarios accedan a través de una red WiFi a un servidor que se encarga de poner la música en la fiesta, para poder seleccionar las canciones de una lista. Si no hay petición alguna por servir el sistema elige aleatoriamente las canciones)                                                                                                                     
                                                                                                               NOCOMPRESAHORA



Elementos necesarios (algo de hw, sw libre y un poco de cosecha propia):

Un PC o portátil con Ubuntu 12.04. La instalacion se puede hacer directamente en este pc aunque las instrucciones están pensadas para instalar la gramola en un pendrive y así poderse llavar la fiesta a cualquier otra parte. En cualquier caso lo que se explica para el pendrive igualmente vale para montarlo directamente en un pc

Si se quiere instalar la gramola en un pendrive para poder ejecutar la gramola en cualquier pc que arranque por USB, se necesita un pendrive de 4GB o más

Un router para la red local WiFi

Un cable Ethernet para conectar el router con el sistema gramola

Un PC o portátil con Ubuntu 12.04

Conexión a Internet para deacargar el sw. Una vez instalardo no es necesario pues la red WiFi de la gramola es local

Tener conocimientos de linux o saber preguntarlos en la red ;-)

fichero de configuracion para el BIND9

Servidor bash musical (backend)

Aplicacion web para el Tomcat (frontend)

Fichero index para el ROOT del Tomcat

                                                                   
Pasos a seguir

Instalar gramola en pendrive:



1.- tener un pendrive de 4gb o más

2.- tener ubuntu 12.04 en el pc desde donde se hace la instalacion

3.- crear disco de inicio con el creador de disco de arranque de dicho pc usando la imagen de ubuntu:

ubuntu-12.04.3-desktop-i386.iso

4.- arrancar el pc con el usb de inicio creado

5.- darle a probar ubuntu

6.- crear una cuenta de usuario de administrador llamada gramola

7.- darle una contraseña para activarla

8.- cerrar la sesion de ubuntu y cambiarse a la de gramola

9.- conectarse a internet

10.- ir al centro de software de ubuntu e instalar:

- openjdk-6-jdk

- bind9

- dnsutils

- bind9-doc

11.- ir a la web de debian, descargarse e instalar los siguientes paquetes:

- libfaad2 (http://packages.debian.org.wheezy/i386/libfaad2/download)

- libmikmod2 (http://packages.debian.org.wheezy/i386/libmikmod2/download)

- libmms0 (http://packages.debian.org.wheezy/i386/libmms0/download)

- libmp3lame0 (http://packages.debian.org.wheezy/i386/libmp3lame0/download)

- Music Player Daemon (http://packages.debian.org.wheezy/i386/mpd/download)

- libmpdclient2 (http://packages.debian.org.wheezy/i386/libmpdclient2/download)

- mpc: Una herramienta de línea de órdenas para interactuar con MPD (http://packages.debian.org.wheezy/i386/mpc/download)

12 .- ir a https://help.ubuntu.com/community/MPD y seguir las intrucciones para "Configuring MPD to run as a user service":

sudo service mpd stop

sudo update-rc.d mpd disable

mkdir -p ~/.mpd/playlists

gunzip -c /usr/share/doc/mpd/examples/mpd.conf.gz > ~/.mpd/mpd.conf

touch ~/.mpd/{mpd.db,mpd.log,mpd.pid,mpdstate}

gedit ~/.mpd/mpd.conf

----- escribir lo siguiente -----

playlist_directory "/home/gramola/.mpd/playlists" # Cannot use ~/

db_file "/home/gramola/.mpd/mpd.db"

log_file "/home/gramola/.mpd/mpd.log"

pid_file "/home/gramola/.mpd/mpd.pid"

state_file "/home/gramola/.mpd/mpdstate"

-------------

The music_directory isn't required to be specified unless the music directory is in another place besides /home/user/Music.

Comment the user line (unnecessary/unwanted if using as a non-daemon):

#user "mpd"

Comment out alsa audio_output section, select Pulse section:

audio_output {

type "pulse"

name "MPD"

# server "remote_server" # optional

# sink "remote_server_sink" # optional

mixer_type "software" # para el caso de que de problemas la fijación del volumen con los altavoces internos, porque si no se pone nada la cosa se queda en hardware y a veces da problemas

}

Aparte de lo que dice comentar la línea:

#sticker_file "/var/lib/mpd/sticker.sql"

-------------

11.- copiar el directorio gramola a la carpeta personal

12.- abrir un terminal y dar permiso de ejecucion a los scripts

cd gramola

13.- se copia la musica al directorio /home/gramola/Música

14.- se verifica que la variable LA_LONG_MAX es menor que la lista de canciones de la biblioteca en /home/gramola/Música

15.- se descarga el tomcat 7 (http://ftp.cixug.es/apache/tomcat/tomcat-7/v7.0.42/bin/apache-tomcat-7.0.42.tar.gz)

16.- se descomprime y se mueve a /home/gramola

17.- se añaden permisos de ejecucion para los scripts del directorio bin

cd /home/gramola/apache-tomcat-7.0.42/bin

chmod +x *.sh

18.- se pone el puerto 80 de escucha en /home/gramola/apache-tomcat-7.0.42/conf/server.xml

gedit /home/gramola/apache-tomcat-7.0.42/conf/server.xml

------ escribir lo siguiente ------

Connector port="80" protocol="HTTP/1.1"

----

19.- se añaden un par de líneas al fichero /home/gramola/.bashrc para poner dos variables de entorno:

gedit /home/gramola/.bashrc

------ escribir lo siguiente -----

export JAVA_HOME=/usr/lib/jvm/java-6-openjdk-i386

export CATALINA_HOME=/home/gramola/apache-tomcat-7.0.42

-------

20.- se reinicia dicho fichero para pillar los nuevos valores

. ~/.bashrc

21.- se descomprime el fichero gramola_web.zip en /home/gramola/apache-tomcat-7.0.42/webapps

22.- se cambia el index.html de /home/gramola/apache-tomcat-7.0.42/webapps/ROOT para que rediriga a la gramola, es decir se copia el fichero index.html a ese directorio

23.- se ejecuta el tomcat7 como root para que pueda usar el puerto 80, esto es peligroso pero se supone que se está en un entorno controlado:

sudo $CATALINA_HOME/bin/startup.sh

24.- poner los dns por defecto. Para más detalles ver: https://help.ubuntu.com/community/BIND9ServerHowto

sudo gedit /etc/bind/named.conf.options

-------- escribir lo siguiente -----

forwarders {

194.179.1.100;

194.179.1.101;

};

--------

25.- activar la zona gramola

sudo gedit /etc/bind/named.conf.local

------- escribir lo siguiente -----

zone "gramola.com" {

type master;

file "/etc/bind/db.gramola.com";

};

--------

26.- poner la ip de gramola: se copia el fichero db.gramola.com a /etc/bind/

27.- Se cambia la ip del interfaz de red a la IP de la gramola y que no la coja por DHCP (dir 192.168.1.2, mask 255.255.255.0, gw 192.168.1.1)

28.- Se crear una red WiFi en el router con SSID gramola y sin clave. Además Se cambia el router para que use como DNS el servidor de la gramola (192.168.1.2)

29.- se cambia /etc/hosts para añadir la maquina gramola con la IP de la LAN

----- escribir lo siguiente ----

127.0.0.1 www.gramola.com

-------

Esto parece que hay que hacerlo cada vez que se reinicia con el pendrive, seguramente porque está en la parte del live cd



30.- Se reinicia el tomcat:

sudo $CATALINA_HOME/bin/shutdown.sh

sudo $CATALINA_HOME/bin/startup.sh

31.- Se dan permisos de ejecución a dos scripts de /home/gramola/gramola

chmod +x gram_web_v7.sh

chmod +x siguiente.sh

32.- Se arranca la gramola

cd /home/gramola/gramola

./gram_web_v7.sh


Si todo ha ido bien...

El resultado debe ser que un usuario con un móvil u otro dispositivo se pueda conectar a la red WiFi gramola. A continuación el usuario debe ir a la web www.gramola.com, como el router le ha dado como DNS el servidor gramola, sabe traducir la IP a 192.168.1.2 e ir la la aplicación web del Tomcat. Le sale una pantalla de bienvenida que luego le redirige al servlet principal desde donde puede manejar la gramola

Es posible que haya que recompilar los servlets, para ello se abre el terminal, se va al directorio con las classes y se ejecuta:

javac -classpath .:/ruta_a/servlet-api.jar estado_gramola.java pide_cancion.java resultados_cancion.java peticiones_pendientes.java resultados_alfabeticos.java siguiente_cancion.java control_gramola.java
Finalmente indicar que para saber como funciona lo mejor es ver el script gram_web_v7.sh y el código fuente de los servlets anteriores

La licencia del código fuente (servlets (estado_gramola.java pide_cancion.java resultados_cancion.java peticiones_pendientes.java resultados_alfabeticos.java siguiente_cancion.java control_gramola.java) y gram_web_v7.sh) de esta gramola implica que se permite distribuirla y modificarla pero no comercializarla

El software anterior es experimental así que no se hace responsable de posibles daños que pueda causar