7.2 KiB
title, created, updated, type, tags, confidence, contested, sources
| title | created | updated | type | tags | confidence | contested | sources | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Multi-Scrobbler | 2026-06-07 | 2026-06-07 | app |
|
high | false |
|
🎚️ 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 |
| GitHub | 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é)
# 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
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 :
- Variables d'environnement : préfixe
MS_ou directement les variables par service (cf. exemples Docker). Pratique pour les secrets. - Fichier JSON dans
/config/config.json(par défaut). Sectionssources: []etclients: []. Documentation : 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,verbosemonitoring.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 secretsou Vault, pas de variable en clair dans le compose. - L'UI web
9078n'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-scrobblersupporte 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
- Documentation officielle
- Quickstart
- Liste des sources
- Discord DB Tech (présenté par son dev)
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