Subsonic es un servidor multimedia opensource, escrito en Java que corre en todas las plataformas. Soporta un buen número de formatos multimedia como OGG, MP3, WMA, FLAC … y dispone de reproductores Flash y HTML5.
De manera opcional tiene una suscripción Premium por $1 al mes para aquellos que están interesados en las características extendidas (reproducción en smartpohnes, sin anuncios, soporte para Chromecast y Sonos, etc).
Para su configuración las siguientes partes están cubiertas en esta guía:
- Creación de la zona y su configuración.
- Subsonic en su versión “standalone” y su inicio.
- Configuración del servidor web el cuál hace de proxy para las conexiones hacia la dirección IP internal.
Preparación de la zona
Los siguientes pasos deben ejectuarse en la GZ (Zone Global).
Estructura de directorios
Ya que los ficheros multimedia puede que necesiten ser compartidos entre varias zonas (NAS, subsonic, …) he decidido ponerlo bajo el dataset ’exported':
[root@3c-4a-92-79-bf-d6 ~]# zfs create -p zones/exported/media
[root@3c-4a-92-79-bf-d6 ~]# zfs list -r zones/exported
NAME USED AVAIL REFER MOUNTPOINT
zones/exported 115K 854G 57.5K /zones/exported
zones/exported/media 115K 854G 57.5K /zones/exported/media
Creación de la zona
Más abajo se puede ver el código JSON de la zona, debes ajustar las propiedades a tus necesidades, pero ten en cuenta lo siguiente:
-
brand se refiere al tipo de virtualización usado, en este caso es del tipo “OS Zone”.
-
image_uuid es la UUID de la imagen, puedes echar un vistazo a images. En este caso es base-64-lts.
-
quota hace referencia a la cantidad de espacio disponible en el punto de montaje “/” de la zona.
-
resolvers, nics son para la configuración de la red. Más información aquí.
Una parte muy importante en nuestro caso es la sección filesystems, donde los datasets creados en el punto anterior son usados. Para más información puedes mirar aquí.
{
"brand": "joyent",
"image_uuid": "b67492c2-055c-11e5-85d8-8b039ac981ec",
"alias": "subsonic",
"hostname": "subsonic.mydomain.com",
"max_physical_memory": 1024,
"max_swap": 1024,
"quota": 20,
"resolvers": ["192.168.1.1", "8.8.8.8"],
"nics": [
{
"nic_tag": "internal",
"ip": "192.168.1.100",
"netmask": "255.255.255.0",
"gateway": "192.168.1.1"
}
],
"filesystems": [
{
"source": "/zones/exported/media",
"target": "/opt/media",
"type": "lofs"
}
]
}
Y para crear la zona:
[root@3c-4a-92-79-bf-d6 /opt/custom/etc]# vmadm create -f subsonic.json
Successfully created VM 014e59d6-970f-4827-8510-fcfcbd15cba6
Instalación de Subsonic
Descargando Subsonic Standalone
Dirígete a: http://www.subsonic.org/pages/download.jsp para descargar la última versión. En el momento en el que se escribió este artículo la última versión era Subsonic 5.3.
[root@3c-4a-92-79-bf-d6 /opt/custom/etc]# zlogin 014e59d6-970f-4827-8510-fcfcbd15cba6
[Connected to zone '014e59d6-970f-4827-8510-fcfcbd15cba6' pts/3]
Last login: Wed Jan 27 11:54:53 on pts/3
__ . .
_| |_ | .-. . . .-. :--. |-
|_ _| ;| || |(.-' | | |
|__| `--' `-' `;-| `-' ' ' `-'
/ ; Instance (base-64-lts 14.4.2)
`-' https://docs.joyent.com/images/smartos/base
[root@subsonic ~]# wget http://subsonic.org/download/subsonic-5.3-standalone.tar.gz -O /tmp/subsonic-5.3-standalone.tar.gz
[...]
2016-01-27 12:15:52 (970 KB/s) - '/tmp/subsonic-5.3-standalone.tar.gz' saved [43714286/43714286]
Instalación
Primero crea el usuario y el grupo que se usará para la ejecución de Subsonic:
[root@subsonic ~]# groupadd -g 1001 subsonic
[root@subsoni2 ~]# useradd -u 1001 -g subsonic -d /var/subsonic -m -s /bin/sh subsonic
144 blocks
Actualiza los paquetes en la zona e instala los programas para transcoding.
root@subsonic ~]# pkgin update && pkgin -y fug
processing remote summary (http://pkgsrc.joyent.com/packages/SmartOS/2014Q4/x86_64/All)...
[...]
pkg_install warnings: 0, errors: 0
reading local summary...
processing local summary...
updating database: 100%
[root@subsonic ~]# pkgin -y install flac ffmpeg2 lame
calculating dependencies... done.
nothing to upgrade.
25 packages to be installed (50M to download, 179M to install):
perl-5.20.1 libxcb-1.11 libXdmcp-1.1.1 libXau-1.0.8 expat-2.1.0 png-1.6.16 glib2-2.42.1 harfbuzz-0.9.36 fribidi-0.19.6 freetype2-2.5.4 fontconfig-2.11.1nb1 enca-1.15 libX11-1.6.2nb1 libogg-1.3.2 xvidcore-1.3.3 x264-devel-20141023 opencore-amr-0.1.3 libvpx-1.3.0nb3 libvorbis-1.3.4 libvdpau-0.5 libtheora-1.1.1nb2 libass-0.11.2 lame-3.99.5nb1 flac-1.3.1 ffmpeg2-2.5.4
[...]
pkg_install warnings: 0, errors: 0
reading local summary...
processing local summary...
marking flac-1.3.1 as non auto-removable
marking ffmpeg2-2.5.4 as non auto-removable
marking lame-3.99.5nb1 as non auto-removable
Es muy importante que hagas un enlace simbólico de los programas de transcoding en el directorio de Subsonic llamado ’transcode’, ya que la versión standalone no los incluye.
subsonic@subsonic:~$ mkdir /var/subsonic/transcode
subsonic@subsonic:~$ ln -s /opt/local/bin/ffmpeg /var/subsonic/transcode/ffmpeg
subsonic@subsonic:~$ ln -s /opt/local/bin/lame /var/subsonic/transcode/lame
subsonic@subsonic:~$ ln -s /opt/local/bin/flac /var/subsonic/transcode/flac
subsonic@subsonic:~$ ls -l /var/subsonic/transcode/
total 2
lrwxrwxrwx 1 subsonic subsonic 21 Jan 28 00:09 ffmpeg -> /opt/local/bin/ffmpeg
lrwxrwxrwx 1 subsonic subsonic 19 Jan 28 00:09 flac -> /opt/local/bin/flac
lrwxrwxrwx 1 subsonic subsonic 19 Jan 28 00:09 lame -> /opt/local/bin/lame
Obtiene el Java JRE para Solaris x64 de el sitio web de Oracle y extráelo en /opt:
NOTA: Puede que prefieras usar openjdk pero yo he tenido problemas, ese es el motivo por el cual preferí usar el JRE de Oracle.
[root@subsonic /tmp]# wget --no-check-certificate --no-cookies \
--header "Cookie: oraclelicense=accept-securebackup-cookie" \
http://download.oracle.com/otn-pub/java/jdk/8u71-b15/jre-8u71-solaris-x64.tar.gz \
-O /tmp/jre-8u71-solaris-x64.tar.gz
2016-01-27 12:45:34 (1.00 MB/s) - '/tmp/jre-8u71-solaris-x64.tar.gz' saved [52076954/52076954]
[root@subsonic ~]# mkdir -p /opt/java && tar xzf /tmp/jre-8u71-solaris-x64.tar.gz -C /opt/java
[root@subsonic ~]# /opt/java/jre1.8.0_71/bin/java -version
java version "1.8.0_71"
Java(TM) SE Runtime Environment (build 1.8.0_71-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.71-b15, mixed mode)
Ahora se extrae Subsonic:
[root@subsonic ~]# su - subsonic
__ . .
_| |_ | .-. . . .-. :--. |-
|_ _| ;| || |(.-' | | |
|__| `--' `-' `;-| `-' ' ' `-'
/ ; Instance (base-64-lts 14.4.2)
`-' https://docs.joyent.com/images/smartos/base
subsonic@subsonic:~$ cd /var/subsonic
subsonic@subsonic:/opt/subsonic$ tar -xzf /tmp/subsonic\-5.3\-standalone.tar.gz
subsonic@subsonic:/opt/subsonic$ rm Getting\ Started.html LICENSE.TXT README.TXT subsonic.bat subsonic.sh
Inicio por medio de SMF
Puedes descargar el manifest file, el script de inicio y el fichero de configuración.
subsonic@subsonic:~$ wget https://raw.githubusercontent.com/tuxillo/tools/master/unix/smartos/subsonic.xml
[...]
subsonic@subsonic:~$ wget https://raw.githubusercontent.com/tuxillo/tools/master/unix/smartos/subsonic
[...]
subsonic@subsonic:~$ wget https://raw.githubusercontent.com/tuxillo/tools/master/unix/smartos/subsonic.conf
Edita /var/subsonic/subsonic.conf según tus necesidades. Al menos un cambio es indispensable y es el JAVA_HOME que debe apuntar a la ruta correcta pero sin el “bin/” al final.
JAVA_HOME=/opt/java/jre1.8.0_71
[...]
SUBSONIC_DEFAULT_MUSIC_FOLDER=/opt/media/music
Como root, registra el servicio. Ahora deberia iniciar automaticamente.
[root@subsonic ~]# svccfg validate /var/subsonic/subsonic.xml
[root@subsonic ~]# svccfg import /var/subsonic/subsonic.xml
[root@subsonic ~]# svcs subsonic
STATE STIME FMRI
online 0:04:05 svc:/application/subsonic:default
Configuración de Apache
Hay suficientes tutoriales y otros documentos acerca de la configuración de Apache en Internet así que nos vamos a centrar en lo que nos atañe. En mi caso particular yo uso Subsonic bajo mi dominio, en vez de usar un subdominio, así que para hay que cambiar un parámetro en el fichero de configuración.
SUBSONIC_CONTEXT_PATH=/subsonic
Y ahora simplemente el módulo mod_proxy de Apache hará el resto:
#
# Subsonic specific setup
#
ProxyRequests off
ProxyPreserveHost Off
ProxyPass /subsonic http://192.168.1.100:4040/subsonic ttl=300 retry=300
ProxyPassReverse /subsonic http://192.168.1.100:4040/subsonic
Si tienes sugerencias, preguntas o lo que sea no dudes en dejar un comentario.