Featured image of post Jellyfinではじめる自宅音楽ロッカー

Jellyfinではじめる自宅音楽ロッカー

あるいはGoogle Play Musicへの依存を断つ回(効果には個人差があります)。

追記: 続編あります

3年ぶりに作り直していい感じになりました。音楽専門ならこっちの方がいい気がします。
自宅音楽ロッカー再考

tl;dr

  • 自宅のNextcloudサーバにJellyfinを同居させた
    • ファイルの追加が楽になる
  • 手持ちの音楽を全部突っ込んだのでGPMのロッカー要らず
  • やったね!

きっかけ

元はGoogle Play Musicの利用端末の台数が最大で10台、そして登録を解除できるのは年に4台とかいう クソ 仕様により自宅のPCが弾かれてしまった(おたくすぐ端末が増えたり軽率に初期化再セットアップするのに加えて、GPM側の端末数の管理も割とガバガバな節があり、周りでも見かけがち)ため、新たに楽曲を追加できなくなってしまった回が年明けくらいに発生したあたりに遡ります。

なんかYouTube Musicにも同様のロッカー機能をつけるとかつけないとか、最終的にはそっちに統合するとかしないとかいう噂程度の話もあり、まあそれらを待っても良かったんですが、よく考えたら未来の話をされても既に現時点で新曲を突っ込めないという問題に直面していたので、いい加減うんざりだ!という感じで自宅にメディアサーバを用意してしまおうという機運が高まっていました。

あとはまあ、どうせ自宅の回線も強いし、 モバイル回線もそこそこ強くて余裕のある契約 だったので、まあ最適化とかなくてもパワーで殴っておしまいでしょみたいなところも後押ししてくれたと思います。元の音源もmp3だし大したことない。

メディアサーバの選定

Emby

選定というか、最初から Emby が面白そうだなという感じでそのつもりでいました。WebUIの雰囲気で決めたような気もします。

あとはDockerで動かそうかなと思っていたので、手頃な docker-compose.yml の参考になるやつないかな~と探していたところ、あるリポジトリにお目当てのものを見つけたのですが、「もうこのリポジトリはメンテナンスしてないよ。Jellyfin向けのならこっちにあるよ。」みたいな但し書きがついていました。はて、Jellyfinとは?

Jellyfin

あるユーザが Emby 3.6 のソースコードが公開されないことをIssueで尋ねたところ、創立者自身によって「もうコア部分のソースは公開しない」という回答がされた模様(既に当該Issueは削除されているが、 WayBack Machine によって当時のやり取りを確認することができる)。

Jellyfin は、そんなEmbyのソースが公開されていた最後のバージョンである 3.5.2 からののforkとして、2018年の12月に開始されたばかりのプロジェクトです。自由ソフトウェアの精神でEmbyの開発を継続することをモットーに、 .NET Coreへの移植による完全なクロスプラットフォームのサポートのほか、(Embyに存在していたような)さまざまな制限/プレミアムアカウントや機能/隠れた意図などは存在しないこと、を謳い、完全にコミュニティによって開発/ドキュメント/翻訳/サポートを提供される最高のメディアシステムを全てのユーザに、としています。

なんだかこっちのほうが面白そうじゃん、となったのでJellyfinを使ってみることにしました。

導入編

ドキュメントがきちんと整備されている ので、あんまり書くことはなかった。わたしは結局Ubuntu用のリポジトリを利用しました。

リバースプロキシを使用する場合 についてもきちんとまとまっているので、他の何かを動かしたことがあれば簡単だと思います。強いて言うなら、別に初回セットアップの前にこのへんは済ませても大丈夫です。

サルベージ編

さて、サーバが用意できても肝心のコンテンツがないと何も始まらないので、結局GPMのロッカーに上げてる楽曲群を引き上げてこないといけないんですよね。そのためにはサポートに問い合わせて例の10台制限のリセットをかけてもらうしかないです。

春休みに入り生活リズムが崩壊したわたしは、平日の日中のみの日本語チャットサポートを受けるにはタイミングが合わず、 メールでのサポートのボタンは壊れており 、結果的に日曜の早朝に英語のチャットサポートを使うことになりました。

最初にフォームにある程度状況を書けていれば、「問い合わせ内容はこういう問題があるってことでいいんだよね?」みたいな確認から、「端末の解除は年4台までできるけど、端末の管理は試した?」とかのトラブルシューティングを経て、「じゃあこっち側で制限のリセットをするね」という感じになった。やりとり自体は5分程度かつ、こっちからは殆どYes/Noで答えても大丈夫なくらいで良かったので、最初の問い合わせ内容はGoogle翻訳とか使ってでもきちんと問題を説明できるように書いておくのがよい。まあ日本語でサポートが受けられる時間帯に受けるのがベストだと思いますけど…。

あと、リセットの実行待ちの間に「今日はどんな一日だった?」とか「週末はどうする予定?」とか聞かれて文化の違いを感じましたね(ちゃんと答えたけど)…。日本語のチャットサポートだとあんまり客のプライベートになんて踏み込んでこなさそうじゃない…?

