3年ぶりに再燃したので。
環境の変化
わたしも 3年前に Jellyfin を触った頃 とはだいぶ状況が変わりました。
- 引っ越した
- いまは自宅鯖を直で公開したいとは思っていない
- 自宅NWが実質二重ルータ状態なのもあってややこしい
- 自宅鯖で適当に動かしているものを外から触りたかったらVPN張ってる
- いまは自宅鯖を直で公開したいとは思っていない
- Spotify に主軸を移した
- 自分が好きそうな知らん曲をどんどんレコメンドされて非常に良い
- でも配信に乗ってないけどたまに聴きたい曲はまだまだある
- 買い漁った同人CDとかWebレーベルのフリーリリースとか…
- Google Play Music が死んだ
- YouTube Music は音楽ロッカーとしては使い勝手が悪すぎる
- アルバム一覧でスクロールしてるときの挙動とか最悪
- YouTube Music は音楽ロッカーとしては使い勝手が悪すぎる
しばらくは気にしてなかったんですが、やっぱり3つ目があんまりにもあんまりなのでもう一度自宅音楽ロッカーの機運かなあと。
メディアサーバ選定
色々あったと思うんですけど忘れたので、まずは検索して r/selfhosted のいい感じのコメント欄 から情報収集してました。
いろいろと悪くない選択肢は出てきたんですが、結果的には Subsonic の派生やAPI互換のあるサーバソフトウェアに絞りました。クライアントの選択肢が多いに越したことはなかったのと、途中で見つけたモバイルクライアントの substreamer がかなりいい感じだったので…
選外: Funkwhale
fediverse で聞いたらまっさきに名前が挙がりそうだが、わたしは別にライブラリを共有しようとは1mmも思っておらず、連合する理由がなかったので。
選外: Jpsonic
https://tesshu.com/jpsonic/what-is-jpsonic
- Subsonic -> Libresonic -> Airsonic -> Jpsonic、らしい
- 日本語対応の強化は気になる
- Java製…
- WebUI が時代遅れすぎる
- 一応 Docker で動かせないことはなさそうだが…?
採用: Navidrome
- navidrome/navidrome: 🎧☁️ Modern Music Server and Streamer compatible with Subsonic/Airsonic
- Go で書かれてる Subsonic/Airsonic 互換のストリーミングサーバー
- Material UI ベースのモダンでレスポンシブな WebUI
- 公式ドキュメント に Docker でのセットアップ方法 がある
- それでいて軽量っぽい
- ffmpeg を利用したトランスコードに対応
やっぱりセットアップが簡単でWebUIがいい感じだと嬉しいですからね。
立てる
公式ドキュメント を参考にしたら1分で立ちました。
Navidrome はセキュリティ上の理由で D&D によるファイルの追加だとか、タグの編集とかは実装してないっぽいので、予めタグを整えてから他の手段で転送する必要があります。今回は自宅鯖なのでライブラリは Samba 経由で Windows マシンからぽいぽい放り込んで終わりです。
GPM の名残でディスク番号が適切に入ってなかった(アルバム名の末尾に [Disc 1]
とか入れてた)のをゴリゴリ直しながら入れていきます。Mp3tag とか久々に使ったわ。
ところでコンピレーションアルバムとかにタグ付ける際は アルバムアーティスト
を V.A. でもいいのでアルバム内できちんと統一しておくことをおすすめします。フォルダ関係なくタグで管理されるので、空欄だとアーティストの数だけアルバムが空中分解してライブラリが終わります(二敗)。
外部接続
モバイルアプリがあるからにはモバイル端末からも使いたいけど、音楽聞くたびにVPN張るのはなあ…となったので、最近 ngrok 的な使い方をして便利だなあと思っていた Cloudflare Tunnel を自前のドメインで利用することにした。
NavidromeやSubsonicみたいな音楽しか流さないようなサービスでは問題にならないが、Cloudflare Tunnel の通信量はCDNのときと同様に Cloudflare の定める maximum file upload size
に従うため、Free/Pro プランではファイルあたりの容量は 100MB までに制限される。つまり自宅の Nextcloud サーバーをどでかいファイル配布用途で外向きに公開しようとすると詰む(一敗)。Emby や Jellyfin で動画とか管理する場合も気をつけたほうがよさそう。
クライアント
デスクトップクライアント
Sonixd
https://github.com/jeffvli/sonixd
Subsonic と Jellyfin に接続できるクロスプラットフォーム対応のデスクトップクライアント。デスクトップ版の Spotify に近い感じの操作性で良い。
ただ、現状ディスク番号をうまいこと数え切れなくて Disc 2 以降が表示されない。
モバイルクライアント
死ぬほどあるんだけど、今も更新されてて見た目がモダンなやつに絞りました。
Substreamer
見た目もそこそこ良い、オフライン再生も対応、Chromecastに投げることもできる、といい感じなモバイルクライアント。通知の挙動が若干怪しい(アプリ閉じた後もちょくちょく復活する)?気がする
Symfonium
Material You っぽいモダンなUI、Plex/Emby/Jellyfin/Subsonic/Kodi に対応という幅広さが特徴。製品版はアプリ内購入(450円)で1週間試用あり。
Subtracks
https://github.com/austinried/subtracks
ここに挙げた中では唯一?FLOSSとして公開・開発がされている。微妙に Spotify を意識したんだろうなあという感じのUIで悪くない。オフライン再生は coming soon 扱い(ボタンはあるがグレーアウトしている)。実装されたらこれ一本で良い気がする。
とりあえず今はデスクトップでは Navidrome 付属の WebUI を、Android では Subtracks を使っています。