Je crois que j’ai ENFIN trouvé le lecteur de musique que j’aime !

J’ai jamais été consommateur de musique, de qualité lossless du moins (Rikito, si tu me lis), au point d’être un gros membre de WCD et ses successeurs où je ne suis d’ailleurs plus.
Mais en bon geek curieux, j’ai toujours eu un œil sur les solutions d’hébergement/téléchargement/streaming de musique. Je me contente d’ajouter des .torrent à Decypharr/AllDebrid, ne voulant plus stocker directement chez moi (hormis un peu de partage via DecypharsSeed) et ne supportant plus Lidarr (même en hébergeant mon instance pour les métadonnées).
Il m’a cependant été impossible de trouver un lecteur (Web et/ou iOS/Android) qui réponde à mes besoins : beau & moderne, simple, avec recherche par genres, artistes similaires, playlists et paroles notamment. En gros : une copie de Spotify.
J’ai relancé il y a quelques semaines mon Navidrome qui prenait la poussière dans un vieux reste de stack audio auto-hébergée. Après avoir des années utilisé Subsonic et dérivés, Plex ou encore Jellyfin pour jouer un peu de musique, j’étais passé sur Navidrome pour sa modularité et « bonne allure » de serveur de streaming dédié à ce type de médias.
Comme je veux l’utiliser avec Decypharr/AD, j’ajuste les volumes en conséquence :
– /mnt/:/mnt/:rshared
– /mnt/Fichiers/decypharr/qbit/music:/music:ro
Et j’utilise toujours Spotify, en sus de Deezer, pour les métadonnées. Pour le reste des variables d’environnement, tout est expliqué dans la documentation.
Pour cet article je n’ai mis que 3 albums en test.
services:
navidrome:
image: deluan/navidrome:latest
user: 1000:1000
ports:
- "4533:4533"
restart: always
environment:
- TZ=Europe/Paris
- ND_BASEURL=https/audio.domain.tld
- ND_AGENTS=spotify,deezer
- ND_DEEZER_ENABLED=true
- ND_ENABLEDOWNLOADS=false
- ND_ENABLEEXTERNALSERVICES=false
- ND_HTTPSECURITYHEADERS_CUSTOMFRAMEOPTIONSVALUE=SAMEORIGIN
- ND_IGNOREDARTICLES="The El La Los Las Le La Les Os As O A Du"
- ND_IMAGECACHESIZE=10GB
- ND_LASTFM_ENABLED=false
#- ND_LISTENBRAINZ_BASEURL=https://mb.domain.tld
- ND_LISTENBRAINZ_ENABLED=true
- ND_RECENTLYADDEDBYMODTIME=true
- ND_SCANNER_ENABLED=true
- ND_SCANNER_SCHEDULE="0 * * * *"
- ND_SCANNER_WATCHERWAIT="10s"
- ND_SCANNER_ARTISTJOINER= " | "
- ND_SCANNER_FOLLOWSYMLINKS=true
- ND_SCANNER_PURGEMISSING=always
- ND_SEARCHFULLSTRING=true
- ND_SPOTIFY_ID=xxx
- ND_SPOTIFY_SECRET=xxx
- ND_SUBSONIC_ARTISTPARTICIPATIONS=true
volumes:
- /mnt/:/mnt/:rshared
- /mnt/Docker/navidrome:/data
- /mnt/Fichiers/decypharr/qbit/music:/music:ro

Mais il me manquait encore surtout un tri par genres et… une WebUI plus moderne.
Je suis tombé sur Feishin qui est à la fois un client (desktop/Web) de streaming pour Navidrome, Jellyfin et Subsonic et un agrégateur de serveurs puisqu’on peut en ajouter plusieurs. On peut donc imaginer un partage de serveurs de musique Jellyfin entre amis.



Gavé d’options !




Attention, c’est avant-tout un client desktop (tous OS) et donc ne propose pas de système d’authentification. Ce qui fait que lorsque comme moi on l’installe en Docker pour en profiter hors LAN (via mon iPhone notamment), il faut ajouter un système d’authentification tel qu’Authelia ou bien « à l’ancienne », via Nginx proxy Manager dans mon cas :
Sur une machine Linux (ou dans un Docker), installer de quoi créer le mot de passe encoder à filer ensuite à NPM.
sudo apt install apache2-utils
Puis, créer un fichier htpasswd avec un utilisateur et un mot de passe dans un dossier auquel accède NPM
root@StreamBox:/home/aerya/docker/npm/data# htpasswd -c htpasswd aerya
New password:
Re-type new password:
Adding password for user aerya
Et on peut alors passer ça en paramètre dans NPM pour avoir le fameux pop-up d’identification quand on va sur l’URL concernée

Comme j’ai déjà Navidrome qui tourne sur https://audio.domain.tld, je mets Feishin sur https://music.domain.tld

Et le compose de Navidrome est très léger vu que ce n’est qu’une interface pour un autre outil
services:
feishin:
container_name: feishin
image: 'ghcr.io/jeffvli/feishin:latest'
environment:
- SERVER_NAME=Musique
- SERVER_LOCK=false
- SERVER_TYPE=navidrome
- SERVER_URL=https://audio.domain.tld
- TZ=Europe/Paris
ports:
- 9180:9180
restart: always
À la 1ère connexion il faut ajouter ton serveur. Il propose par défaut celui configuré dans le compose du dessus


Sur AndroidTV, j’utilise Symfonium de Tolriq, que j’ai bien connu dans une autre vie. Application payante (onetime 7-10€ selon frais) mais qui vaut le coup, jetez un œil à sa présentation sur le PlayStore.
Et sur iPhone, j’avais Amperfy et suis passé depuis peu sur Arpeggi, qui est en TestFlight (et closed source hélas…).




![]()

