Page 1 sur 1

Navidrome - Le Spotify auto-hébergé

Publié : 03 mai 2024 16:27
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'

Re: Navidrome - Le Spotify auto-hébergé

Publié : 03 mai 2024 16:59
par Vigne_à_sang
Hé bé bravo et merci !

Re: Navidrome - Le Spotify auto-hébergé

Publié : 03 mai 2024 17:17
par jprenaud78
Top Joris Merci beaucoup

Re: Navidrome - Le Spotify auto-hébergé

Publié : 03 mai 2024 18:34
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.

Re: Navidrome - Le Spotify auto-hébergé

Publié : 03 mai 2024 19:38
par fredgrnd
Oh ! Je vais essayer ca ! Merci

Re: Navidrome - Le Spotify auto-hébergé

Publié : 03 mai 2024 23:04
par magicguy
Merci pour ce partage !

Re: Navidrome - Le Spotify auto-hébergé

Publié : 04 mai 2024 15:19
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...

Re: Navidrome - Le Spotify auto-hébergé

Publié : 06 mai 2024 18:05
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