Navidrome - Le Spotify auto-hébergé

Pour toutes les questions sur l'informatique en audio
Avatar de l’utilisateur
Jwin
Je mange des Kellogg's Corn Flac
Je mange des Kellogg's Corn Flac
Messages : 1287
Inscription : 08 août 2013 12:45
Localisation : 95
Contact :

Navidrome - Le Spotify auto-hébergé

Message par Jwin »

Salut les TNiens,
J'ai pris des notes pour moi, au cas ou je devrais recommencer de zéro (déformation pro aussi :$).
Du coup autant en faire profiter la commu. J'ai remis un peu en forme, en espérant que ça serve à certains ;-/

18420

Présentation

Navidrome est une solution de streaming musical open source, via un serveur auto-hébergeable, qui permet d’accéder à sa bibliothèque musicale depuis un navigateur web, ou une app mobile.
Pour vulgariser, l’idée c’est d’avoir un Spotify homemade accessible de partout (Y).

Site Officiel : https://www.navidrome.org/
Site de démo (user : demo / password : demo) : https://demo.navidrome.org/
La documentation : https://www.navidrome.org/docs/overview/

Pré-requis

Navidrome à la particularité de pouvoir tourner sur des configurations très modestes, comme un Raspberry Pi Zero d’après le concepteur. Il peut aussi à priori fonctionner sur un NAS directement.

J’ai personnellement hébergé Navidrome sur un NUC que j’ai fixé au vesa derrière un écran.
Il s’agit d’un modèle de chez BMAX, le B4 Plus auquel j’ai adjoint un SSD interne pour stocker mes musiques, le tout sous Windows 11. Très clairement overkill pour uniquement Navidrome, mais je lui prévois d'autres applications. Le but pour moi était aussi de faire une 2eme sauvegarde de ma bibliothèque musicale, et de ne pas solliciter mon NAS lorsque je streame.

Pour la suite, si l’informatique est nébuleux pour vous, ça risque vraiment d’être difficile.
Si vous êtes sous Linux, vous aimez donc déjà vous compliquer la vie :P . Plus sérieusement, des tutos en Anglais et en Espagnol sont trouvables sur YouTube pour les versions Linux et Docker.

La suite, c’est mon expérience qui est sur Windows 11.

Installation

Installer WINGET

WINGET facilite l'installation d'application tierces sur Windows. On peut l’installer via le Microsoft Store (pas de besoin de compte Microsoft). En Français WINGET, c'est "Programme d'installation d'application" :
https://www.microsoft.com/p/app-install ... verviewtab

Page officielle Microsoft pour WINGET :
https://learn.microsoft.com/fr-fr/windo ... er/winget/


Installer SHAWL

La prochaine étape c’est d’installer SHAWL. Il permet de lancer une application en tant que service.
Lancer POWERSHELL en admin et coller cette commande :

Code : Tout sélectionner

winget install --id=mtkennerly.shawl  -e
L'installation se lance. Un message demande de valider "les conditions de contrats sources". Valider "y" pour accepter.

Installer NAVIDROME

Récupérer la dernière version de Navidrome sur le Github officiel.
Github : https://github.com/navidrome/navidrome/releases

Mettre les fichiers téléchargés dans le dossier qui servira à l'installation, par exemple C:\navidrome
Créer un fichier "navidrome.toml". C'est le fichier de paramétrage de Navidrome, éditable avec le bloc-notes par exemple.

Les différentes options modifiables : https://www.navidrome.org/docs/usage/co ... le-options

L'exemple de base à compléter donné par Navidrome :

Code : Tout sélectionner

# This is just an example! Please see available options to customize Navidrome for your needs at
# https://www.navidrome.org/docs/usage/configuration-options/#available-options

LogLevel = 'DEBUG'
ScanSchedule = '@every 24h'
TranscodingCacheSize = '150MiB'

# IMPORTANT: Use single quotes for paths in Windows
MusicFolder = 'C:\Users\JohnDoe\Music'

# Set this to the path of your ffmpeg executable
FFmpegPath = 'C:\Program Files\ffmpeg\bin\ffmpeg.exe'
Dans un invite de commande admin, taper :

Code : Tout sélectionner

shawl add --name Navidrome -- "C:\navidrome\navidrome.exe" -c "C:\navidrome\navidrome.toml"
sc start Navidrome
On vient de créer Navidrome en tant que service lancé par SHAWL. Si vous appuyez sur la touche Windows et que vous tapez "Services", vous verrez dans la liste Navidrome qui apparait.
Mettez son lancement en automatique pour qu’il démarre en même temps que votre machine.

