--- title: Maloja created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, music, scrobble, statistics, lastfm, maloja, python, flask] confidence: high contested: false sources: - https://selfh.st/apps/?tag=Music - https://github.com/krateng/maloja - https://maloja.krateng.ch/ --- # 📊 Maloja > Serveur de **scrobbling** auto-hĂ©bergĂ© compatible **Last.fm / ListenBrainz / Subsonic** :èżœèžȘ vos Ă©coutes, gĂ©nĂšre des statistiques dĂ©taillĂ©es (top artistes, top pistes, pĂ©riodes, pandoradio) et expose tout via une API ouverte. ## 📋 Informations GĂ©nĂ©rales | MĂ©tadonnĂ©e | Valeur | | :--- | :--- | | **Site web** | https://maloja.krateng.ch/ | | **GitHub** | https://github.com/krateng/maloja | | **License** | GPL-3.0 | | **Langage** | Python (Flask) | | **Étoiles** | ⭐ 87 (2 000+ sur GitHub) | | **DerniĂšre MAJ** | 2025-05-18 | | **CatĂ©gorie** | [[cat-music]] | ## 📝 Description Maloja est l'Ă©quivalent self-hosted de **Last.fm** (le service de scrobbling historique), sans tracking commercial, sans pub, et avec des **statistiques bien plus poussĂ©es**. Conçu par le dĂ©veloppeur allemand `krateng`, le projet vise les mĂ©lomanes qui veulent **conserver leur historique d'Ă©coute de maniĂšre privĂ©e** sur leur propre serveur, tout en profitant de visualisations riches (heatmaps, top charts, timelines, dĂ©couvertes temporelles). FonctionnalitĂ©s principales : - **Scrobbling** : Maloja accepte les scrobbles via son API propriĂ©taire, mais aussi en mode **proxy** vers Last.fm (vous scrobblez sur votre Maloja, il forwarde Ă  Last.fm si vous voulez garder les deux). Compatible **ListenBrainz** et **Subsonic** (donc Navidrome, Gonic, Airsonic, etc. peuvent scrobbler vers Maloja automatiquement). - **Statistiques** : top artistes, top albums, top pistes sur diffĂ©rentes pĂ©riodes (semaine, mois, annĂ©e, all-time), heatmaps calendaires (style GitHub contributions), top par jour de la semaine, par heure, par durĂ©e, par genre. - **Pandoradio** : gĂ©nĂšre des radios personnalisĂ©es Ă  partir d'un seed (artiste/album/piste) — proches de Spotify Radio. - **Import/Export** : import des scrobbles Last.fm (CSV), export des donnĂ©es en JSON. - **Multi-utilisateurs** : comptes sĂ©parĂ©s, chacun a ses stats (idĂ©al pour une famille). - **API ouverte** : endpoints REST pour tout (scrobble, query, charts), exploitable par des scripts externes. - **Charts gĂ©nĂ©rĂ©s** : certificats « top X de l'annĂ©e » Ă  partager sur les rĂ©seaux, façon Spotify Wrapped mais Ă  la demande. Cas d'usage : « Je veux arrĂȘter de filer mes donnĂ©es d'Ă©coute Ă  Last.fm mais je veux garder les stats et les scrobbles » → Maloja est **LE** choix naturel. ## 🚀 Installation ### Option 1 : Docker Compose (recommandĂ©) ```yaml # docker-compose.yml version: "3.8" services: maloja: image: ghcr.io/krateng/maloja:latest container_name: maloja restart: unless-stopped ports: - "42010:42010" environment: MALOJA_DATA_DIR: /data MALOJA_LISTEN_PORT: 42010 MALOJA_HOSTNAME: maloja.example.com MALOJA_FORCE_PASSWORD: ChangeM3_MALOJA MALOJA_TIMEBETWEEN_SCANS: 30 volumes: - ./data:/data healthcheck: test: ["CMD", "wget", "-q", "--spider", "http://localhost:42010/health"] interval: 60s timeout: 5s retries: 3 ``` Premier lancement : visiter `http://localhost:42010`, crĂ©er le compte admin (mot de passe par dĂ©faut `ChangeM3_MALOJA` Ă  changer immĂ©diatement). ### Option 2 : Installation manuelle (simple) Maloja a un **installateur dĂ©diĂ©** : ```bash curl -L https://raw.githubusercontent.com/krateng/maloja/master/install.sh | sh ``` Le script crĂ©e un user `maloja`, installe dans `/var/lib/maloja`, configure un service systemd, ouvre le port 42010. Marche sur Debian/Ubuntu. ### Option 3 : pip (dĂ©veloppement) ```bash pip install malojaserver maloja run ``` ## ⚙ Configuration - **Auth admin** : premier compte créé devient admin, mot de passe Ă  changer via `Settings`. - **Multi-users** : `Settings → Users`, crĂ©er des comptes, chacun a son namespace de scrobbles. - **Scrobbling API** : URL `https://maloja.example.com/apis/native/` (mĂ©thode POST) ou `
/apis/listenbrainz` (compatible LB). - **Proxies** : - **Last.fm** : `Settings → Proxies → Last.fm`, votre Maloja forwarde les scrobbles Ă  Last.fm. - **ListenBrainz** : idem. - **Subsonic** : tous les serveurs compatibles (Navidrome, Gonic, etc.) supportent un endpoint scrobble Subsonic, Ă  pointer vers Maloja. - **Pandoradio rules** : `Settings → Rules`, rĂšgles de recommandation (tags, dates d'ajout, co-Ă©coutes). - **Certificats** : Maloja peut gĂ©nĂ©rer un « Wrapped » annuel en PNG/PDF via `Settings → Top Artists/Tracks`. - **Backup** : `./data` (SQLite + fichiers JSON), tout y est, backup incrĂ©mental simple. ## 🔄 Alternatives ### Open Source - [[app-navidrome]] — IntĂšgre le scrobbling Last.fm nativement, stats basiques. - [[app-koel]] — Scrobbling Last.fm, stats simples. - [[app-funkwhale]] — Historique d'Ă©coute intĂ©grĂ©. - [[app-music-assistant]] — Historique mais stats limitĂ©es. - [[app-multi-scrobbler]] — Multi-source → multi-destination (peut complĂ©ter Maloja). - [[app-koito]] — Scrobbler moderne Ă©crit en Go. - [[app-listenbrainz]] — Le service public LB (non self-hosted, mais compatible). ### PropriĂ©taires (ce que cette app remplace) - Last.fm — Le service de scrobbling de rĂ©fĂ©rence (depuis 2002, rachetĂ© par CBS/Audacy). - Spotify Wrapped — Stats de fin d'annĂ©e. - Apple Music Replay — Stats annuelles. - YouTube Music Recap — Stats. - Deezer Stats — Historique. ## 🔒 SĂ©curitĂ© - **HTTPS obligatoire** : reverse proxy Traefik/Caddy, le scrobbling passe par POST et contient vos Ă©coutes (mĂ©tadonnĂ©e personnelle). - **Auth forte** : mot de passe admin 16+ caractĂšres, 2FA non supportĂ© nativement (limitation connue) → compenser avec Authelia/Authentik devant en mode SSO. - **API keys Last.fm** : si proxy activĂ©, stocker dans Maloja (chiffrĂ© en base). - **Rate limiting** : pas natif, placer CrowdSec devant, surtout si proxy Last.fm activĂ© (peut se faire bannir par Last.fm en cas de pic). - **Backups** : `./data` (SQLite + cache) Ă  sauvegarder, c'est votre seule source d'historique. - **Pas d'auth pour l'Ă©criture API** : l'endpoint scrobble accepte n'importe qui par dĂ©faut → activer `MALOJA_FORCE_PASSWORD` (admin) et crĂ©er des tokens par utilisateur. - **Mise Ă  jour** : rythme lent, vĂ©rifier la compat avec le client Subsonic/Navidrome aprĂšs upgrade. ## 📚 Ressources - Site officiel : https://maloja.krateng.ch/ - Documentation : https://github.com/krateng/maloja/wiki - Repository : https://github.com/krateng/maloja - DĂ©mo : https://maloja.krateng.ch/demo - API doc : https://github.com/krateng/maloja/blob/master/API.md - Reddit : https://www.reddit.com/r/selfhosted/search/?q=maloja - Comparatif Last.fm : https://github.com/krateng/maloja/wiki/Comparison ## 🔗 Pages LiĂ©es - [[cat-music]] — CatĂ©gorie parente - [[app-navidrome]] — Subsonic-compatible, peut scrobbler vers Maloja - [[app-gonic]] — Subsonic-compatible Go - [[app-koito]] — Alternative scrobbler moderne - [[app-multi-scrobbler]] — Multi-scrobbler complĂ©mentaire - [[app-listenbrainz]] — Service public compatible - [[app-traefik]] — Reverse proxy HTTPS - [[app-authelia]] — SSO 2FA recommandĂ© devant Maloja - [[recettes-docker-compose]] — Templates Docker - [[securisation-home-lab]] — Bonnes pratiques