
J’ai peut-être trouvé le bon lecteur audio sur le PC, j’ai nommé Feishin. Le seul souci c’est que c’est un client de serveurs comme Navidrome, Jellyfin ou compatibles avec l’API OpenSubsonic. En clair, il ne lit pas directement les fichiers audio sur votre PC, et a besoin d’un serveur audio.
Qu’à cela ne tienne, le jeu en valait la chandelle me semble-t-il lorsque j’ai vu à quoi Feishin ressemblait : beau, moderne, avec plein de fonctionnalités comme d’afficher les paroles, de s’adapter à la couleur de la pochette, d’obtenir des infos sur l’artiste, etc…
Il a donc fallu choisir et installer un serveur sur le NAS : j’ai choisi Navidrome qui a l’air d’être une référence du genre, et accéder à ma bibliothèque musicale, ce qui m’a amené à quelques changements dans mon organisation, mais l’ensemble a été plutôt facile et je suis assez content du résultat.
Voyons voir tout ça…
Navidrome

Quel serveur installer ? J’ai déjà un Nextcloud Music qui tourne sur mon hébergeur qui me permet d’écouter ma musique quand je suis à l’extérieur, et j’aurais pu faire pareil en local puisque j’ai déjà une instance Nextcloud, mais j’ai regardé un peu les alternatives et vu que Navidrome avait une bonne réputation, était une sorte de référence dans le genre, et proposait une version Docker. Et il est bien sûr Open Source. Je suis donc parti sur ce serveur.
L’installation via Dockge du container Docker s’est faite en quelques minutes, je suis toujours surpris de la facilité que Docker apporte, c’est vraiment génial. Voilà le fichier compose.yaml que j’ai utilisé. Les deux paramètres LASTFM sont optionnels, j’y reviens plus bas :
services:
navidrome:
image: deluan/navidrome:latest
user: 1000:1000 # should be owner of volumes
ports:
- 4533:4533
restart: unless-stopped
environment:
ND_DEFAULTLANGUAGE: fr
ND_SCANSCHEDULE: 0 3 * * *
ND_LOGLEVEL: info
ND_LASTFM_APIKEY: 2931xxxxxxxxxxxxxxxxxxxxxxxx38f0
ND_LASTFM_SECRET: 24e2xxxxxxxxxxxxxxxxxxxxxxxx7e3d
volumes:
- /srv/dev-disk-by-uuid-yyyyyyy-xxxx-xxxx-xxxx-yyyyyyyyyy/AppData/navidrome/data:/data
- /mnt/RpiMusic:/music:ro
networks: {}
Une fois le container lancé, Navidrome va lire le contenu de la bibliothèque musicale indiquée pour « /music », à savoir /mnt/RpiMusic dans le fichier compose, qui est un point de montage NFS, j’y reviens. Si c’est un simple dossier local, il n’y a plus qu’à y copier la musique. Une fois ceci fait, le serveur est disponible dans le navigateur :
La bibliothèque musicale
La question de la bibliothèque s’est vite posée : devais-je dupliquer sur le NAS celle présente sur le PC et que j’utilisais auparavant avec un lecteur audio classique (DeadBeef en l’occurence) ? Comme je dupliquais déjà cette bibliothèque musicale sur le Raspberry pour mon lecteur « de salon » MoOde, il y avait sans doute mieux à faire.
Et puisque j’ai désormais Ubuntu 22.04 Server LTS qui tourne sur le odroid-hc2 (voir cet article), j’ai fini par installer un serveur NFS, et ajouter ceci dans /etc/exports, pour partager le chemin d’accès à ma bibliothèque musicale sur le disque USB de mon Raspberry à toute machine sur mon réseau local :
/srv/nfs/usb/Music 192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash)
Côté NAS, je suis allé ajouter dans le fichier /etc/fstab les lignes suivantes :
###############################
# NFS MOUNT RPI MUSIC LIBRARY #
###############################
192.168.1.17:/media/Music /mnt/RpiMusic nfs rw 0 0
Pour résumer, côté Navidrome (donc sur le NAS), on a /mnt/RpiMusic de défini dans le fichier compose.yaml pour le dossier /music du container. Dans /etc/fstab du NAS, on monte ce dossier via NFS sur le dossier srv/nfs/usb/Music, qui correspond sur le Raspberry au dossier /media/Music, partagé via le serveur NFS.
Et voilà, ça fonctionne parfaitement, Navidrome s’accommode fort bien de ce montage NFS, ce qui n’était pas forcément le cas d’Ubuntu Music, d’après les quelques essais que j’avais pu faire précédemment.
Concernant mon organisation, le PC reste tout de même l’endroit où j’ajoute ma nouvelle musique. Ensuite, un script rsync la synchronise sur le Raspberry. Il ne me reste qu’à faire un scan rapide sur l’interface de Navidrome et le tour est joué, je retrouve la musique dans Feishin immédiatement.
Les playlists
Comme toujours, il faut maintenant recréer mes playlists. J’utilise des dossiers dédiés pour les playlists, cela a ses avantages et ses inconvénients, mais globalement je trouve ça plutôt pas mal, et il y a toujours moyen de les recréer facilement comme j’ai pu le faire avec MoOde. L’inconvénient, c’est que les morceaux se retrouvent dupliqués dans la bibliothèque musicale, mais bon…
Avec Navidrome, c’est en fait très simple : il suffit d’aller dans chaque dossier, et de créer un fichier nom_playlist.m3u, et le tour est joué : au prochain scan, Navidrome va automatiquement importer la playlist. Et donc sous Linux, la simple commande suivante suffit :
$ ls > nom_playlist.m3u
Et voilà, il suffit de le faire dans chaque dossier « playlist », et de relancer un scan dans Navidrome. Côté Feishin, il n’y a rien à faire, la playlist va tout de suite apparaître.
Scrobbling
Tant que j’y étais, et puisque je l’avais activé pour MoOde, j’ai regardé ce que l’on pouvait faire de ce côté avec Navidrome. C’est malheureusement impossible à l’heure actuelle pour Libre.fm, l’idée a été soumise, mais pas encore implémentée (si elle doit l’être un jour). Reste au choix Last.fm ou ListenBrainz. C’est très simple et bien intégré.
Last.fm
Il faut bien sûr se créer un compte last.fm (gratuit) si ce n’est déjà pas le cas, et obtenir une API key sur https://www.last.fm/api/account/create (seul le champ « Application name » est requis). Puis on copie les valeurs obtenues dans le fichier compose.yaml (voir ci-dessus). Redémarrer Navidrome. Puis aller dans le profil utilisateur et activer le scrobbling :

