VPSにJellyfinを導入:自分専用のメディアサーバーを構築

読了時間 6分
Tropic
VPSにJellyfinを導入:自分専用のメディアサーバーを構築

VPSにJellyfinを導入:自分専用のメディアサーバーを作る方法

動画を詰め込んだフォルダーは、便利なメディアライブラリとは言いにくいものです。ファイル名が統一されていなかったり、字幕が別ファイルになっていたり、見たいエピソードを手作業で探したりする必要があります。Jellyfinは、こうしたアーカイブを、ポスター、作品情報、ユーザープロフィール、続きから再生する機能を備えた個人用ストリーミングサービスへと変えます。

一方で、Jellyfinはサブスクリプションを販売せず、完成済みのコンテンツカタログも提供しません。自分で用意したファイルを使用し、自宅のパソコン、NAS、またはVPS上で動作します。以下では、主な機能、サーバー要件、ドメインとHTTPSを利用してUbuntuへインストールする方法を説明します。

Jellyfinとは何か、何のために使うのか

Jellyfinは、無料で利用できるオープンソースのメディアサーバーです。サーバーが映画、ドラマ、音楽、写真などのコンテンツをインデックス化し、クライアントアプリがスマートフォン、パソコン、テレビでそれらを再生します。

フォルダーをスキャンすると、Jellyfinはポスターや作品情報を取得し、ドラマをシーズンごとに整理し、再生位置を記録して「視聴を続ける」セクションを表示します。家族ごとに独立したローカルプロフィールを作成し、ライブラリへのアクセスを制限したり、ペアレンタルコントロールを設定したりすることもできます。Quick Connectを使えば、長いパスワードを入力せず、短いコードでテレビにログインできます。

Android、iOS、Android TV、Roku、webOS、Tizen、Xbox、パソコン向けのクライアントが用意されています。Webインターフェースのほか、Kodiとの連携にも対応しています。

さらに、Jellyfinは音楽、IPTV、テレビチューナー、テレビ番組の録画もサポートします。SyncPlayは複数ユーザーの再生を同期し、プラグインを使えば字幕、新しいメタデータ取得元、各種連携機能を追加できます。

Jellyfinが映画を自動で検索したりダウンロードしたりすることはありません。サーバー所有者がすでに保有しているコンテンツを整理し、配信するためのソフトウェアです。

JellyfinとPlex:主な違い

どちらもローカルのコレクションをメディアサービスに変える製品ですが、採用しているモデルは異なります。

項目JellyfinPlex
ソースコードオープンソースプロプライエタリ
プレミアム機能サーバーと公式クライアントに有料プランはない一部の機能は料金プランに依存する
中央アカウント不要提供元のエコシステムを利用する
リモートアクセス所有者がドメイン、リバースプロキシ、VPNを設定するより多くの仕組みがあらかじめ用意されている
データの管理権最大限インフラの一部を提供元が管理する

Jellyfinは、独立性、プライバシー、サブスクリプション不要という点を重視する人に選ばれています。一方、できるだけ簡単に導入したい場合や、すべての端末で均一に洗練されたアプリを重視する場合は、Plexのほうが便利なことがあります。

Direct Playとトランスコード:サーバーに負荷をかけるもの

Jellyfinの性能は、ライブラリの大きさよりも再生方法に大きく左右されます。

モード処理内容負荷
Direct Playサーバーが元のファイルをそのまま送信する低い
Direct Streamコンテナまたは個別のトラックを変更する低い、または中程度
Transcodingコーデック、解像度、ビットレートをリアルタイムで変更する高い

テレビがファイルのコーデック、音声、字幕に対応していれば、サーバーはCPUをほとんど消費しません。クライアントが形式を扱えない場合、通信環境に合わせてビットレートを下げる必要がある場合、字幕を映像に焼き込む必要がある場合に問題が発生します。その際、JellyfinはFFmpegを起動し、動画をリアルタイムでトランスコードします。

