{"id":923,"date":"2021-10-15T21:32:12","date_gmt":"2021-10-15T21:32:12","guid":{"rendered":"https:\/\/asgardius.company\/?p=923"},"modified":"2021-10-15T21:32:12","modified_gmt":"2021-10-15T21:32:12","slug":"instalando-airsonic-advanced-en-raspberry-pi","status":"publish","type":"post","link":"https:\/\/asgardius.company\/?p=923","title":{"rendered":"Instalando Airsonic-Advanced En Raspberry Pi"},"content":{"rendered":"\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/asgardius.company\/wp-content\/uploads\/2021\/10\/SVoO1IliurNrU0tCuQKXlcE81pvbv9-NlIBfvlYcw-Y.jpg\" alt=\"\" class=\"wp-image-924\"\/><figcaption>Logo de Airsonic<\/figcaption><\/figure>\n\n\n\n<p>Airsonic-Advanced es el sucesor de Airsonic, un software de servidor multimedia enfocado en la m\u00fasica. Una de sus principales caracter\u00edsticas es la posibilidad de reproducir m\u00fasica en el hardware de audio que tenga integrado nuestro servidor, por lo que si lo montamos en una Raspberry Pi podremos conectar esta a un amplificador de audio para escuchar nuestra m\u00fasica estando en casa. Para hacerlo funcionar en una Raspberry Pi o cualquier servidor basado en Debian (o Ubuntu) necesitamos instalar Java 11 o superior, lo cual haremos de la siguiente manera en Ubuntu 20.04, Debian 10 y posteriores<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt install default-jre<\/code><\/pre>\n\n\n\n<p>Si vamos a utilizar la reproducci\u00f3n local necesitamos instalar ALSA<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt install alsa-utils<\/code><\/pre>\n\n\n\n<p>Abrimos el mezclador de audio<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alsamixer<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/asgardius.company\/wp-content\/uploads\/2021\/10\/Captura-de-pantalla_2021-10-15_13-16-33.png\" alt=\"\" class=\"wp-image-926\"\/><\/figure>\n\n\n\n<p>Ajustamos los niveles de volumen y probamos la salida<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>speaker-test -c2 -twav -l7<\/code><\/pre>\n\n\n\n<p>Deber\u00edamos escuchar un sonido de prueba<\/p>\n\n\n\n<p>Creamos el directorio de trabajo de Arisonic-Advanced reemplazando $USER y $GROUP por el nombre de usuario y grupo de nuestra preferencia (el cual debe estar dentro del grupo audio para poder utilizar la reproducci\u00f3n local)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo mkdir \/var\/airsonic\/\nsudo chown -R $USER:$GROUP \/var\/airsonic\/<\/code><\/pre>\n\n\n\n<p>Buscamos la \u00faltima versi\u00f3n disponible en <a href=\"https:\/\/github.com\/airsonic-advanced\/airsonic-advanced\/releases\">el siguiente enlace<\/a> (recomiendo usar la versi\u00f3n Edge en lugar de la estable) y descargamos el ejecutable .war reemplazando $AIRSONIC_EXECUTABLE por la URL del ejecutable<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo wget -O \/var\/airsonic\/airsonic.war $AIRSONIC_EXECUTABLE<\/code><\/pre>\n\n\n\n<p>Creamos el servicio para Systemd<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo nano \/etc\/systemd\/system\/airsonic.service<\/code><\/pre>\n\n\n\n<p>Colocamos lo siguiente reemplazando $USER y $GROUP por el usuario y grupo asignados<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;Unit]\nDescription=Airsonic Media Server\nAfter=remote-fs.target network.target\nAssertPathExists=\/var\/airsonic\n\n&#91;Service]\nType=simple\nEnvironment=\"JAVA_JAR=\/var\/airsonic\/airsonic.war\"\nEnvironment=\"JAVA_OPTS=-Xmx700m\"\nEnvironment=\"AIRSONIC_HOME=\/var\/airsonic\"\nEnvironment=\"PORT=8008\"\nEnvironment=\"CONTEXT_PATH=\/airsonic\"\nEnvironment=\"JAVA_ARGS=\"\nEnvironmentFile=-\/etc\/sysconfig\/airsonic\nExecStart=\/usr\/bin\/java \\\n          $JAVA_OPTS \\\n          -Dairsonic.home=${AIRSONIC_HOME} \\\n          -Dserver.servlet.contextPath=${CONTEXT_PATH} \\\n          -Dserver.port=${PORT} \\\n          -jar ${JAVA_JAR} $JAVA_ARGS\nUser=$USER\nGroup=$GROUP\n\n# See https:\/\/www.freedesktop.org\/software\/systemd\/man\/systemd.exec.html\n# for details\nDevicePolicy=closed\nDeviceAllow=char-alsa rw\nNoNewPrivileges=yes\nPrivateTmp=yes\nPrivateUsers=yes\nProtectControlGroups=yes\nProtectKernelModules=yes\nProtectKernelTunables=yes\nRestrictAddressFamilies=AF_UNIX AF_INET AF_INET6\nRestrictNamespaces=yes\nRestrictRealtime=yes\nSystemCallFilter=~@clock @debug @module @mount @obsolete @privileged @reboot @setuid @swap\nReadWritePaths=\/var\/airsonic\n\n# You can uncomment the following line if you're not using the jukebox\n# This will prevent airsonic from accessing any real (physical) devices\n#PrivateDevices=yes\n\n# You can change the following line to `strict` instead of `full`\n# if you don't want airsonic to be able to\n# write anything on your filesystem outside of AIRSONIC_HOME.\nProtectSystem=full\n\n# You can uncomment the following line if you don't have any media\n# in \/home\/\u2026. This will prevent airsonic from ever reading\/writing anything there.\n#ProtectHome=true\n\n# You can uncomment the following line if you're not using the OpenJDK.\n# This will prevent processes from having a memory zone that is both writeable\n# and executeable, making hacker's lifes a bit harder.\n#MemoryDenyWriteExecute=yes\n\n\n&#91;Install]\nWantedBy=multi-user.target\n\n<\/code><\/pre>\n\n\n\n<p>Instalamos ffmpeg para que la transcodificaci\u00f3n funcione<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt install ffmpeg\nsudo mkdir \/var\/airsonic\/transcode\ncd \/var\/airsonic\/transcode\/\nsudo ln -s \/usr\/bin\/ffmpeg\nsudo chown -Rh $USER:$GROUP ffmpeg<\/code><\/pre>\n\n\n\n<p>Configuramos nuestro servidor web existente en caso de necesitar cifrado SSL<\/p>\n\n\n\n<p>En caso de usar Apache necesitamos habilitar los siguientes m\u00f3dulos<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo a2enmod proxy\nsudo a2enmod proxy_http\nsudo a2enmod ssl\nsudo a2enmod headers<\/code><\/pre>\n\n\n\n<p> Nuestro archivo de configuraci\u00f3n ser\u00eda similar a este<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;IfModule mod_ssl.c&gt;\n&lt;VirtualHost *:443&gt;\nDocumentRoot \/var\/www\/html\nServerName frank.asgardius.company\n&lt;Directory \/var\/www\/html&gt;\nOptions -Indexes +FollowSymLinks\nAllowOverride All\n&lt;\/Directory&gt;\n\n\nProxyPass         \/airsonic http:\/\/127.0.0.1:8008\/airsonic\nProxyPassReverse  \/airsonic http:\/\/127.0.0.1:8008\/airsonic\nRequestHeader     set       X-Forwarded-Proto \"https\"\n\nSSLCertificateFile \/etc\/letsencrypt\/live\/frank.asgardius.company\/fullchain.pem\nSSLCertificateKeyFile \/etc\/letsencrypt\/live\/frank.asgardius.company\/privkey.pem\nInclude \/etc\/letsencrypt\/options-ssl-apache.conf\n&lt;\/VirtualHost&gt;\n&lt;\/IfModule&gt;<\/code><\/pre>\n\n\n\n<p>En caso de usar NGINX ser\u00eda similar a este otro<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>server {\n    server_name frank.asgardius.company;\n    root \/var\/www\/html;\n\n    index index.html index.htm;\n\n    location \/ {\n        try_files $uri $uri\/ =404;\n    }\n\n    location \/airsonic {\n        proxy_set_header X-Real-IP         $remote_addr;\n        proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto https;\n        proxy_set_header X-Forwarded-Host  $http_host;\n        proxy_set_header Host              $http_host;\n        proxy_max_temp_file_size           0;\n        proxy_pass                         http:\/\/127.0.0.1:8008;\n        proxy_redirect                     http:\/\/ https:\/\/;\n    }\n\n    location ~ \/\\.ht {\n        deny all;\n    }\n\n\n    listen 443 ssl; # managed by Certbot\n    ssl_certificate \/etc\/letsencrypt\/live\/frank.asgardius.company\/fullchain.pem; # managed by Certbot\n    ssl_certificate_key \/etc\/letsencrypt\/live\/frank.asgardius.company\/privkey.pem; # managed by Certbot\n    include \/etc\/letsencrypt\/options-ssl-nginx.conf; # managed by Certbot\n    ssl_dhparam \/etc\/letsencrypt\/ssl-dhparams.pem; # managed by Certbot\n\n}\nserver {\n    if ($host = frank.asgardius.company) {\n        return 301 https:\/\/$host$request_uri;\n    } # managed by Certbot\n\n\n    listen 80;\n    server_name frank.asgardius.company;\n    return 404; # managed by Certbot\n\n\n}\n<\/code><\/pre>\n\n\n\n<p>Iniciamos Airsonic-Advanced<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl daemon-reload\nsudo systemctl enable --now airsonic<\/code><\/pre>\n\n\n\n<p>Despu\u00e9s de un par de minutos podremos acceder a nuestra instancia de Airsonic-Advanced desde el navegador accediendo a https:\/\/domnio.example.com\/airsonic. e iniciamos sesi\u00f3n con el nombre de usuario admin y contrase\u00f1a admin (la p\u00e1gina de inicio de sesi\u00f3n nos lo indica)<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/asgardius.company\/wp-content\/uploads\/2021\/10\/Captura-de-pantalla_2021-10-15_14-18-25-1024x556.png\" alt=\"\" class=\"wp-image-931\"\/><\/figure>\n\n\n\n<p>Nos vamos a los ajustes en la secci\u00f3n de usuarios. Seleccionamos el usuario inicial y agregamos credenciales nuevas<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/asgardius.company\/wp-content\/uploads\/2021\/10\/Captura-de-pantalla_2021-10-15_14-19-55-1024x556.png\" alt=\"\" class=\"wp-image-932\"\/><\/figure>\n\n\n\n<p>Nos vamos a secci\u00f3n Credenciales, marcamos la que tiene el ID 0 y la eliminamos. Nos vamos a la secci\u00f3n de carpetas multimedia y agregamos carpetas con m\u00fasica, las escaneamos y le damos acceso a nuestro usuario desde la secci\u00f3n usuarios. Actualmente soporta los formatos mp3, ogg, flac y aac. El codec opus no est\u00e1 soportado<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/asgardius.company\/wp-content\/uploads\/2021\/10\/Captura-de-pantalla_2021-10-15_14-25-09-1024x556.png\" alt=\"\" class=\"wp-image-934\"\/><\/figure>\n\n\n\n<p>Recomiendo crear una cuenta con privilegios limitados para el uso diario. Es compatible con la mayor\u00eda de clientes de Subsonic, yo recomiendo DSub, el cual se puede descargar desde <a href=\"https:\/\/f-droid.org\/es\/packages\/github.daneren2005.dsub\/\">F-Droid<\/a> o desde <a href=\"https:\/\/github.com\/daneren2005\/Subsonic\">su repositorio en Github <\/a><\/p>\n\n\n\n<p>Referencias<\/p>\n\n\n\n<p><a href=\"https:\/\/airsonic.github.io\/docs\/\">https:\/\/airsonic.github.io\/docs\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Airsonic-Advanced es el sucesor de Airsonic, un software de servidor multimedia enfocado en la m\u00fasica. Una de sus principales caracter\u00edsticas es la posibilidad de reproducir m\u00fasica en el hardware de audio que tenga integrado nuestro servidor, por lo que si lo montamos en una Raspberry Pi podremos conectar esta a un amplificador de audio para&hellip; <a class=\"more-link\" href=\"https:\/\/asgardius.company\/?p=923\">Seguir leyendo <span class=\"screen-reader-text\">Instalando Airsonic-Advanced En Raspberry Pi<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-923","post","type-post","status-publish","format-standard","hentry","category-uncategorized","entry"],"_links":{"self":[{"href":"https:\/\/asgardius.company\/index.php?rest_route=\/wp\/v2\/posts\/923","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/asgardius.company\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/asgardius.company\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/asgardius.company\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/asgardius.company\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=923"}],"version-history":[{"count":0,"href":"https:\/\/asgardius.company\/index.php?rest_route=\/wp\/v2\/posts\/923\/revisions"}],"wp:attachment":[{"href":"https:\/\/asgardius.company\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=923"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/asgardius.company\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=923"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/asgardius.company\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=923"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}