¿Recordáis aquel ordenador que tengo debajo del sofá con el MLDonkey? Pues he decidido exprimirlo un poco más: le he instalado el Sockso. Este programita no es otra cosa que un servidor que almacena y organiza tus emepetreses. No tiene GUI. Para acceder a la colección de música solo necesitas acceder al servidor por medio de un navegador web por lo que puede ser accesible desde cualquier ordenador que tenga Internet.
Al lío.
Instalación de MySQL y Java
El propio programa trae una BBDD embebida pero parece que cuando maneja colecciones grandes de música se ralentiza bastante por lo que me he decantado por usar MySQL:
root@elburro:~# aptitude install mysql-server sun-java6-bin sun-java6-fonts sun-java6-jre
Durante la instalación te pedirá la contraseña del usuario root de MySQL.
Ahora nos conectamos al MySQL para crear la BBDD. No es necesario crear ninguna elemento de la BBDD, el propio programa los creará la primera vez que arranca::
root@elburro:~# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.0.51a-3ubuntu5.4 (Ubuntu)Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.
mysql> create database socksodb;
Query OK, 1 row affected (0.00 sec)mysql>
Instalación del Sockso
root@elburro:~# wget http://sockso.pu-gh.com/downloads/sockso-latest.zip
root@elburro:~# unzip sockso-latest.zip
root@elburro:~# cp -r sockso-1.1.8/ /opt/sockso
root@elburro:~# mkdir /var/sockso
root@elburro:~# chmod -R 0755 /var/sockso
Con estos comandos lo que hemos hecho es: bajarnos la última versión, descomprimir el zip, copiarlo a “/opt/sockso”, crear el directorio “/var/sockso” y darle premisos de ejecución.
Al ser nuestra instalación con MySQL necesitamos descargar e instalar unas librerías adicionales:
root@elburro:~# wget http://sockso.pu-gh.com/downloads/sockso-optionals.zip
root@elburro:~# unzip sockso-optionals.zip -d /opt/sockso/lib-opt
Ahora nos vamos a editar el script de arranque para acondicionarlo a nuestro entorno:
root@elburro:~# cd /opt/sockso/scripts/init.d/
root@elburro:/opt/sockso/scripts/init.d# cp -p sockso sockso.pl
root@elburro:/opt/sockso/scripts/init.d# vi sockso.pl
Basicamente, hay que editar las siguientes líneas para que queden así (cambiando micontraseña por la contraseña que pusiste en el MySQL):
use constant SOCKSO_DIR => “/opt/sockso/”;
system( ’sh linux.sh –nogui –datadir /var/sockso –dbtype=mysql –dbhost=localhost –dbuser=root –dbpass=micontraseña –dbname=socksodb > /dev/null 2>&1 &’ );
Pego el script completo para que quede más claro:
#!/usr/bin/perl
###########################################################
###########################################################
#
# Edit this constant to point to your Sockso directory
#
use constant SOCKSO_DIR => "/opt/sockso/";
#
###########################################################
###########################################################
use strict;
my $cmd = shift();
if ( $cmd eq "start" ) { start(); }
elsif ( $cmd eq "stop" ) { stop(); }
elsif ( $cmd eq "restart" ) { restart(); }
else { usage(); }
sub start {
chdir( SOCKSO_DIR );
system( 'sh linux.sh --nogui --datadir /var/sockso --dbtype=mysql --dbhost=localhost --dbuser=root --dbpass=micontraseña --dbname=socksodb > /dev/null 2>&1 &' );
}
sub stop {
my $pid = `ps x | grep sockso.jar | grep -v grep`;
$pid =~ s/^\s*(\d+) .*/$1/;
if ( $pid ) {
`kill -9 $pid`;
}
}
sub restart {
stop();
sleep( 2 );
start();
}
sub usage {
print <<EOF;
Usage: sockso (start|stop|restart)
EOF
}
Pues ya está todo lo básico. Vamos a probar si funciona:
root@elburro:~# cd /opt/sockso/scripts/init.d
root@elburro:/opt/sockso/scripts/init.d# ./sockso.pl start
Si todo ha ido bien debemos poder acceder desde el navegador al puerto 4444 de nuestra máquina:
http://IP:4444
Y veremos el home del Sockso:
¡A disfrutar! :)
Añadiendo repositorios de música
Para decirle al Sockso donde está nuestra música tenemos que hacerlo desde la consola. Primero nos aseguramos de que está parado:
root@elburro:~# cd /opt/sockso/scripts/init.d/
root@elburro:/opt/sockso/scripts/init.d# ./sockso.pl stop
Y ahora arrancamos el Sockso “manualmente” para acceder a la consola (ojo a la contraseña):
root@elburro:/opt/sockso/scripts/init.d# cd /opt/sockso/
root@elburro:/opt/sockso# sh linux.sh –nogui –datadir /var/sockso –dbtype=mysql –dbhost=localhost –dbuser=root –dbpass=micontraseña –dbname=socksodb
La línea de comandos del Sockso es muy sencilla (teclea help para ver los comandos). Para añadir un directorio en el que estén los MP3 escribimos:
#SoCkSo#> coladd /directorio/de/mis/emepetreses
Directory added!
#SoCkSo#>
Si accedemos ahora al Sockso deberíamos ver nuestra colección de MP3. Ya solo tenemos que salir y arrancar el Sockso de forma normal.
Arrancar / parar Sockso con la máquina
He creado el siguiente script para controlar Sockso como un servicio:
#!/bin/sh # ### BEGIN INIT INFO # Provides: Sockso # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Servidor de musica Sockso. # Description: Servidor de musica Sockso. ### END INIT INFO perl /opt/sockso/scripts/init.d/sockso.pl $1 exit 0
Para instalarlo sólo hay q copiarlo al “/etc/init.d” y añadirlo como servicio:
root@elburro:~# cd /etc/init.d
root@elburro:/etc/init.d# vi sockso
(Pegamos el contenido del script y salimos guardando)
root@elburro:/etc/init.d# update-rc.d sockso defaults
Adding system startup for /etc/init.d/sockso …
/etc/rc0.d/K20sockso -> ../init.d/sockso
/etc/rc1.d/K20sockso -> ../init.d/sockso
/etc/rc6.d/K20sockso -> ../init.d/sockso
/etc/rc2.d/S20sockso -> ../init.d/sockso
/etc/rc3.d/S20sockso -> ../init.d/sockso
/etc/rc4.d/S20sockso -> ../init.d/sockso
/etc/rc5.d/S20sockso -> ../init.d/sockso
root@elburro:/etc/init.d#
Pendiente
Si bien el programa está genial, tiene un pero bastante gordo que si no consigo solucionar lo hará inservible: todos los MP3 que tengan algún carácter raro (acentos, ñ, …) no se almacenan en la BBDD. Esto aplica tanto al nombre del archivo como a los MP3Tag.
Leyendo el foro he encontrado un alemán que solucionó el problema borrando la línea:
update( ” set names utf8 ” );
Del fichero MySQLDatabase.java y recompilando. Después de mucho googlear he conseguido recompilar pero no me funciona la aplicación… A ver si engaño a alguno de esos locos programadores para que me eche una mano…
Cualquier ayuda será bienvenida :)
Biliografía: Sockso, Samiux’s Blog.













