Navidromeの構築メモ

段階的に構築進める想定なのでちょっとずつメモ増やしていく予定

Navidrome

[www.navidrome.org](https://www.navidrome.org/)

SubsonicAPI対応の音楽ストリーミングサーバ。

同種のソフトを比較しているところでサーバのリソース消費がかなり少ないという評価だったので選択。

[yamanekovillage.com](https://yamanekovillage.com/articles/selfhosted_navidrome/)

最初のファイルスキャン中は結構激しく動いている感じだったけどその後はおとなしいので、録画サーバからほぼ単純NASになってリソースがあまり気味のサーバで動かすことにした。

スマホのストレージを節約しつつ大量の音楽を聴けるようにしようとするとSpotifyとか使うかセフルホストのミュージックサーバ立てるかなんだけど、セルフホストのミュージックサーバてててみることにした。
ブラウザから再生するときもリプレイゲインを有効に出来るので良い。
リプレイゲインが有効なプレーヤーが必須なので個人的にはこの機能がかなり大きい。

スマホからの再生に関してはこれまでPowerAmpを使っていたんだけど、そのままでは連係に使えなさそうなのでクライアントはSymphoniumあたりを検討中。
外からの接続に関してはCloudflare Tunnel経由を想定しているけどうまく連係出来るかな?

last.fmとの連係

last.fmやListenBrainzとの連係も可能。

last.fmと連携する場合はAPIキーを発行して有効にする必要がある。

[www.navidrome.org](https://www.navidrome.org/docs/usage/integration/external-services/)

dockerで立てる場合は

  • ND_LASTFM_ENABLED
  • ND_LASTFM_APIKEY
  • ND_LASTFM_SECRET

を指定する必要がある。
APIKEYとSECRETはlast.fmで登録したら発行される。

指定してNavidromeの管理者から個人設定で「Last.fmへscrobbleする」が有効になっているので、これをONにしてlast.fmの接続確認が出るのでOKすれば完了。
last.fmの設定→Applicationsに登録した名称のアプリケーションがConnected Applicationsに登録されていればOK

各種Configはここを確認

[www.navidrome.org](https://www.navidrome.org/docs/usage/configuration/options/#configuration-file)

last.fmのAPI Keyの詳細、あとから見たい場合はここから見られるみたい
https://www.last.fm/api/accounts

外部アクセス

家の外からのアクセスについてはCloudflare Tunnel経由でAccess認証通してつながるようにしたい。
ということでサクッとnavidrome.ドメイン名という感じのサブドメイン定義してAccess設定をして、Tunnelに先程のサブドメインとローカルのNavidromeアドレスを割り当てて公開。
前やってしまったけど、Access設定する前にTunnelで割り当ててしまうとAccess設定するまでアクセスし放題になるので要注意。

※ Cloudflare Tunnel経由でSymphoniumでアクセスしようとするとうまくいかないどうもバグっぽいことがフォーラムに記載があるけどどうなんだろ

SymphoniumのCloudflare Tunnelとの連係について

Symphoniumのメディアプロバイダ設定でSubsonicのプロキシ認証設定にカスタムヘッダのCF-Access-Client-Id、CF-Access-Client-Secretを設定する必要がある。
これはCloudflare Zero Trust、というかCloudflare Accessでサービストークンを発行して、そのクライアントID、クライアントシークレットを設定する形になる。

設定順としては

  • サービストークンの発行(サービス資格情報からサービストークンを作成)
  • Accessのアプリケーション設定でアクセスポリシーの先頭に新規ポリシーを追加(Service Auth設定でポリシーを作成して、先程作ったService Tokenをルールに設定)

これを行ったうえで、symphoniumのプロキシ認証でカスタムヘッダにCF-Access-Client-Id、CF-Access-Client-Secretを指定。値はCloudflare Accessでトークン発行したときの値を設定
こんな感じ

カスタムヘッダーの設定

これで外からSymphoniumでアクセス出来た。
課題としては屋内からでもTunnel経由になってしまうのでLAN内で完結しなくなること。
そろそろちゃんと家庭内DNS整備してフォールバックするような環境が必要か?
→ 「優先する接続」をローカルのIPアドレスに、予備の接続をパブリックなドメイン接続に設定しておけば良さそうなのでスマホはそういう設定にしようかと思っている。今のところ家の中のタブレットだけ設定しているから影響がわからん

comments powered by Disqus