特に負荷が高いのは、4K、HEVC、HDR、およびHDRからSDRへの変換です。一般的なGPUなしのVPSは、仮想CPUコアが多くても処理しきれないことがあります。そのため、互換性のある形式とDirect Playを使うほうが、上位プランへ変更するより大きな節約になる場合があります。

Jellyfinに必要なサーバー構成

通常のインストールに対する公式の推奨値は、約8 GBのRAMです。グラフィカルインターフェースのないLinuxでは、小規模なサーバーを4 GBで動かすこともできます。システム、データベース、画像、キャッシュ、一時ファイルには高速なディスクが必要です。メディアライブラリは別に保存され、通常はストレージ容量の大部分を占めます。

利用シナリオ初期構成補足
音楽と1080p Direct Playを1ストリーム2 vCPU、4 GB RAMネットワークとディスクの速度がより重要
小規模な家族用メディアライブラリ4 vCPU、8 GB RAM互換性のある形式が望ましい
ときどき1080pをトランスコード高性能な4~8 vCPU、またはGPU負荷はコーデックによって異なる
複数の4K/HDRストリーム最新のIntel iGPU、またはグラフィックカード一般的なCPUのみのVPSには不向き

通信量も考慮してください。20 Mbpsのストリームは、1時間あたり約9 GBのデータを転送します。毎日視聴すると、月間使用量はすぐに数百GBへ達します。

自宅サーバーとVPSのどちらを選ぶべきか

数TB規模のコレクションや、定期的なハードウェアトランスコードには、自宅のミニPCやNASのほうが経済的です。大容量ドライブを搭載し、Intel Quick Sync対応プロセッサーを選べますが、リモートアクセスは電力、自宅回線、グローバルIPアドレスの有無に左右されます。

VPSはグローバルアドレスと安定した回線を持ち、24時間稼働します。音楽、小規模な動画ライブラリ、Direct Play、異なる場所にいるユーザーには便利です。制約はストレージ料金と、一般的なプランにGPUがないことです。

ハイブリッド構成もあります。ファイルは自宅に残し、VPSを安全な入口として使用する方法です。グローバルIPv4がない環境では役立ちますが、再生速度は引き続き自宅回線の上り帯域に制限されます。

Docker Composeを使ってUbuntuにJellyfinをインストールする

以下の構成では、JellyfinとCaddyを同じDockerネットワーク上で動かします。ポート8096はインターネットへ公開せず、CaddyがHTTPS接続を受け付け、証明書を自動取得します。

まず、media.example.comなどのドメインのAレコードをサーバーのIPアドレスへ向けます。

1. Dockerをインストールし、ディレクトリを作成する

sudo apt update
sudo apt install -y docker.io docker-compose-v2
sudo systemctl enable --now docker

sudo mkdir -p /opt/jellyfin/{config,cache,caddy-data,caddy-config}
sudo mkdir -p /srv/media/{movies,series,music}
cd /opt/jellyfin

2. /opt/jellyfin/compose.yamlを作成する

services:
  jellyfin:
    image: jellyfin/jellyfin:latest
    container_name: jellyfin
    restart: unless-stopped
    volumes:
      - ./config:/config
      - ./cache:/cache
      - /srv/media:/media:ro
    networks: [media]

  caddy:
    image: caddy:2
    container_name: jellyfin-caddy
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
      - "443:443/udp"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile:ro
      - ./caddy-data:/data
      - ./caddy-config:/config
    networks: [media]

networks:
  media:

:roオプションはメディアライブラリを読み取り専用でマウントし、Jellyfin経由で元のファイルが誤って削除されるのを防ぎます。

3. /opt/jellyfin/Caddyfileを作成する

media.example.com {
    reverse_proxy jellyfin:8096
}

ドメインを自分のものに置き換え、コンテナを起動して必要なポートを開放します。

sudo docker compose up -d

sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 443/udp
sudo ufw enable

SSHが別のポートを使用している場合は、ufw enableを実行する前に、そのポートを別のルールで許可してください。

証明書が発行されたら、https://media.example.comを開きます。外部アクセスの制限が正しく機能するように、Jellyfinのネットワーク設定でリバースプロキシを信頼済みプロキシの一覧へ追加してください。