Voici l’url d’accès par défaut de Navidrome :
http://localhost:4533/app/#/login


Accessibilité extérieure

Règles réseau

Navidrome est maintenant accessible en local. C’est bien gentil, mais va falloir réussir à le faire sortir !

- 1ere étape, mettre une IP fixe au PC.
Soit directement sur la carte réseau, soit au niveau de votre box par le DHCP (réservation) via la MAC du PC.

- Faire une exception dans le Pare-Feu Windows
Paramètres => Mise à jour et sécurité => Sécurité Windows et Ouvrir sécurité Windows
Pare-feu et protection du réseau => Autoriser une application via le pare-feu
Modifier les paramètres => Autoriser une autre application
Choisir Navidrome.exe

- Faire une règle NAT dans sa box internet
Port de l'extérieur (ce que vous voulez) => vers IP du PC => Port interne 4533
C'est ce que l'on appel de la translation de port. Choisir un port "pas évident" de l'extérieur permet de limiter les attaques.


DYNDNS

Dynamic Domain Name Service, DynDNS ou DDNS pour les intimes.
Pour la faire courte, votre box internet a une IP privée (sur votre réseau local), et une IP publique (sur Internet). Cette dernière n’est souvent pas fixe, et ce changement d’adresse fait qu’il est difficile de savoir quel IP utiliser pour accéder à sa box de l’extérieur. Le DynDNS permet de d’avoir un nom de domaine fixe qui lui va rediriger vers la bonne IP.

Pour les possesseurs de Synology :
J’avais crée lorsque j’ai eu mon 1er NAS un nom de domaine DDNS que j’utilise toujours.
https://kb.synology.com/fr-fr/DSM/tutor ... S_hostname

Sinon, un guide fait par ionos pour trouver un DDNS gratuit :
https://www.ionos.fr/digitalguide/serve ... de-dyndns/


Synology

La c'est la partie bonus.
A chaque fois que je copie de nouvelles musiques sur mon Syno, elle se synchro toute seule sur le NUC.

Allez dans le « Centre de paquets » et installez le paquet « Synology Drive ».
Dans « Panneau de configuration » puis « Utilisateurs et groupes » :
Créer un utilisateur dédié à Navidrome, puis modifier les options suivantes :
Onglet Infos :
Cocher « Ne pas autoriser l’utilisateur à changer le mot de passe du compte »
Onglet Permissions :
Droit exclusivement en lecture seule sur le répertoire ou son stocké les musiques
Onglet Application :
Sur Synology Drive, donner la permission par IP en mettant l’IP du poste ou est Navidrome

Console d’administration Synology Drive :
Onglet Généralités :
Décocher les autorisations pour l'indexation et veillez à ce que Autoriser la synchronisation et la sauvegarde des données soit coché.
Profil de synchronisation de l'utilisateur=> Modifier
Choisir Musique + Images + Autres et sélectionner l'utilisateur qui va synchro
Onglet Partage :
Tout décocher

Sur le NUC :
Synology Drive Client :
x : Télécharger les données depuis Synology Drive Server
o : Activer la synchronisation à la demande pour économiser de l'espace disque
x : Activer vérification de cohérence avancée


Intégration des API Last.fm et Spotify dans Navidrome

L’API Last.fm permet de récupérer les biographies des artistes, les chansons les plus populaires, les artistes similaires et les pochettes d’album. L’API Spotify permet d’aller chercher les images des artistes.

Le lien vers la documentation pour créer les comptes API :
https://www.navidrome.org/docs/usage/ex ... egrations/

Code : Tout sélectionner

# L’API Last.fm permet de récupérer les biographies des artistes, les chansons les plus populaires, les artistes similaires et les pochettes d’album.
LastFM.Enabled = true
LastFM.ApiKey = ApiKey récupérée
LastFM.Secret = Secret récupéré
LastFM.Language = 'fr'

# L’API Spotify permet d’aller chercher les images des artistes.
Spotify.ID = ID récupéré
Spotify.Secret = Secret récupéré

Application de lecture

https://www.navidrome.org/docs/overview/#apps

---------------------------------------------------------------------------------

Voici mon fichier navidrome.toml :

Code : Tout sélectionner

# Available options to customize Navidrome:
# https://www.navidrome.org/docs/usage/configuration-options/#available-options
# IMPORTANT: Use single quotes for paths in Windows. Use only single quotes works for all fields

