7.4 KiB
title, created, updated, type, tags, confidence, contested, sources
| title | created | updated | type | tags | confidence | contested | sources | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Maloja | 2026-06-07 | 2026-06-07 | app |
|
high | false |
|
📊 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é)
# 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é :
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)
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/<scrobble>(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.
- Last.fm :
- 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