映画の手動追加はやめよう:HomeLabにDockerでJellyseerrをデプロイする方法

HomeLab tutorial - IT technology blog
HomeLab tutorial - IT technology blog

メディア管理の手動対応という悩み

メディアライブラリやImmichをDockerでデプロイして管理している写真・動画の規模が大きくなってくると、管理は楽しい趣味から次第に面倒な作業へと変わっていきます。HomeLabでJellyfinや、Dockerの「Arr」スタックでホームメディアを自動化するためのSonarr、Radarrを運用している方なら、その苦労がわかるはずです。友人や家族から特定の映画が見たいと連絡が来るたびに、Radarrにログインして検索し、品質プロファイルを選んでダウンロードを開始する。これでも機能はしますが、手間がかかり、時間を浪費する非効率なプロセスです。

Jellyseerrは、自動化ツールのための洗練されたディスカバリーレイヤーとして機能することで、この問題を解決します。ユーザーはあなたに連絡する代わりに、Netflix風のインターフェースを閲覧して「リクエスト」をクリックするだけです。あとはシステムがすべて処理してくれます。この構成に移行して以来、私の日常的な管理作業はほぼゼロになりました。通常、メモリ使用量は200MB未満であり、どんなサーバーにとっても軽量な追加ツールとなります。

なぜOverseerrではなくJellyseerrなのか?

Overseerrは素晴らしいツールですが、もともとPlex専用に構築されたものです。JellyseerrはJellyfinやEmbyに最適化された専用のフォーク版です。Jellyfinのライブラリと深く統合され、すでに所有しているコンテンツを正確に把握できます。RadarrやSonarrとの連携には同じ強力なロジックを使用しているため、オープンソース愛好家にとっては最適な選択肢です。

インストール:Docker Composeによるデプロイ

Jellyseerrを実行するにはDockerが最適です。ベースOSをクリーンに保位、アップデートも非常に簡単になります。Docker Composeを使用すれば、ネットワークやストレージの設定を一つのシンプルなファイルで管理できます。

1. フォルダの準備

まず、Jellyseerrのデータを保存する場所を作成します。これにより、コンテナをアップデートしても設定やユーザーデータベースが消えるのを防げますが、定期的にResticで作る、HomeLab向けの堅牢な3-2-1バックアップ戦略を実施することをお勧めします。

mkdir -p ~/homelab/jellyseerr/config
cd ~/homelab/jellyseerr

2. Docker Composeの設定

docker-compose.ymlファイルを作成します。今回はFallenBagel氏がメンテナンスしている公式イメージを使用します。この設定は安定しており、本番環境でもそのまま利用可能です。

services:
    jellyseerr:
        image: fallenbagel/jellyseerr:latest
        container_name: jellyseerr
        environment:
            - LOG_LEVEL=debug
            - TZ=Asia/Tokyo # ローカルのタイムゾーンに変更
        ports:
            - 5055:5055
        volumes:
            - ./config:/app/config
        restart: unless-stopped

ポート5055に注意してください。もし別のサービスで既に使用している場合は、左側の数字を変更してください(例:5060:5055)。TZ変数を正しく設定することで、リクエスト履歴の時間が正確に表示されるようになります。

3. 起動

以下のコマンド一つで、バックグラウンドでコンテナを起動します:

docker compose up -d

コンテナのステータスを確認して、すべてが正常に動作しているかチェックします:

docker ps | grep jellyseerr

各ツールの連携:インテグレーション

http://YOUR_SERVER_IP:5055 にアクセスしてセットアップウィザードを開始します。ウィザードは直感的ですが、バックエンドの接続には正しく動作させるための特定の詳細情報が必要です。

Jellyfinサーバーとの連携

Jellyseerrは、ライブラリに何があるかを知るためにJellyfinと通信する必要があります。サーバーのURLとAPIキーが必要です。APIキーは、Jellyfinのダッシュボード > APIキーから作成できます。

  • Server URL: サーバーのローカルIPを使用します。Dockerネットワークを共有している場合は、http://jellyfin:8096を使用できます。
  • Syncing: 同期するライブラリ(「4K映画」や「キッズ向けテレビ番組」など)を選択します。これにより、すでに所有している『THE BATMAN-ザ・バットマン-』をユーザーが再度リクエストするのを防げます。

RadarrとSonarrの自動化

ここからが本番です。Settings > Servicesに移動し、ダウンローダーを追加します。Radarrの場合、Radarr UIの**Settings > General**にあるAPIキーが必要です。

サーバーを追加する際は、**Quality Profile**(1080pなど)と**Root Folder**を選択する必要があります。専用の「Requests」プロファイルを作成することをお勧めします。これにより、リクエストされたファイルのサイズを5GBなどに制限でき、ユーザーが誤って80GBの4K Remuxでハードディスクを埋め尽くしてしまうのを防ぐことができます。

ワークフロー全体のテスト

設定が完了すると、Jellyseerrがライブラリのスキャンを開始します。1,000本程度の映画コレクションであれば、通常5〜10分ほどかかります。では、所有していない映画を検索して**Request**を押してみましょう。

自動化の仕組みを確認してください。JellyseerrがRadarrに指示を送り、RadarrがトレントやNZBを見つけてダウンロードを開始します。ファイルが完成し、Jellyfinがスキャンを終えると、Jellyseerrは自動的にリクエストを「利用可能(Available)」としてマークします。

トラブルシューティングとログ

もしRadarrにリクエストが表示されない場合は、すぐにログを確認してください。以下のコマンドでリアルタイムのエラーを確認できます:

docker logs -f jellyseerr

ほとんどの問題は、APIキーの単純な入力ミスや、異なるDockerネットワーク間でコンテナ同士が通信できないことが原因です。最善の結果を得るために、すべてのメディア系コンテナが同じブリッジネットワーク上にあることを確認してください。

仕上げのプロ設定

通知設定も忘れずに行いましょう。Settings > NotificationsからDiscordのウェブフック(Webhook)や、Gotifyをセルフホストして即時アラートを受け取る設定を連携できます。友人が番組をリクエストしたときや、視聴可能になったときに通知を受け取ることができます。これにより、HomeLabがただのDIYプロジェクトではなく、プレミアムなプライベート・ストリーミング・サービスのように感じられるようになります。さらに、AudiobookshelfとDockerでプロ級のオーディオブック&電子書籍サーバーを構築することで、メディア体験をさらに広げることも可能です。

Share: