--- title: Multi-Scrobbler created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, music, scrobble, lastfm, listenbrainz, typescript, nodejs, docker] confidence: high contested: false sources: - https://selfh.st/apps/?tag=Music+Streaming - https://github.com/FoxxMD/multi-scrobbler - https://docs.multi-scrobbler.app/ --- # 🎚️ Multi-Scrobbler > Service Node/TypeScript qui centralise le scrobbling : il écoute **28+ sources** (Spotify, Plex, Jellyfin, Navidrome, Mopidy, MPRIS, Sonos, Chromecast…) et **rejoue** automatiquement les écoutes vers **8+ clients** (Last.fm, ListenBrainz, Maloja, Koito, Discord, Rocksky, teal.fm). | Métadonnée | Valeur | | :--- | :--- | | **Site web** | [docs.multi-scrobbler.app](https://docs.multi-scrobbler.app/) | | **GitHub** | [https://github.com/FoxxMD/multi-scrobbler](https://github.com/FoxxMD/multi-scrobbler) | | **License** | MIT | | **Langage** | TypeScript (81.4 %), MDX, Node.js 20+ | | **Étoiles** | ≈1 100 ⭐ (42 sur selfh.st/apps) | | **Dernière MAJ** | 2026-06-03 (v0.14.1) | | **Catégorie** | [[cat-music]] | ## Description Multi-Scrobbler (MS) est un **agrégateur de scrobbles** développé par Matt Foxx. La philosophie du projet : vous écoutez de la musique à des endroits très différents (Spotify sur mobile, Plex sur le salon, Navidrome au bureau, Sonos dans la cuisine, fichier local sur le PC Linux) et vous voulez **un seul historique** sur Last.fm / ListenBrainz / Maloja, peu importe la source. Plutôt que d'installer une extension par plateforme, MS fait office de **hub centralisé** : il parle l'API de chaque source, détecte les écoutes, et les rejoue vers les clients configurés. **Sources supportées (28+)** : Spotify, Deezer, YouTube Music, teal.fm, Rocksky, Plex, Jellyfin, Navidrome, Airsonic (et tous serveurs Subsonic-compatibles), Koito, Mopidy, MPD, Musikcube, Kodi, AzuraCast, Icecast, Last.fm, ListenBrainz, Libre.fm, Maloja, Google Cast (Chromecast), JRiver, **MPRIS** (desktop Linux), **Sonos**, VLC, WebScrobbler, Yamaha MusicCast, Music Assistant. **Clients supportés (8)** : Discord (Rich Presence « Listening to… »), Koito, Last.fm, Libre.fm, ListenBrainz, Maloja, Rocksky, teal.fm. Fonctionnalités clés : gestion **multi-utilisateurs** (vous pouvez scrobbler pour la famille, en isolant les sources par client), **transformations regex** sur les titres avant envoi (uniformiser une nomenclature « Artist - Title.mp3 »), **file d'attente** avec retry automatique en cas d'échec d'API, **webhooks** (Gotify, Ntfy, Apprise), **endpoints Prometheus**, **web UI** sur le port 9078 (stats, logs, contrôle), et configuration soit par **variables d'environnement**, soit par fichier **JSON**. La v0.12 a notamment revu le matching historique des scrobbles. Multi-Scrobbler se distingue de [[app-multi-scrobbler]] (le sien, l'original) face à des solutions comme **WebScrobbler** (extension navigateur) en étant **platform-independent** : pas besoin d'extension, tout passe par les API officielles. La v0.11.1 a ajouté Sonos comme source, la v0.12 a amélioré la correspondance rétroactive, et la v0.14 a stabilisé la nouvelle UI. ## Installation ### Docker (recommandé) ```yaml # docker-compose.yml services: multi-scrobbler: image: foxxmd/multi-scrobbler:latest container_name: multi-scrobbler ports: - "9078:9078" environment: - TZ=Europe/Paris # Exemple : source Spotify + client Last.fm - SPOTIFY_SOURCES=spotifyMain - SPOTIFY_SPOTIFYMAIN_CLIENTID=${SPOTIFY_CLIENTID} - SPOTIFY_SPOTIFYMAIN_CLIENTSECRET=${SPOTIFY_SECRET} - LASTFM_CLIENTS=lfmMain - LASTFM_LFMMAIN_APIKEY=${LASTFM_KEY} - LASTFM_LFMMAIN_SECRET=${LASTFM_SECRET} - LASTFM_LFMMAIN_SESSIONKEY=${LASTFM_SESSION} volumes: - ./config:/config:rw restart: unless-stopped ``` Lancement : `docker compose up -d`, puis `http://localhost:9078` pour l'UI. À la première connexion, suivez le wizard OAuth pour autoriser Spotify et/ou Last.fm (callback accessible depuis la page de statut). ### Node.js local ```bash git clone https://github.com/FoxxMD/multi-scrobbler.git cd multi-scrobbler npm install npm run build node index.js ``` ## Configuration Deux modes de configuration, interchangeables ou combinables : 1. **Variables d'environnement** : préfixe `MS_` ou directement les variables par service (cf. exemples Docker). Pratique pour les secrets. 2. **Fichier JSON** dans `/config/config.json` (par défaut). Sections `sources: []` et `clients: []`. Documentation : [docs.multi-scrobbler.app/configuration](https://docs.multi-scrobbler.app/configuration). Options globales : - `scrobbleThreshold` : % minimum d'écoute pour scrobbler (défaut 50) - `scrobbleInterval` : délai avant scrobble (défaut 240 s) - `transformRegex` / `transformReplace` : regex appliquée aux titres (ex. retirer `(feat. X)` ou normaliser les espaces) - `logLevel` : `info`, `debug`, `verbose` - `monitoring.webhook` : URL Gotify/Ntfy/Apprise L'UI `http://IP:9078` permet de visualiser les scrobbles en temps réel, voir les erreurs API, et déclencher des re-scans. ## Alternatives **Open Source :** [[app-koito]] (scrobbler ListenBrainz, Go+TS), **Maloja** (Python, auto-hébergé), **WebScrobbler** (extension navigateur, non-server), **Pano Scrobbler** (Android), **ScrobbleBot** (Discord), **lastfm-listening-data** (Python), **lastfm-to-listenbrainz** (sync), **ListenBrainz scrobbler** (officiel, minimaliste), **Switch ListenBrainz Lastfm** (Python). Multi-Scrobbler est le **seul** à gérer 28+ sources en agrégateur. **Propriétaire (que cette app remplace) :** les fonctions de scrobbling intégrées à **Last.fm Pro** (limité à la souris sur la plateforme Last.fm), **Pano Scrobbler Premium** (cloud sync), **Spotify pour Last.fm** (uniquement Spotify → Last.fm), **Lastify**, **lastfm-plus** (services cloud opaques). Multi-Scrobbler vous évite de payer pour une fonction que vous pouvez héberger et auditrer. ## Sécurité - Les **API keys** et **session keys** sont sensibles : utilisez `docker secrets` ou Vault, pas de variable en clair dans le compose. - L'UI web `9078` n'a pas d'authentification par défaut : obligatoire de la mettre derrière un **reverse proxy** (Traefik + Authelia ou basic auth). - Si vous exposez le scrobbleur sur Internet, vous laissez fuiter vos habitudes d'écoute 24/7 : limitez l'accès au LAN ou via VPN. - L'image `foxxmd/multi-scrobbler` supporte **x86_64 et ARM64** : pratique pour Raspberry Pi. - Surveillez le **scrobble threshold** pour éviter les scrobbles fantômes (intro de 5 s sur Spotify). - Mettez à jour régulièrement : le support des API Last.fm/Spotify/Listening Brainz évolue, MS suit. ## Ressources - [Dépôt GitHub](https://github.com/FoxxMD/multi-scrobbler) - [Documentation officielle](https://docs.multi-scrobbler.app/) - [Quickstart](https://docs.multi-scrobbler.app/quickstart) - [Liste des sources](https://docs.multi-scrobbler.app/configuration/sources/) - [Discord DB Tech (présenté par son dev)](https://selfh.st/survey/2025-results/) ## Pages Liées - [[cat-music]] — Catégorie Music - [[recettes-docker-compose]] — Templates Docker Compose - [[app-koito]] — Scrobbler ListenBrainz (complémentaire) - [[app-navidrome]] — Source Subsonic typique - [[securisation-home-lab]] — Reverse proxy + secrets