L'écosystème Sonos a bien évolué au fil des années, avec du positif comme du négatif ( 1 | 2 ), mais tout en intégrant une multitude de services musicaux, Sonos a toujours délaissé, le nombre de fichiers musicaux locaux explorables. En l'état cette limite est toujours fixée à 65.000 fichiers alors même que l'évolution Sonos 2 permettrait certainement de s'en affranchir.
J'ai longtemps utilisé Subsonic (ou ses forks) qui permet de contourner cette limite. Mais d'une part Subsonic est payant, et surtout n'est plus maintenu.
Aujourd'hui il existe un nouveau fork open source, Navidrome, qui est compatible avec les clients Subsonic, mais hélas ne propose pas de compatibilité Sonos. Fort heureusement un autre développeur de génie a eu la bonne idée de mettre à disposition une interface, Bonob, via les API Sonos, qui va permettre de faire le lien entre Sonos et les fors de Subsonic, en l'occurrence ici Navidrome.
Si ces programmes sont installables sous Linux, Windows ou MacOS, je vais choisir la facilité en passant par Docker. Pour y parvenir je commence par installer une petite VM Ubuntu Serveur avec Docker installé, et comme mes fichiers musicaux sont sur mon Nas je vais le lier en créant un volume NFS.
On commence par installer les paquets NFS :
[email protected]:~# sudo apt install nfs-common
Ensuite on crée le répertoire idoine et on le lie au Nas :
[email protected]:~# sudo mkdir -pv /nas/Music
admini[email protected]:~# sudo mount 192.168.0.241:/volume1/Music /nas/music
Et pour terminer cette partie on fige le montage NFS en éditant le fichier /etc/fstab
et en y ajoutant une ligne :
[email protected]:~# sudo nano /etc/fstab
192.168.0.22:/volume1/Music /nas/music nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
Navidrome
On commence par créer un répertoire de travail ou sera installé le cache :
[email protected]:~# sudo mkdir -pv /navidrome/data/
On installe le docker Navidrome avec la commande suivante :
sudo docker run -d \
--name navidrome \
--restart=unless-stopped \
--user $(id -u):$(id -g) \
-v /nas/music:/music \
-v /data/navidrome:/data \
-p 4533:4533 \
-e ND_LOGLEVEL=info \
deluan/navidrome:latest
Il est possible de ne pas indiquer le user à des fin de test et debug, mais je ne le conseille pas de fonctionner en root. On retrouve ici nos deux répertoires, /data/navidrome
pour le cache et /nas/music
pour les fichiers musicaux qui pointe sur le NAS. Il y a pas mal d'autres options plus ou moins intéressantes que l'on pourra ajouter ici ou dans un fichier de configuration.
Il ne reste plus qu'à se connecter sur http://ip_serveur:4533 ... Il est bien sur possible de passer en SSL avec un reverse proxy (un petit Docker de plus...), mais également de créer des comptes secondaire pour d'autres utilisateurs qui pourront également télécharger fichiers ou albums.
Bonob
C'est ici que ça devient intéressant pour Sonos. Et ça se passe également sous Docker avec à minima :
sudo docker run -d \
--name bonob \
--restart=unless-stopped \
-e BNB_PORT=4534 \
-e BNB_URL=http://192.168.0.33:4534 \
-e BNB_SONOS_SERVICE_NAME=Canaletto \
-e BNB_SONOS_SEED_HOST=192.168.0.57 \
-e BNB_SONOS_AUTO_REGISTER=true \
-e BNB_SONOS_DEVICE_DISCOVERY=true \
-e BNB_SUBSONIC_URL=http://172.17.0.2:4533 \
-p 4534:4534 \
simojenki/bonob
Il y a quelques options qui méritent explication :
- BNB_URL= l'url du service Bonob afin de le faire savoir à Sonos
-
BNB_SONOS_SERVICE_NAME= Le nom du service qui apparaitra dans Sonos
-
BNB_SONOS_SEED_HOST= L'IP (fixe) d'un équipement Sonos permanent
-
BNB_SUBSONIC_URL= L'url interne à docker de Navidrome
Pour le reste je vous renvoi au GitHub afin d'adapter votre configuration.
A ce stade il suffit d'aller dans l'interface Sonos et d'ajouter le service que l'on viens de créer

Et de s'authentifier avec le compte précédemment créé dans Navidrome et de profiter de votre bibliothèque (MP3, FLAC, etc). Navidrome va indexer la bibliothèque et servir de cache. Je trouve les temps de recherche excellents au regard des 192 217 fichiers de ma bibliothèque répartis dans 15 753 répertoires. Il est possible dans Navidrome de créer des listes de lecture et des favoris que l'on retrouvera sous Sonos, par contre il n'est pas possible d'explorer l'arborescence des fichiers comme le permet Sonos dans son service de base.
Selon l'échantillonnage et le transcodage souhaité il faudra peut être modifier la configuration de Navi drome pour s'y adapter.