On est redirigé vers une page last.fm où il suffit d’autoriser Navidrome à « scrobbler » vers last.fm. Et voilà, le scrobbling doit fonctionner.

Music.Brainz
Côté MusicBrainz (ou ListenBrainz), une fois le compte créé, il faut aussi activer l’option dans Navidrome.

Une boite de dialogue s’ouvre, il faut alors cliquer sur le lien pour recevoir le token :

On arrive alors sur une page de ListenBrainz, on copie le token fourni, et on le colle dans Navidrome, et le tour est joué, le scrobbling doit fonctionner sur listenbrainz :

Feishin
Le lecteur Feishin est disponible dans les dépôts AUR, c’est donc très facile de l’installer avec pamac (il est aussi disponible sur Flathub au cas où) :

On peut juste regretter qu’il ne soit pas intégré au style de Gnome (fenêtre), mais c’est vraiment un détail. Une fois lancé, il suffit d’aller dans les paramètres « Gérer les serveurs », et de saisir les informations du serveur Navidrome (adresse et port, nom, mot de passe) :

Comme je suis sur le réseau local, je n’ai pas de connexion HTTPS, il faudrait que je passe par le proxy, mais je ne me suis pas pris la tête avec ça. Et c’est tout, Feishin est opérationnel :
Homepage Dashboard
Comme tout service Docker installé, il me faut l’ajouter à mon dashboard Homepage. Par contre, il a fallu chercher un peu pour trouver comment générer le token pour que les données fonctionnent.
Il faut aller sur le site https://www.md5hashgenerator.com/ et générer le token en concaténant votre mot de passe navidrome + le salt indiqué dans le fichier compose (voir le fichier ci-dessous). On obtient alors le token :

Et voilà la partie du fichier services.yaml de Homepage correspondant à Navidrome :
- Navidrome:
icon: navidrome
href: http://192.168.1.32:4533
description: Navidrome Music Server
server: my-docker
container: navidrome-navidrome-1
widget:
type: navidrome
url: http://192.168.1.32:4533
user: pascal
token: 036905dfd8917194a13195ddd6dd1352
salt: randomsalt
Comme toujours, faire attention au nom du container, et cela fonctionne nickel du premier coup. Bonus, il affiche le morceau en train d’être joué ! 😎

Conclusion
Voilà plusieurs semaines que j’utilise cette nouvelle configuration pour écouter de la musique sur le PC, et j’en suis très satisfait. Je n’ai observé aucun problème avec le montage NFS pour accéder à la musique, et Feishin est vraiment très esthétique, cela change de Rhythmbox que utilisé pendant si longtemps, et même de DeadBeef que j’utilisais depuis mon passage à EndeavourOS.