#Log level. Useful for troubleshooting.
LogLevel = 'DEBUG'

# Basic parameters
DefaultLanguage = 'fr'
DefaultTheme = 'Nord'

#Configure periodic scans
ScanSchedule = '@every 24h'

# IMPORTANT: Use single quotes for paths in Windows
MusicFolder = 'xxxxxxxxxxxxxxxxxx'

# Set this to the path of your ffmpeg executable (MP3 transcoding)
FFmpegPath = 'xxxxxxxxxxxxxxxxxx'
TranscodingCacheSize = '150MiB'

#LastFM API Settings (Last.fm to retrieve artists biographies, top songs, similar artists and album covers)
LastFM.ApiKey = 'xxxxxxxxxxxxxxxxxx'
LastFM.Secret = 'xxxxxxxxxxxxxxxxxx'
LastFM.Language = 'fr' 

#Spotify API Settings (Artist images can be retrieved from Spotify)
Spotify.ID = 'xxxxxxxxxxxxxxxxxx'
Spotify.Secret = 'xxxxxxxxxxxxxxxxxx'

CIEM : Earsonics EM64 + Dunu Hulk / Earsonics EM32 + AAW Tiburon MKII 8 Braid
UIEM : Alambic Ears Mundaka + CEMA Tianwaitian / 7Hz Timeless + TRN TX / Kinera Gumiho + XINHS Monocristallin / LETSHUOER S12 PRO
Casques : Fostex TH-900 (DM-Audio custom 4.4) / Quad ERA-1 + Hart Audio Cable 4.4
DAP : FiiO M17 / Shanling M1S
PORTABLE AMP : Xduoo XD-05 BAL Burson V5
BT : Shanling UP5
TWS : Nuarl N6PRO Series 2 / Aviot ZX-1
Avatar de l’utilisateur
Vigne_à_sang
Mon chien s'appelle LossLess
Mon chien s'appelle LossLess
Messages : 3971
Inscription : 01 janv. 2022 11:05

Message par Vigne_à_sang »

Hé bé bravo et merci !
Avatar de l’utilisateur
jprenaud78
== Anim / Modo ==
Messages : 7994
Inscription : 24 déc. 2016 10:33
Contact :

Message par jprenaud78 »

Top Joris Merci beaucoup
DAP: AK 120ii + Lotoo Paw Gold, Cayin N6ii A01/E02/T01 + Sony WM1A mode Bright + Sony A15
DAC/AMP: Pionner U 05 S + Earmen Tr-amp + Auglamour Gr1 + Audioquest Cobalt
IEM: Oriolus Forsteni (PW N°5)+ Oriolus mk2 (Forza) + Onkyo E900M + AK T8IE mk2 (alo reference) + JAWS Tuned (Nicehck BlueComet) + Sony XBA n3 (Kimber) + Noble K10U (Ares II 8wirer)
CASQUE: Grado Sr2e Gpads + Hifiman He400i + Beyerdynamic T1 3rd (Forza Claire)
Par le passé: Cowon Plenue R, Fiio X7mk2, Sony A35, sony zx300, DX160, Dx220 (4s, 9, 1mk2, 8ex), Shanling M1, Meze Noir, LCD-1, Focal Elear.
MrMen
Suis-je (une) enceinte ?
Suis-je (une) enceinte ?
Messages : 230
Inscription : 13 sept. 2015 15:23

Message par MrMen »

Merci pour le tuto.

Aurais-tu ou auriez-vous une idée de la différence avec LMS ?
Je viens juste de finir la configuration avec Tailscale pour le streaming à l'extérieur de chez moi alors j'hésite à tenter encore autre chose.
Avatar de l’utilisateur
fredgrnd
== Admin Tech ==
Messages : 939
Inscription : 28 nov. 2018 17:43
Localisation : Nantes
Contact :

Message par fredgrnd »

Oh ! Je vais essayer ca ! Merci
En balade : iPhone / AirPods Pro 2 / Sony xba-n3 / Westone UM Pro 30
Nomade : Sony WM1A -> EarSonics EM32 / Craft Ears Aurum / Xelento Remote Gen 2
Casque : Denon AH-D9200 / Sony MDRZ7M2 / Grado The Hemp / Grado GS1000e
Ampli : A&K PA-10

Bandcamp / Last.fm
Avatar de l’utilisateur
magicguy
Mon chien s'appelle LossLess
Mon chien s'appelle LossLess
Messages : 3583
Inscription : 05 févr. 2012 03:10

