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

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
catalogue
music
scrobble
statistics
lastfm
maloja
python
flask
high false
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é)

# 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.
  • 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

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

🔗 Pages Liées