- 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。年・サーバー・ユーザー・タイムゾーンで範囲を絞り、URL で共有できます。
アルバムアートは認証付き・容量制限付きのキャッシュを経由します——ライブラリは非公開のまま。
1,024 枚のカバーをキャッシュ · 128 MB
すべてはあなたが所有する 1 つの SQLite ファイルに。ユーザーごとのエクスポート、インポート、削除。任意のトークン認証。テレメトリーなし。
9 つのパレットファミリー——Catppuccin、Nord、Dracula、Tokyo Night、Gruvbox、Solarized など——それぞれ明暗両バリアントを同梱。
简体中文、繁體中文、English、日本語、Deutsch、Français、Español。
9 つのパレットファミリー、明暗のペアで、ダッシュボード全体が即座に切り替わります。クリックして試してみてください:
1 ページに 1 年分:合計、連続日数、そして一年を伴った曲たち。
年間トップ曲
Blue in Green
サンプルデータ——実際の数字はあなた自身のライブラリから。
クライアントのプラグインもアカウント登録もクラウドも不要。小さなコンテナが 1 つ、音楽サーバーのそばで動くだけ。
10 秒ごと(設定可能)に Subsonic API 経由で各 Navidrome サーバーの再生状況を確認——インターフェースはすでにあります。
一時停止や途切れはカウントされません。有効なリスニング時間がしきい値(既定 30 秒)を超えて初めて 1 回の再生として記録されます。
条件を満たした再生はディスク上の SQLite に書き込まれ、ポート 39421 の自己完結ダッシュボードで表示されます。
サーバーが OpenSubsonic の playbackReport 拡張に対応している場合は自動的に使用され、位置と長さの追跡がより正確になります。さらに、Navidrome のスマートプレイリストを監視して、インストール前のリスニング履歴を推定再生として取り込むこともできます。
コピーして貼り付け、ポート 39421 を開くだけ。更新の再現性のためバージョンタグの固定を推奨。
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 STATS_API_TOKEN を設定した場合、初回アクセス時にログイン画面で 1 度入力するだけ——ブラウザが保持するのは token ではなく HttpOnly セッション Cookie です。
設定の完全なリファレンスリスニング履歴は自分のボリューム内の 1 つの SQLite ファイルにのみ存在します。
設定ページにユーザー単位の JSON エクスポート、インポート、削除を内蔵。
STATS_API_TOKEN を設定するとダッシュボードと API にログインが必要になります——セッションは HttpOnly Cookie を使用。
コンテナが外部と通信する相手は、あなたの Navidrome サーバーだけです。
同じサーバー群を複数インスタンスでポーリングすると、再生が重複カウントされます。
リスニング履歴は SQLite に平文で保存されます。設定ページで保存した認証情報はローカルのキーファイルで暗号化されます——これはバックアップの軽い覗き見を防ぐもので、侵害されたホストまでは守れません。
リモートからアクセスする場合は、HTTPS リバースプロキシの背後に置いてください。
Subsonic 互換のクライアントなら何でも——DSub、Symfonium、Feishin、play:Sub、substreamer、Navidrome の Web UI など。統計はサーバーの getNowPlaying エンドポイントから取得するため、クライアント側には何もインストール不要です。
はい。設定 → 接続 で各サーバーを追加します。再生はソースごとに記録され、ダッシュボードはサーバーやユーザーで絞り込めます。
はい。保存済みの接続を Navidrome のスマートプレイリスト(「最近再生した曲」などの .nsp)に向けると、各曲の最終再生タイムスタンプから推定再生を 1 件ずつ取り込みます。再実行で二重カウントは起きず、ライブポーリングが既にカバーした再生はスキップされ、インストール前のリスニングだけを取り込みます。
はい。ダッシュボードのフィルタ、アーティスト・アルバム詳細ページ、年間まとめの範囲は URL に保持されます——再読み込みしても表示は維持され、コピーしたリンクで同じ画面が開きます。クライアント詳細の名前は POST リクエストで送信され、共有可能な URL には現れません。
有効なリスニング時間の累計が PLAY_THRESHOLD_SEC(既定 30 秒)を超える必要があります。一時停止と欠落区間は除外され、チェックポイントは同じレコードを更新します。しきい値に達しないまま終わったセッションは再生ではなく試行として保存されます。
設定 → 環境設定で、アーティスト表記を統合または分割できます。分割モードでは再生ごとに各アーティストを 1 回ずつ数えますが、曲数・総再生数・合計リスニング時間は変わりません。
Subsonic API を話すサーバーなら動作しますが、開発とテストは Navidrome 基準で行っています。サーバーが対応していれば OpenSubsonic 拡張も自動的に使用します。
Last.fm は scrobble を他人のクラウドに記録します。Maloja はセルフホストですが、クライアントが scrobble を送信する前提です。Navidrome Stat はクライアントの協力を一切必要とせず、サーバー自身の now-playing フィードを観測するため、すべての Subsonic クライアントが既定で対象になり、データも自分のディスクに留まります。
自分のディスク上、コンテナの /data ボリューム内の 1 つの SQLite ファイルです。設定ページから JSON としてエクスポート、別の場所へのインポート、ユーザーごとの履歴削除ができます。
小さなコンテナ 1 つ、SQLite ファイル 1 つ、10 秒間隔のポーリング。Raspberry Pi でも快適に動きます。