Navidrome - aloja tu propio servidor de streaming de música

Publicado el Miércoles, 4 de diciembre de 2024

Me encanta la música y escucho música casi todo el tiempo. Todavía colecciono CD's y cassettes y con los años he ido armando una buena colección digital. Mi fuente principal de compras digitales es Bandcamp. Cada tanto organizan un "Bandcamp Friday", día en el que levantan todas las tarifas de los artistas y todo el dinero que pagamos por la música o mercancía va directo a los músicos. Así que cuando veo música que quiero comprar, generalmente me la anoto y espero a uno de estos viernes para comprarla.

También tengo mi bandeja USB portatil para pasar CDs a la computadora. Cuando veo a una banda en vivo o compro un CD online, lo paso a digital y agrego los archivos a mi colección. Escucho música en casa en CD en un equipito de audio o digital en la computadora. También escucho mucha música en mi teléfono cuando no estoy en casa. Nada mejor que aislarse del mundo con los auriculares caminando por ahí.

En mi teléfono siempre tengo una colección variada de archivos de música. Generalmente copio la música nueva que he ido adquiriendo en tiempos recientes. Y siempre llevo algunos artistas que considero clásicos y necesarios como Bad Religion, For No One o Me First & the Gimme Gimmes. Pero a veces tengo ganas de escuchar algo más de mi colección que no llevo necesariamente conmigo.

También cuando trabajo a veces quiero escuchar música. Pero mi computadora de trabajo está libre de cualquier archivo o aplicación de uso personal. Estoy seguro que en las políticas de la empresa no habría problema con escuchar música desde un dispositivo de almacenamiento USB, pero soy fiel creyente de tener la vida profesional y la personal totalmente separadas.

Este problema y los demás que comento los terminé arreglando con Navidrome.

¿Qué es Navidrome?

Navidrome te permite escuchar tu música desde cualquier lado, la hace disponible a través de internet mediante una aplicación web o aplicaciones para Android o iOS. Es un servidor que podemos instalar en la computadora que queramos (ya sea en nuestros hogares o en un servidor remoto) y agregarle nuestra colección de archivos mp3, flac, ogg, wav y demás. En mi caso lo instalé en una Raspberry Pi 4 y anda perfecto.

Cuenta con una API compatible con Subsonic, que es otro servidor de streaming multimedia. Esto hace que podamos usarla con un montón de aplicaciones ya disponibles. Hay aplicaciones cliente para varios sistemas operativos, incluyendo Android y iOS.

Es software libre y gratuito, publicado bajo la licencia GNU GPL v3. Consume pocos recursos y puede gestionar bibliotecas de música gigantes, reproducir casi cualquier formato de audio disponible, y hace uso de la metadata en nuestra colección. Está disponible en Linux, Windows y macOS además de imágenes Docker. Una vez instalado nos provee una interfaz web a la que podemos acceder desde cualquier navegador web. Podemos buscar en nuestra colección por artista, etiquetas, discos, etcétera.

Navidrome

Se ejecuta en el puerto 4533 por defecto: localhost:4533 o si la estamos gestionando remoto desde la IP del servidor. Mi Raspberry Pi está configurada para tener una IP estática dentro de mi red local, y configuré mi router para dar acceso a este servicio desde "afuera". Así que puedo acceder a mi música desde cualquier dispositivo con acceso a internet fuera de mi casa (siempre y cuando mi conexión a internet funcione y mi Raspberry Pi esté encendida).

Ahora también puedo escuchar mi música desde una pestaña de navegador web en mi computadora de trabajo, sin instalar o agregar archivos personales.

Como comentaba más arriba, Navidrome provee una API. Para usarlo desde otra aplicación conectada a internet tenemos que agregar la URL o IP del servidor donde lo tenemos alojado, usuario y contraseña. Con eso ya carga distnto contenido dependiendo de cada aplicación. Pero tenemos disponible toda la colección, búsqueda, categorizado y demás. En mi teléfono uso Musicolet para reproducir música local. Para usar Navidrome, probé un par de aplicaciones. Creo que la primera fue Subsonic para Android, pero terminé desinstalándola. Ahora vengo usando Tempo, que anda bien de bien y tiene cosas interesantes como "Discovery" para escuchar música al azar de mi colección.

