Files
wiki/Catalogue-Self-Hosted/apps/app-multi-scrobbler.md
T
2026-06-09 18:40:21 +02:00

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
catalogue
music
scrobble
lastfm
listenbrainz
typescript
nodejs
docker
high false
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
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 :

  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.

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

Pages Liées