- B
So What
DSub · 2m ago
- T
Take Five
Symfonium · 14m ago
- G
Goodbye Pork Pie Hat
Feishin · 31m ago
3 クライアント · 2 サーバー · ライブ更新
セルフホスト · オープンソース · MIT
Navidrome Stat は Navidrome サーバーの getNowPlaying API をポーリングし、すべての Subsonic クライアントの再生を 1 つのセルフホスト ダッシュボードにまとめます。リスニング時間、トレンド、ランキング、年間まとめ。データがマシンの外に出ることはありません。
Blue in Green
Miles Davis — Kind of Blue
Navidrome のクライアント間で統計は共有されません。Navidrome Stat はサーバー側で観測します——すべてのクライアント、1 つの履歴。
So What
DSub · 2m ago
Take Five
Symfonium · 14m ago
Goodbye Pork Pie Hat
Feishin · 31m ago
3 クライアント · 2 サーバー · ライブ更新
DSub、Symfonium、Feishin、Web プレーヤー——Subsonic 対応クライアントからの再生はすべて同じ履歴に記録されます。複数の Navidrome サーバーも同様。
時間別・日別トレンド、曜日×時間帯ヒートマップ、クライアント別内訳、トランスコード率、アーティスト・アルバム・曲のランキング。
年間合計、連続リスニング日数、あなたのベストアーティスト・アルバム・曲——自分のデータによる、自分だけの Wrapped。
アルバムアートは認証付き・容量制限付きのキャッシュを経由します——ライブラリは非公開のまま。
1,024 枚のカバーをキャッシュ · 128 MB
すべてはあなたが所有する 1 つの SQLite ファイルに。ユーザーごとのエクスポート、インポート、削除。任意のトークン認証。テレメトリーなし。
Catppuccin、Nord、Dracula、Tokyo Night、Gruvbox、Solarized——ワンクリックで切替。
简体中文、繁體中文、English、日本語、Deutsch——さらに追加予定。
10 の内蔵テーマでダッシュボード全体が即座に切り替わります。クリックして試してみてください:
1 ページに 1 年分:合計、連続日数、そして一年を伴った曲たち。
年間トップ曲
Blue in Green
サンプルデータ——実際の数字はあなた自身のライブラリから。
クライアント插件もアカウント登録もクラウドも不要。小さなコンテナが 1 つ、音楽サーバーのそばで動くだけ。
10 秒ごと(設定可能)に Subsonic API 経由で各 Navidrome サーバーの再生状況を確認——インターフェースはすでにあります。
一時停止や途切れはカウントされません。有効なリスニング時間がしきい値(既定 30 秒)を超えて初めて 1 回の再生として記録されます。
条件を満たした再生はディスク上の SQLite に書き込まれ、ポート 39421 の自己完結ダッシュボードで表示されます。
サーバーが OpenSubsonic の playbackReport 拡張に対応している場合は自動的に使用され、位置と長さの追跡がより正確になります。
コピーして貼り付け、ポート 39421 を開くだけ。更新の再現性のためバージョンタグの固定を推奨。
services:
navidrome-stat:
image: stepaniah/navidrome-statistic:v0.8.1
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.8.1 NAVIDROME_URL=https://navidrome.example.com
NAVIDROME_USER=example_user
NAVIDROME_PASS=change-me
STATS_API_TOKEN=use-a-long-random-value STATS_API_TOKEN を設定した場合、初回アクセス時にログイン画面で 1 度入力するだけ——ブラウザが保持するのは token ではなく HttpOnly セッション Cookie です。
設定の完全なリファレンスリスニング履歴は自分のボリューム内の 1 つの SQLite ファイルにのみ存在します。
設定ページにユーザー単位の JSON エクスポート、インポート、削除を内蔵。
STATS_API_TOKEN を設定するとダッシュボードと API にログインが必要になります——セッションは HttpOnly Cookie を使用。
コンテナが外部と通信する相手は、あなたの Navidrome サーバーだけです。
同じサーバー群を複数インスタンスでポーリングすると、再生が重複カウントされます。
データベースと設定ページに保存された認証情報は暗号化されていません——機密情報と同様にボリュームを保護してください。
リモートからアクセスする場合は、HTTPS リバースプロキシの背後に置いてください。
Subsonic 互換のクライアントなら何でも——DSub、Symfonium、Feishin、play:Sub、substreamer、Navidrome の Web UI など。統計はサーバーの getNowPlaying エンドポイントから取得するため、クライアント側には何もインストール不要です。
はい。設定 → 接続 で各サーバーを追加します。再生はソースごとに記録され、ダッシュボードでサーバー別に絞り込めます。
有効なリスニング時間の累計が PLAY_THRESHOLD_SEC(既定 30 秒)を超える必要があります。一時停止と欠落区間は除外され、チェックポイントは同じレコードを更新します。しきい値に達しないまま終わったセッションは再生ではなく試行として保存されます。
Subsonic API を話すサーバーなら動作しますが、開発とテストは Navidrome 基準で行っています。サーバーが対応していれば OpenSubsonic 拡張も自動的に使用します。
Last.fm は scrobble を他人のクラウドに記録します。Maloja はセルフホストですが、クライアントが scrobble を送信する前提です。Navidrome Stat はクライアントの協力を一切必要とせず、サーバー自身の now-playing フィードを観測するため、すべての Subsonic クライアントが既定で対象になり、データも自分のディスクに留まります。
自分のディスク上、コンテナの /data ボリューム内の 1 つの SQLite ファイルです。設定ページから JSON としてエクスポート、別の場所へのインポート、ユーザーごとの履歴削除ができます。
小さなコンテナ 1 つ、SQLite ファイル 1 つ、10 秒間隔のポーリング。Raspberry Pi でも快適に動きます。