Al momento de escribir esto, la Raspberry Pi tiene un uptime de 85 días y no he tenido problemas. Está genial poder acceder a mi propio servidor de streaming de música desde cualquier parte y en cualquier momento. Cuando estuve en Uruguay este año probé de escuchar música con mi teléfono conectado al Raspberry Pi en Escocia, y funcionó perfecto.

De hecho tuve una experiencia interesante gracias a Navidrome. En camino al aeropuerto, ya de vuelta para Escocia, veníamos escuchando un CD de Kenny Rogers en la radio del auto. De repente empieza a sonar "She Believes in Me", un tema que conocía únicamente por la versión de Me First and the Gimme Gimmes. Así que salto con "¡Este tema lo conozco! Pero nunca había escuchado el original, qué lento que es..." (algo que me ha pasado muchísimas veces con Me First and the Gimme Gimmes).  Así que busqué la versión de Me First en mi teléfono, subí el volúmen y lo reproduje para mostrarle a mi padre. Le gustó la versión, le pareció rápida, pero era de esperarse 😆

Tempo con Navidrome

Por ahora gestiono la colección a mano. Tengo un dispositivo de almacenamiento exclusivo para música, y a su vez cada tanto hago backup en un disco más grande. Y copio a mano la música nueva en el disco que usa la Raspberry Pi. Esto es un problema que en algún momento pienso automatizar o al menos hacer más conveniente. Tengo idea que podría mirar rsync para manter las colecciones sincronizadas. Pero tampoco es un problema ese trabajo de gestión. Muchas veces me lleva a redescubrir música que de repente hace rato que no escuchaba.

Scrobbling a Last.fm

Otro aspecto interesante de este sistema es que se puede configurar para hacer scrobbling a Last.fm directamente (también para ListenBrainz y Maloja). Así que no depende de que el cliente donde reproduzca la música tenga soporte para Last.fm, ni tenga que andar autorizando más de una app en distintos dispositivos para usar last.fm.

Para configurar esto, tenemos que seguir este enlace en last.fm con nuestra sesión iniciada, y crear una nueva aplicación. El único dato que tenemos que ingresar es el nombre, lo demás es opcional. Al darle aceptar last.fm nos crea una cuenta de API y nos provee los detalles. Los datos que necesitamos son API key y Shared Secret.

En el servidor donde estemos alojando Navidrome, tenemos que editar el archivo /var/lib/navidrome/navidrome.toml y agregar estos dos valores de la siguiente forma:

LastFM.ApiKey = 'EL VALOR DE LA API KEY'
LastFM.Secret = 'EL VALOR DE SHARED SECRET'

Reiniciamos el servidor (e.g. sudo service navidrome restart) y vamos a la interfaz web. Desde ahí accedemos a las opciones personales (path app/#/personal, o haciendo clic en el botón de usuario en la esquina superior derecha > personal), y habilitamos Last.fm:

Navidrome - página de opciones personales

Navidrome - página de opciones personales

Al hacer clic en "Scrobble to Last.fm", se abre una pestaña de navegación nueva con la página de autorización de Last.fm. Si todo funcionó bien, Navidrome va a registrar la música que escuchemos en Last.fm. Si como yo, usan Last.fm, comparto mi perfil para seguirnos por ahí: picandocodigo.

En conclusión, Navidrome es un excelente software que nos permite tener nuestro propio servidor de streaming de música. También podríamos compartirlo con otras personas, agregando más usuarios al sistema y gestionando distintas colecciones. Pero para mi caso de uso, es perfecto y justo lo que necesito.

Un comentario en este post

Feed de comentarios

Dejar un comentario

Toasty!