- B
So What
DSub · 2m ago
- T
Take Five
Symfonium · 14m ago
- G
Goodbye Pork Pie Hat
Feishin · 31m ago
3 Clients · 2 Server · Live-Update
Selbst gehostet · Open Source · MIT
Navidrome Stat fragt die getNowPlaying-API deiner Navidrome-Server ab und macht daraus ein selbst gehostetes Dashboard — Hörzeit, Trends, Rankings und ein Jahresrückblick. Deine Daten verlassen deinen Rechner nie.
Blue in Green
Miles Davis — Kind of Blue
Navidrome-Clients teilen ihre Statistiken nicht untereinander. Navidrome Stat beobachtet stattdessen den Server — ein Verlauf, alle Clients.
So What
DSub · 2m ago
Take Five
Symfonium · 14m ago
Goodbye Pork Pie Hat
Feishin · 31m ago
3 Clients · 2 Server · Live-Update
DSub, Symfonium, Feishin, Web-Player — Wiedergaben aus jedem Subsonic-Client landen im selben Verlauf. Mehrere Navidrome-Server genauso.
Stündliche und tägliche Trends, eine Wochentag-nach-Stunde-Heatmap, Client-Nutzung, Transkodierungsraten und Rankings mit teilbaren Detailseiten pro Künstler und Album — dazu Tageszeit- und Vorperiodenvergleiche.
Totale, Hörserien und deine Top-Künstler, -Alben und -Titel — dein eigenes Wrapped, mit deinen eigenen Daten. Eingegrenzt nach Jahr, Server, Benutzer und Zeitzone, teilbar per URL.
Albumcover laufen über einen authentifizierten, größenbegrenzten Cache — deine Bibliothek bleibt privat.
1.024 Cover im Cache · 128 MB
Alles liegt in einer SQLite-Datei, die dir gehört. Export, Import und Löschung pro Benutzer. Optionale Token-Authentifizierung. Keine Telemetrie.
Neun Familien — Catppuccin, Nord, Dracula, Tokyo Night, Gruvbox, Solarized und mehr — jeweils mit heller und dunkler Variante.
English, 简体中文, 繁體中文, 日本語, Deutsch, Français, Español.
Neun Palettenfamilien, jede in hell und dunkel, färben jeden Tab sofort um. Klick dich durch:
Eine Seite, dein ganzes Jahr: Totale, Serien und die Songs, die dich getragen haben.
Top-Titel
Blue in Green
Beispieldaten — die echten Zahlen kommen aus deiner eigenen Bibliothek.
Keine Client-Plugins, keine Konten, keine Cloud. Ein kleiner Container neben deinem Musikserver.
Alle 10 Sekunden (konfigurierbar) fragt der Collector jeden Navidrome-Server, was gerade läuft — über die Subsonic-API, die du schon hast.
Pausen und Aussetzer zählen nicht. Ein Titel gilt als gespielt, sobald aktives Hören deine Schwelle überschreitet — standardmäßig 30 Sekunden.
Gewertete Wiedergaben landen in SQLite auf deiner Festplatte und erscheinen in einem in sich geschlossenen Dashboard auf Port 39421.
Bietet ein Server die OpenSubsonic-Erweiterung playbackReport an, wird sie automatisch für genauere Positions- und Dauer-Erfassung genutzt. Du kannst zusätzlich eine Navidrome-Smart-Playlist überwachen lassen, um deinen Hörverlauf von vor der Installation als geschätzte Wiedergaben zu importieren.
Kopieren, einfügen, Port 39421 öffnen. Für reproduzierbare Updates das Version-Tag pinnen.
services:
navidrome-stat:
image: stepaniah/navidrome-statistic:v0.9.2
container_name: navidrome-stat
user: "1000:1000"
ports:
- "39421:39421"
volumes:
- navidrome-stat-data:/data
environment:
NAVIDROME_URL: ${NAVIDROME_URL}
NAVIDROME_USER: ${NAVIDROME_USER}
NAVIDROME_PASS: ${NAVIDROME_PASS}
STATS_API_TOKEN: ${STATS_API_TOKEN}
DATABASE_URL: /data/navidrome_stats.db
restart: unless-stopped
volumes:
navidrome-stat-data: docker run -d --name navidrome-stat \
-p 39421:39421 \
-e NAVIDROME_URL=https://navidrome.example.com \
-e NAVIDROME_USER=you \
-e NAVIDROME_PASS=change-me \
-e STATS_API_TOKEN=$(openssl rand -hex 24) \
-v navidrome-stat-data:/data \
stepaniah/navidrome-statistic:v0.9.2 NAVIDROME_URL=https://navidrome.example.com
NAVIDROME_USER=example_user
NAVIDROME_PASS=change-me
STATS_API_TOKEN=use-a-long-random-value Mit gesetztem STATS_API_TOKEN einmalig im Login-Bildschirm eingeben — der Browser behält ein HttpOnly-Session-Cookie, nie den Token.
Vollständige KonfigurationsreferenzDer Hörverlauf liegt in einer einzigen SQLite-Datei in deinem eigenen Volume.
JSON-Export, -Import und Löschung pro Benutzer sind in der Einstellungsseite eingebaut.
STATS_API_TOKEN setzen, und Dashboard wie APIs verlangen einen Login — Sitzungen nutzen ein HttpOnly-Cookie.
Der Container spricht mit genau einem externen Partner: deinen Navidrome-Servern.
Mehrere Instanzen, dieselben Server abfragend, würden Wiedergaben doppelt zählen.
Der Hörverlauf liegt unverschlüsselt in SQLite. In den Einstellungen gespeicherte Zugangsdaten werden mit einer lokalen Schlüsseldatei verschlüsselt abgelegt — Schutz bei flüchtigem Blick auf Backups, nicht bei einem kompromittierten Host.
Für Fernzugriff gehört es hinter deinen HTTPS-Reverse-Proxy.
Jeder Subsonic-kompatible Client — DSub, Symfonium, Feishin, play:Sub, substreamer, die Navidrome-Weboberfläche und mehr. Die Statistiken kommen vom getNowPlaying-Endpunkt des Servers; clientseitig muss nichts installiert werden.
Ja. Lege jeden Server unter Einstellungen → Verbindungen an; Wiedergaben werden pro Quelle markiert, und das Dashboard lässt sich nach Server oder Benutzer filtern.
Ja. Richte eine gespeicherte Verbindung auf eine Navidrome-Smart-Playlist (eine .nsp wie „Zuletzt gespielt“) und Navidrome Stat importiert pro Titel eine geschätzte Wiedergabe aus dem Last-Played-Zeitstempel. Erneute Läufe zählen nichts doppelt, bereits live erfasste Wiedergaben werden übersprungen, und importiert wird nur, was vor der Installation gehört wurde.
Ja. Dashboard-Filter, Künstler- und Albumdetailseiten sowie der Jahresrückblick behalten ihren Zustand in der URL — nach dem Neuladen ist deine Ansicht noch da, und ein kopierter Link öffnet dieselbe. Clientnamen von Detailseiten gehen per POST raus und tauchen in teilbaren URLs nicht auf.
Die akkumulierte aktive Hörzeit muss PLAY_THRESHOLD_SEC überschreiten (standardmäßig 30 Sekunden). Pausen und fehlende Intervalle zählen nicht, Checkpoints aktualisieren denselben Datensatz, und Sitzungen unter der Schwelle bleiben Versuche — keine Wiedergaben.
Unter Einstellungen → Präferenzen wählst du gemeinsame oder getrennte Künstlerzuschreibungen. Der getrennte Modus schreibt jede Wiedergabe jedem beteiligten Künstler einmal zu, während Titelanzahl, Wiedergaben und Hörzeit unverändert bleiben.
Es läuft mit jedem Server, der die Subsonic-API spricht; entwickelt und getestet wird gegen Navidrome. OpenSubsonic-Erweiterungen werden genutzt, wenn ein Server sie anbietet.
Last.fm speichert Scrobbles in der Cloud eines anderen; Maloja ist selbst gehostet, braucht aber Clients, die Scrobbles melden. Navidrome Stat braucht keinerlei Client-Unterstützung — es beobachtet den Now-Playing-Feed des Servers selbst, dadurch ist jeder Subsonic-Client abgedeckt, und die Daten bleiben auf deiner Platte.
In einer einzigen SQLite-Datei auf deiner eigenen Festplatte, im /data-Volume des Containers. Du kannst sie als JSON exportieren, woanders importieren oder den Verlauf eines Benutzers löschen — alles über die Einstellungsseite.
Ein kleiner Container, eine SQLite-Datei, ein 10-Sekunden-Poll-Loop. Ein Raspberry Pi schafft das locker.