メディアライブラリの初期設定

セットアップウィザードで言語を選択し、管理者を作成して、ライブラリを追加します。

  • 映画 — /media/movies
  • ドラマ — /media/series
  • 音楽 — /media/music

正確に認識させるため、分かりやすい名前を使用してください。

/media/movies/映画タイトル (2024)/映画タイトル (2024).mkv
/media/series/シリーズ名 (2024)/Season 01/シリーズ名 S01E01.mkv

視聴用の標準プロフィールを別に作成し、管理者アカウントはログイン画面から非表示にします。ユーザーには必要なライブラリだけを許可し、必要がない限りファイル削除権限を与えないでください。

アップデートとバックアップ

Jellyfinの設定には、ユーザー、各種設定、データベース、再生進捗が含まれます。アップデート前にコンテナを停止し、configディレクトリを保存します。

cd /opt/jellyfin
sudo docker compose stop jellyfin
sudo tar -czf /root/jellyfin-config-$(date +%F).tar.gz config
sudo docker compose start jellyfin

作成したアーカイブはVPSの外へ移してください。メディアファイルは別途バックアップします。

アップデートするには、次のコマンドを実行します。

sudo docker compose pull
sudo docker compose up -d

ポート8096を直接公開しないでください。HTTPSまたはVPNを使用し、定期的にアップデートを適用して、ディスクの空き容量を監視します。

tropic.hostのVPSでJellyfinを動かす

主にDirect Playを利用する小規模なメディアライブラリなら、4 GB RAMのLinux VPSから始められます。複数ユーザー、大規模なデータベース、追加サービスを利用する場合は、8 GBを選ぶほうが適切です。

tropic.hostでVPSを選ぶ際は、ディスク容量、月間通信量、トランスコードの必要性を個別に評価してください。仮想サーバーは、グローバルIPとHTTPSを備えた常時利用可能な接続先として便利ですが、GPUサーバーの代わりにはなりません。形式変換を伴う複数の4K/HDRストリームが必要なら、Intel iGPU搭載の自宅サーバー、専用サーバー、またはグラフィックカード付きの専用プランが適しています。

まずは小規模なコレクションで始め、Jellyfinの管理画面でDirect Playの割合を確認してから、実際の負荷に応じてCPU、RAM、ストレージを増やすことができます。

まとめ

Jellyfinは、自分のコレクションを、必須のサブスクリプションや中央アカウントを必要としない個人用ストリーミングサービスへ変えます。適切に導入するには、ストレージ、通信量、トランスコードが発生する可能性を事前に見積もることが重要です。

Direct Playを利用する小規模なサーバーなら、4~8 GB RAMで足りることがよくあります。4K/HDRを日常的に再生するには、ハードウェアによる動画処理が必要です。構成にかかわらず、外部アクセスはHTTPSまたはVPNで保護し、設定とメディアライブラリは別々にバックアップしてください。

FAQ

Jellyfinは完全に無料ですか?

はい。サーバーとクライアントは、有料プランなしで利用できます。費用が必要なのは、ハードウェア、VPS、ディスク、ドメイン、通信量だけです。

Jellyfinには、すぐに視聴できる映画やドラマが含まれていますか?

いいえ。ユーザーが自分のメディアファイルを追加します。

グラフィックカードのないVPSでもJellyfinを動かせますか?

はい。大部分のファイルがDirect Playで再生されるのであれば可能です。4KやHDRを頻繁にトランスコードする場合は、適切なiGPUまたはグラフィックカードを搭載したサーバーが必要です。

JellyfinにはどのくらいのRAMが必要ですか?

小規模なLinuxサーバーなら4 GB RAMで動作できます。家族用メディアライブラリや複数ユーザーには、8 GBを目安にするほうが適切です。

インターネット経由でJellyfinを安全に利用するにはどうすればよいですか?

ドメインとリバースプロキシ経由のHTTPS、またはVPNを使用してください。ポート8096を直接公開せず、最小限の権限を持つユーザーアカウントを個別に作成します。