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
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 .
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 . 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
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'
Code : Tout sélectionner
shawl add --name Navidrome -- "C:\navidrome\navidrome.exe" -c "C:\navidrome\navidrome.toml"
sc start Navidrome
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'