まあそんなこんなで無事に端末制限をリセットしてもらえたので、Music Managerでライブラリのダウンロードを仕掛けておきました。うっかりシャットダウンして寝てしまったりしたので時間はわからないけど、4500曲、43GB、380アルバムを無事に引き上げることが出来ました。同人音楽CDとDLリリースが主なので、聴き放題系のサービスに無いのよね…

追記: Music Manager でダウンロードしたらフォルダ名の文字数制限か何かでゲームのサントラ数枚(シリーズの別作品たち)が全部同じフォルダに突っ込まれて落ちてきたので気をつけたいですね(一敗)

連携・運用編

一度テスト用に別のサーバで軽く動かしたんですが、サーバが自分の手元(同じLAN内とか)にないときってファイルどう送りつけようみたいな問題があるんですよね。SFTPめちゃ遅いし。なんならWebDAVとか使えると楽でいいですよね。GPM使ってたときはD&Dできたので、気軽さがいい感じになると嬉しいです。でもEmbyやJellyfinには今のところそういったメディアの追加はないっぽく、残念。

と思ってたところ、 Embyの紹介記事 の中で次のような記述を見つけました。

Emby Server上の複数のディレクトリをライブラリーとして登録できます。たとえばNextcloudサーバー上のディレクトリを指定すれば,Nextcloud上にアップロードしたファイルをEmbyから配信することも可能になるのです。

そうじゃん、Nextcloudと同居させればアップロードやファイル管理は楽になるし、自宅のNextcloudが動いているサーバはストレージにもまだ余裕があるぞ、と。そんな感じでNextcloud内の特定フォルダをJellyfin側からライブラリのソースとして指定してみました。

普通にインストールした場合は jellyfin ユーザが作成されるので、Nextcloudの管理ユーザと同じグループ (www-data) に突っ込んでJellyfinを再起動してあげればアクセス権はなんとかなります(Nextcloud的にはセキュリティ上あまり推奨されないはず?)。しました。

そんで先ほどサルベージしてきたデータをNextcloudに放り込みます。流石にブラウザから43GBも投げ込むのは尋常ではないので、素直に NextcloudのPC用クライアント を使って同期という体でフォルダに放り込みました。

あとは適当にスキャンかけとけばメタデータも含めていい感じになってくれるはずです。なりました。やったね。

活用編

モバイルアプリは絶賛開発中という感じで、beta6は再生押した瞬間にクラッシュしたけどbeta7で普通に使えるようになったとか、過渡期特有の何かを楽しんでいます(?)。

ドキュメントの Client appsリポジトリ を見る限り、iOS版は更新が完全に途絶えてて一旦作り直す必要があるけどやる人がいない、って状態っぽいですね…。

これから

ひとまず、今すぐにでもGoogle Play Musicのロッカー機能を使うのをやめられる状態まで持ってこれたので、これから実際にGPM断ちをしてみるかなあという感じです。

あとは、Jellyfinの立ち位置として「EmbyやPlexの対抗としてのフリーなメディアサーバー」というのがあるので、音楽だけでなく動画とかも扱ったほうが面白いのかなあとは思いますが、管理したい動画がないんですよね…。

あとは、Embyの頃からそうらしいんですが日本語のロケール自体が存在しません。この手のメディアサーバーは初めてなのと、これからもそこまでヘビーに使う予定は無いので、自分で翻訳を投げるかどうかは…どうなんだろう。

追記1 (2019-03-24)

ログイン画面なんですが、デフォルトではWindowsみたくユーザを一覧から選んで…みたいな感じになります。セキュリティやプライバシー上の理由などでこれが嫌な人もいるかも知れません。わたしもそう。

対策は用意してあって、管理権限があるユーザでWebUIから Dashboard -> Users -> ユーザ名 と設定を辿って一番下にある Hide this user from login screens にチェックを入れるとよいです。

すると当該ユーザが選択肢から消え、公開されているユーザが居ない場合は Manual login ボタンと同じくユーザ名からフォームに入力するようになります。よかったですね。

追記2 (2019-11-02)

この記事は啓蒙/紹介よりも日記寄りだったんですが、そんなでもJellyfinに興味を持った人向けに、半年ちょっと使って感じたあれそれを(主にGPMとの比較で)追加しておきます。

長所

  • 接続するデバイスの台数に上限がない
  • アップロード可能な曲数に制限がない
  • 他のユーザがアップロードしたやつに差し替えられたりしない
  • Nextcloudと同居させるとファイル管理が便利
  • 動画も扱える
  • インストールは簡単
  • メタデータはそれなりに拾える

短所

  • モバイル版: 他の音楽プレイヤーのノリで再生中にタスクを閉じてしまうとそのまま落ちる
  • モバイル版: 通知でアーティスト名と曲タイトルの表示が逆
  • モバイル版: WearOSでジャケットが表示されない
  • 再生にはネットワーク接続が必須(ストリーミングのみ)
    • ダウンロードとかオフライン再生とかはない
  • 日本語ロケールはない
Built with Hugo
テーマ StackJimmy によって設計されています。