- B
So What
DSub · 2m ago
- T
Take Five
Symfonium · 14m ago
- G
Goodbye Pork Pie Hat
Feishin · 31m ago
3 clientes · 2 servidores · actualización en directo
Autoalojado · Código abierto · MIT
Navidrome Stat sondea la API getNowPlaying de tus servidores Navidrome y convierte tus escuchas en un panel autoalojado: tiempo de escucha, tendencias, rankings y un resumen anual. Tus datos nunca salen de tu máquina.
Blue in Green
Miles Davis — Kind of Blue
Los clientes de Navidrome no comparten estadísticas entre sí. Navidrome Stat observa el servidor en su lugar: un solo historial, todos los clientes.
So What
DSub · 2m ago
Take Five
Symfonium · 14m ago
Goodbye Pork Pie Hat
Feishin · 31m ago
3 clientes · 2 servidores · actualización en directo
DSub, Symfonium, Feishin, reproductores web: las reproducciones de cualquier cliente Subsonic llegan al mismo historial. También varios servidores Navidrome.
Tendencias por hora y por día, mapa de calor día de la semana × hora, uso por cliente, tasas de transcodificación y rankings que abren páginas de detalle compartibles — con comparaciones por franja horaria y frente al periodo anterior.
Totales, rachas de escucha y tus mejores artistas, álbumes y canciones: tu propio Wrapped, con tus propios datos. Delimitado por año, servidor, usuario y zona horaria, y compartible por URL.
Las portadas pasan por una caché autenticada y con límite de tamaño: tu biblioteca sigue siendo privada.
1 024 portadas en caché · 128 MB
Todo vive en un archivo SQLite que te pertenece. Exportación, importación y borrado por usuario. Autenticación por token opcional. Sin telemetría.
Nueve familias — Catppuccin, Nord, Dracula, Tokyo Night, Gruvbox, Solarized y más — cada una con sus variantes clara y oscura.
English, 简体中文, 繁體中文, 日本語, Deutsch, Français, Español.
Nueve familias de paletas, cada una en versión clara y oscura, recolorean cada pestaña al instante. Haz clic y mira cómo cambia el panel:
Una página, todo tu año: totales, rachas y las canciones que te acompañaron.
Canciones top
Blue in Green
Datos de ejemplo: las cifras reales vienen de tu propia biblioteca.
Sin plugins de cliente, sin cuentas, sin nube. Un contenedor pequeño junto a tu servidor de música.
Cada 10 segundos (configurable), el colector pregunta a cada servidor Navidrome qué se está reproduciendo, mediante la API Subsonic que ya tienes.
Pausas e interrupciones quedan excluidas. Una canción cuenta como reproducida cuando la escucha activa supera tu umbral: 30 segundos por defecto.
Las reproducciones válidas se guardan en SQLite en tu disco y se muestran en un panel autosuficiente en el puerto 39421.
Cuando un servidor anuncia la extensión OpenSubsonic playbackReport, se usa automáticamente para un seguimiento más preciso de posición y duración. También puedes vigilar una lista de reproducción inteligente de Navidrome para importar tu historial previo a la instalación como reproducciones estimadas.
Copia, pega y abre el puerto 39421. Fija la etiqueta de versión para actualizaciones reproducibles.
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 Con STATS_API_TOKEN definido, introdúcelo una vez en la pantalla de inicio de sesión: el navegador guarda una cookie de sesión HttpOnly, nunca el token.
Referencia completa de configuraciónEl historial de escucha vive en un archivo SQLite dentro de tu propio volumen.
Exportación JSON, importación y borrado por usuario, integrados en la página de ajustes.
Define STATS_API_TOKEN y el panel y las API exigirán inicio de sesión; las sesiones usan una cookie HttpOnly.
El contenedor solo habla con un tercero: tus servidores Navidrome.
Varias instancias sondeando los mismos servidores contarían las reproducciones por duplicado.
El historial de escucha se guarda sin cifrar en SQLite. Las credenciales guardadas desde ajustes se cifran en reposo con un archivo de clave local: protege las copias de una mirada casual, no un equipo comprometido.
Para acceso remoto, colócalo detrás de tu proxy inverso HTTPS.
Cualquier cliente compatible con Subsonic: DSub, Symfonium, Feishin, play:Sub, substreamer, la interfaz web de Navidrome y más. Las estadísticas vienen del endpoint getNowPlaying del servidor, así que no hay que instalar nada en el cliente.
Sí. Añade cada servidor en Ajustes → Conexiones; las reproducciones se etiquetan por origen y el panel puede filtrar por servidor o usuario.
Sí. Apunta una conexión guardada a una lista de reproducción inteligente de Navidrome (un .nsp como «Reproducidos recientemente») y Navidrome Stat importará una reproducción estimada por canción a partir de su marca de tiempo de última reproducción. Las ejecuciones repetidas nunca duplican, se omiten las reproducciones ya cubiertas por el sondeo en vivo y solo se importa lo escuchado antes de la instalación.
Sí. Los filtros del panel, las páginas de detalle de artista y álbum y el alcance del resumen anual se conservan en la URL: al recargar mantienes tu vista y un enlace copiado abre la misma. Los nombres de las páginas de detalle de cliente se envían en peticiones POST y nunca aparecen en URL compartibles.
El tiempo de escucha activa acumulado debe superar PLAY_THRESHOLD_SEC (30 segundos por defecto). Las pausas e intervalos perdidos se excluyen, los puntos de control actualizan el mismo registro y las sesiones que terminan por debajo del umbral se guardan como intentos, no como reproducciones.
En Ajustes → Preferencias puedes elegir créditos de artista combinados o separados. El modo separado acredita a cada artista una vez por reproducción en rankings y detalles, mientras que el número de canciones, las reproducciones totales y el tiempo de escucha no cambian.
Funciona con cualquier servidor que hable la API Subsonic, pero se desarrolla y prueba contra Navidrome. Las extensiones OpenSubsonic se usan cuando el servidor las ofrece.
Last.fm registra los scrobbles en la nube de otro; Maloja es autoalojado pero sigue dependiendo de que los clientes envíen los scrobbles. Navidrome Stat no necesita nada del cliente: observa el propio flujo now-playing del servidor, así que cubre cualquier cliente Subsonic por defecto, y los datos se quedan en tu disco.
En un único archivo SQLite en tu disco, dentro del volumen /data del contenedor. Puedes exportarlo a JSON, importarlo en otro sitio o borrar el historial de un usuario, todo desde la página de ajustes.
Un contenedor pequeño, un archivo SQLite y un sondeo cada 10 segundos. Una Raspberry Pi lo lleva sin problemas.