Message par magicguy »

Merci pour ce partage !
[*]
Inventaire :
Cables -> Rhapsodio Évolution Copper / Rhapsodio Evolution Silver / Clone 1950 / PW Audio 1950 / Effect Audio Onyx / Effect Audio Code 51 / YY Pro Tucana
DAP/AMP -> Hiby R8 + SP1000-Amp / WM1A FE+ mod / AK120+Glove A1 / AK120 TITAN / MS-AK100 / Hisound Studio V Anniversary / Sansa Fuze
Intras -> Fourté Noir + Erlkonig + Ambient Acoustics Lam Am7 + AK T8ie mk2
Casques -> Sennheizer Amperior / T51p modifié
---
Partis :
DAPs -> RWAK240+, LPG Diana, Aune M1S, Sony ZX2, DX50
Intras -> K10u acrylique / K10 custom / iSine20 calble Cipher V1 et V2
Câbles -> PW Audio 1960K 4 brins / PW Audio 1960 2 brins / Effect Audio Horus 4 brins / Silver Dragon / Han Sound 8 brins 2 pins 2.5mm / AAW Capri USB-C IEM 2pin (DAC/AMP)
Casques -> Audeze Sine Cipher + 3.5 Lavricable / Denon AHD600 / T51p / Sennheizer HD25
Streamer -> Poly + Mojo

---
A vendre :
A venir…
Avatar de l’utilisateur
Jwin
Je mange des Kellogg's Corn Flac
Je mange des Kellogg's Corn Flac
Messages : 1287
Inscription : 08 août 2013 12:45
Localisation : 95
Contact :

Message par Jwin »

Content que ça puisse servir :)
Si vous avez des questions, hésitez pas.
MrMen a écrit : 03 mai 2024 18:34 Merci pour le tuto.

Aurais-tu ou auriez-vous une idée de la différence avec LMS ?
Je viens juste de finir la configuration avec Tailscale pour le streaming à l'extérieur de chez moi alors j'hésite à tenter encore autre chose.
Je n'ai jamais testé, et à vrai dire je croyais que tout ce qui était squeezebox et LMS était mort :$
Pour te rendre compte, je t'invite à regarder le site de démo, qui en montre déjà pas mal.

Quand j'ai cherché à faire un Spoti maison, je suis tombé assez rapidement sur Subsonic et ses dérivés (dont Navidrome, Airsonic, Madsonic), puis sur Ampache, Plex (ça j'utilise déjà avec mon Syno mais que pour les films/séries/animes) et Koel.
C'était pas évident de trouver un projet qui soit pas cher ou gratuit, maintenu à jour , avec un interface plutôt moderne et SURTOUT pas trop compliqué à installer...

CIEM : Earsonics EM64 + Dunu Hulk / Earsonics EM32 + AAW Tiburon MKII 8 Braid
UIEM : Alambic Ears Mundaka + CEMA Tianwaitian / 7Hz Timeless + TRN TX / Kinera Gumiho + XINHS Monocristallin / LETSHUOER S12 PRO
Casques : Fostex TH-900 (DM-Audio custom 4.4) / Quad ERA-1 + Hart Audio Cable 4.4
DAP : FiiO M17 / Shanling M1S
PORTABLE AMP : Xduoo XD-05 BAL Burson V5
BT : Shanling UP5
TWS : Nuarl N6PRO Series 2 / Aviot ZX-1
Avatar de l’utilisateur
fredgrnd
== Admin Tech ==
Messages : 939
Inscription : 28 nov. 2018 17:43
Localisation : Nantes
Contact :

Message par fredgrnd »

Bon, installé en moins de 10 minutes sur une webapp azure. Le premier truc qui me vient à l'esprit c'est la simplicité de mise en oeuvre. Je n'ai pas uploadé beaucoup d'album, mais je n'ai pas eu de pb de reconnaissance.
Je vais continuer a jouer un peu avec
En balade : iPhone / AirPods Pro 2 / Sony xba-n3 / Westone UM Pro 30
Nomade : Sony WM1A -> EarSonics EM32 / Craft Ears Aurum / Xelento Remote Gen 2
Casque : Denon AH-D9200 / Sony MDRZ7M2 / Grado The Hemp / Grado GS1000e
Ampli : A&K PA-10

Bandcamp / Last.fm
Répondre

Revenir à « L'Informatique »