---
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
