Airsonic es un transmisor de medios gratuito, de código abierto y multiplataforma basado en la web, derivado de Subsonic y Libresonic, que proporciona acceso ubicuo a tu música que puedes compartir con tu familia, amigos o escuchar música mientras trabajas.
Está optimizado para una navegación eficiente a través de grandes colecciones de música (cientos de gigabytes) y también funciona muy bien como una máquina de discos local. Se ejecuta en la mayoría de las plataformas, incluidos los sistemas operativos similares a Unix, como Linux, Mac OS y Windows.
1.Instalación de Java
Requerimientos:
Debian 10 (Buster)
Conexion de Internet
Almacenamiento 20gb mínimo recomendable
CPU 1 Core
RAM 1 GB
Airsonic es una aplicación de software basada en Java, por lo que se necesita instalar Java en el servidor y requiere OpenJDK 1.8.x. En los repositorios de Buster no lo encontraremos, pero usaremos los de Stretch, solo para instalarlo.
Instalamos la versión de java recomendada para Airsonic. En este caso se usará la versión libre JDK v8, apuntando a los repos de Debian 9 (Stretch), desde nuestro sistema Debian 10 (Buster). Una vez editado el “apt”, proseguimos con la instalación:
apt update apt install openjdk-8-jdk -y java -version
Debe devolver lo siguiente:
openjdk version "1.8.0_222" OpenJDK Runtime Environment (build 1.8.0_222-8u222-b10-1~deb9u1-b10) OpenJDK 64-Bit Server VM (build 25.222-b10, mixed mode)
Volvemos a especificar los repos de Debian 10 (Buster). Una vez echo actualizamos:
apt update
2.Instalación de Airsonic
Airsonic provee diferentes paquetes de instalación, pero en este caso usaremos la instalación offline de WAR.
Creamos el usuario y directorio para Airsonic:
useradd airsonic mkdir -p /opt/airsonic
Accedemos al nuevo directorio y bajamos el paquete de instalación de Airsonic:
cd /opt/airsonic wget https://github.com/airsonic/airsonic/releases/download/v10.6.2/airsonic.war
Cambiamos el propietario del directorio «/opt/airsonic» al usuario y grupo de «airsonic»:
chown -R airsonic:airsonic /opt/airsonic
A continuación, debemos crear un servicio para Airsonic:
nano /etc/systemd/system/airsonic.service [Unit] Description=Airsonic Media Server After=remote-fs.target network.target AssertPathExists=/opt/airsonic [Service] Type=simple Environment="JAVA_JAR=/opt/airsonic/airsonic.war" Environment="JAVA_OPTS=-Xmx700m" Environment="AIRSONIC_HOME=/opt/airsonic" Environment="PORT=8080" Environment="CONTEXT_PATH=/airsonic" Environment="JAVA_ARGS=" EnvironmentFile=/etc/default/airsonic ExecStart=/usr/bin/java \ $JAVA_OPTS \ -Dairsonic.home=${AIRSONIC_HOME} \ -Dserver.context-path=${CONTEXT_PATH} \ -Dserver.port=${PORT} \ -jar ${JAVA_JAR} $JAVA_ARGS User=airsonic Group=airsonic [Install] WantedBy=multi-user.target
Recargamos el sistema y creamos una nueva configuración por defecto para Airsonic en «/etc/default»:
systemctl daemon-reload
Pasamos la siguiente configuración de Airsonic:
nano /etc/default/airsonic # Set the location of the standalone war to use JAVA_JAR=/opt/airsonic/airsonic.war # Set any java opts separated by spaces # Se define el consumo maximo de la memoria Java JAVA_OPTS=-Xmx700m # Set a different location for the airsonic home. # If this path is /opt/libresonic or even contains "libresonic", # the data from a previous libresonic can be used as is (i.e. without # renaming libresonic.properties,db/libresonic*, etc AIRSONIC_HOME=/opt/airsonic # Change the port to listen on PORT=8080 # Change the path that is listened to on CONTEXT_PATH=/airsonic # Add any java args. These are different than JAVA_OPTS in that # they are passed directly to the program. The default is empty: #JAVA_ARGS= # Note that there are several settings for spring boot, not explicitly listed # here, but can be used in either JAVA_OPTS or JAVA_ARGS. The full list # can be found here: # https://docs.spring.io/spring-boot/docs/1.4.5.RELEASE/reference/htmlsingle/#common-application-properties # For example to set debug across the board: #JAVA_ARGS=--debug # Or to change the IP address that is listened to: JAVA_ARGS=--server.address=127.0.0.1
Ahora iniciaremos el servicio de Airsonic y lo habilitaremos para que inicie con el sistema:
systemctl start airsonic systemctl enable airsonic
La instalación de Airsonic esta completada y ahora se encuentra corriendo. Podemos verificar esto con el siguiente comando:
netstat -plntu | grep 8080
3. Nginx como proxy inverso
En este tutorial desplegaremos Airsonic bajo una conexión HTTPS contra un proxy inverso en Nginx por el puerto 8080.
Instalamos Nginx:
apt install nginx -y
A continuación, generaremos los certificados SSL auto-firmados con OpenSSL o tambien puedes usar Let’s Encrypt:
openssl req -x509 -nodes -days 730 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt
Respondemos según convenga:
Generating a RSA private key ......................................................................................+++++ ..........................................................................................................+++++ writing new private key to '/etc/ssl/private/nginx-selfsigned.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:CU State or Province Name (full name) [Some-State]:HABANA Locality Name (eg, city) []:LaHabana Organization Name (eg, company) [Internet Widgits Pty Ltd]:EMPRESA Organizational Unit Name (eg, section) []:REDES Common Name (e.g. server FQDN or YOUR name) []:airsonic.empresa.midominio.cu Email Address []:[email protected]
Ambos archivos que se crearon fueron ubicados en los subdirectorios apropiados de “/etc/ssl”.
Como estamos usando OpenSSL, deberíamos también crear un grupo fuerte de Diffie-Hellman (DH), el cual es usado en la negociación Perfect Forward Secrecy (PFS) con los clientes:
openssl dhparam -out /etc/nginx/dhparam.pem 2048
Primero creamos un nuevo fragmento de configuración de Nginx en el directorio “/etc/nginx/snippets”.
Para distinguir apropiadamente el propósito de este fichero, le llamaremos “self-signed.conf”:
nano /etc/nginx/snippets/self-signed.conf
Dentro de este fichero, necesitamos establecer la directiva “ssl_certificate” a nuestro certificado y la directive “ssl_certificate_key” a la llave asociada. En nuestro caso, esto lucirá así:
ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt; ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;
Creamos el bloque de configuración de Nginx para Airsonic:
nano /etc/nginx/sites-available/airsonic.conf server { listen 80; server_name music.empresa.midominio.cu; # enforce https return 301 https://$server_name$request_uri; } server { listen 443 ssl; server_name music.empresa.midominio.cu; include snippets/self-signed.conf; location / { return 302 https://music.empresa.midominio.cu/airsonic; } location /airsonic { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; proxy_set_header X-Forwarded-Host $http_host; proxy_set_header Host $http_host; proxy_max_temp_file_size 0; proxy_pass http://127.0.0.1:8080; proxy_redirect http:// https://; } }
Creamos un enlace simbólico para habilitar el sitio:
ln -s /etc/nginx/sites-available/airsonic.conf /etc/nginx/sites-enabled/
Verificamos que la configuración no tiene errores de sintaxis:
nginx -t Si todo está bien, debe devolvernos lo siguiente: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Reiniciamos el servicio:
systemctl restart nginx systemctl enable nginx
El servidor web Nginx está funcionando ahora como proxy inverso, para el servicio de Airsonic en el puerto 8080, asegurado por la conexión por HTTPS.
4. Configuración de Airsonic
Accedemos a la URL de Airsonic:
https://music.empresa.midominio.cu/airsonic
Nos recibe con una página de autenticación:
Las credenciales por defecto son:
• user: admin
• password: admin
Una vez autenticados podremos ver el dashboard de Airsonic:
Cambiamos la contraseña por defecto para la administración:
Para ello vamos a Settings -> Users -> Select user admin
Devuelta a la consola, creamos los directorios donde se encontrarán los datos de este servicio, o sea, la música:
mkdir -p /data/music chown -R airsonic:airsonic /data/music
Ahora, sería recomendable que dicho directorio estuviera en un disco de datos y que fuese un volumen lógico que fuera redimensionable. En este tutorial omitiremos este paso y asumiremos que se creó un volumen lógico.
Ahora en el dashboard de administración de Aersonic, en «Settings»:
La carpeta «Music» se encuentra ahora habilitada y disponible para el usuario «admin».
5. Transcodificación
Los transcoders son usados por Airsonic para convertir los medios de su propio disco en uno que pueda ser consumido por varios clientes. Esto se hace no solo por compatibilidad, sino también para salvar ancho de banda cuando se lidia con tipos de archivos pesados.
Instalamos el transcoder:
apt install ffmpeg -y
Dentro del directorio del transcode, creamos un enlace simbólico con ffmpeg y establecemos los permisos correctos:
cd /opt/airsonic/transcode ln -s /usr/bin/ffmpeg chown -h airsonic:airsonic ffmpeg ls -alh
Una vez realizado lo anterior, si accedemos al dashboard de administración de Airsonic, en «Settings > Transcoding», veremos que ya se encuentra disponible esta función:
Podremos configurar algunas opciones generales, como las siguientes:
Transferimos la música por el medio que mejor usted entienda y en la web de administración, forzamos un escaneo para que Airsonic pueda detectar los datos y reproducirlos:
Los invitados que deseen consumir música lo pueden hacer con una cuenta creada previamente en el servidor. A continuación, se muestran los permisos otorgados a un nuevo usuario creado:
Nos autenticamos como un usuario invitado y Airsonic nos da la bienvenida con todos los medios disponibles para ser reproducidos:
Nota: La autenticación por LDAP resulta un trabajo en progreso para el grupo del proyecto. Actualmente, aun cuando se configura correctamente los filtros LDAP y el DN, la autenticación termina en un error del servidor. Por el momento, usuarios locales en Airsonic.
Airsonic da la posibilidad de resetear la contraseña, enviando un correo a la dirección de correo electrónico de la cuenta en cuestión. Sin embargo, cuando se tiene un servidor de correo por STARTTLS y altos niveles de protección, en cuanto a los mecanismos de cifrado, la autenticación del Airsonic con el servidor de correo falla.
Referencias Bibliográficas
1.“How to Install Airsonic Media Server on Ubuntu 18.04 LTS”. About Muhammad Arul.
2.“Documentación official de Airsonic”.
3. “Cómo instalar Airsonic Media Server en CentOS 7”.
Dejar una contestacion