あなたはPlexまたはJellyfinで家庭用メディアサーバーを構築し、映画、シリーズ、音楽で満たしました。そして、友人や家族にアクセスを提供したいと思っています。しかし、ルーターのポートを開くのは怖いです:それはあなたの家庭内ネットワークへの直接的な穴です。プロキシサーバーはこの問題をエレガントに解決します:それはあなたのサーバーと視聴者の間の仲介者として機能し、実際のIPを隠し、危険なルーターの設定を必要としません。
なぜ単にポートを開けることができないのか:家庭用サーバーのリスク
友人にPlexまたはJellyfinへのアクセスを提供する最も明白な方法は、ルーターでポートを開放することです。たとえば、ポート32400(Plex)または8096(Jellyfin)を開放し、友人にhttp://あなたのIP:32400の形式のリンクを送信します。技術的にはこれが機能します。しかし、セキュリティの観点から見ると、これは大惨事です。
ルーターのポートをインターネットに開放すると、次のことが発生します:
- あなたの家庭用IPが公開されます。 サーバーのアドレスを知っている人は、あなたの実際の家庭用IPを知っています。これは地理的位置、プロバイダー、あなたの住所を地域まで正確に特定します。
- ボットのスキャナーが数時間であなたを見つけます。 Shodan、Censys、そして数千の自動スキャナーが常にインターネット全体を巡回しています。開放されたPlexまたはJellyfinのポートは発見され、開放後数時間以内にハッキングの試みを受け始めます。
- ソフトウェアの脆弱性 = ネットワークのハッキング。 PlexとJellyfinは、脆弱性の歴史を持つ複雑なソフトウェアです。あなたのバージョンに未修正の穴がある場合、攻撃者はそれを通じてメディアサーバーだけでなく、あなたの家庭内ネットワーク全体に侵入することができます:ノートパソコン、NAS、スマートデバイス。
- DDoS攻撃と悪用の苦情。 あなたの家庭用プロバイダーは、DDoS攻撃からあなたを保護する義務はありません。大規模な攻撃が発生した場合、あなたは単に切断されます。
- 動的IP。 ほとんどの家庭用ユーザーはIPが変わります。毎回友人に新しいアドレスを知らせるか、DDNSサービスを設定する必要があります。
明らかな結論は、開放されたポートは、外部の人々が接続する家庭用メディアサーバーの解決策ではないということです。視聴者からのリクエストを受け取り、あなたのサーバーに転送し、実際のIPを公開せず、家庭内ネットワークに穴を開けない仲介者が必要です。
プロキシがメディア配信を助ける方法:動作の仕組み
プロキシは家庭用メディアサーバーの文脈では中間ポイントとして機能します。あなたの友人は、あなたの家庭用IPに直接接続するのではなく、プロキシサーバーのIPに接続します。プロキシはリクエストを受け取り、それをあなたのサーバーに転送し、応答(ビデオストリーム、メタデータ、カバー)を受け取り、視聴者に返送します。
動作の仕組みは次のようになります:
あなたの家庭用サーバー → プロキシサーバー → 友人(視聴者)
これが実際に何を意味するのか:
- あなたの家庭用IPが隠されます。 視聴者はプロキシサーバーのIPしか見えません。友人が誰かとリンクを共有しても、彼らはあなたの家庭内ネットワークに直接攻撃することはできません。
- ルーターのポートを開ける必要がありません。 あなたのサーバーはプロキシ(またはトンネル)との間でアウトゴーイング接続を自ら開始します。インターネットからあなたのネットワークへのインバウンド接続はありません。
- 安定した固定アドレス。 プロキシサーバーは固定IPを持っています。たとえあなたの家庭用IPが変更されても、視聴者はそれを知ることはありません。
- SSL暗号化。 プロキシはHTTPSを終端でき、視聴者とプロキシ間のトラフィックを暗号化します。
- アクセス制御。 プロキシレベルで、誰がサーバーに接続できるかを制限できます。
プロキシを家庭用メディアサーバーに使用する2つのシナリオの違いを理解することが重要です。最初のシナリオでは、プロキシサーバー(またはVPS)を借りて、リバースプロキシ(nginx、Caddy、またはTraefik)を設定します。このサーバーは視聴者のリクエストを受け取り、それをあなたの家庭用サーバーにプロキシします。2番目のシナリオでは、商業プロキシサービスを使用して、あなたのサーバーからのアウトゴーイングリクエストを匿名化するためのトンネルまたは中間ノードとして使用します。
この記事では、両方のアプローチを考察しますが、主な焦点は、友人が技術的な複雑さなしにあなたのサーバーからコンテンツを視聴できるようにする実用的な設定にあります。
PlexとJellyfinに適したプロキシの種類
すべてのプロキシタイプがビデオストリーミングに同じように適しているわけではありません。家庭用メディアサーバーの特性を考慮した比較表は次のとおりです:
| プロキシタイプ | 速度 | 安定性 | ストリーミングに適している | 備考 |
|---|---|---|---|---|
| データセンタープロキシ | ★★★★★ | ★★★★★ | ✅ 素晴らしい | 高い帯域幅、安定したping。ストリームのトンネリングに最適。 |
| レジデンシャルプロキシ | ★★★☆☆ | ★★★☆☆ | ⚠️ 限定的 | Plexから外部サービスへのアクセス時に地理的制限を回避するのに適しています。ストリーミングには不安定です。 |
| モバイルプロキシ | ★★★☆☆ | ★★★☆☆ | ❌ 推奨されません | トラフィックのコストが高く、速度が不安定です。ビデオストリームには最適ではありません。 |
| リバースプロキシ(VPS上のnginx/Caddy) | ★★★★★ | ★★★★★ | ✅ 理想的 | 長期使用に最も適したアプローチ。VPSのレンタルが必要です。 |
タイプに関する結論: メディアコンテンツの恒常的なストリーミングには、レンタルしたVPS上のリバースプロキシが最適な選択です。または、高い帯域幅を持つデータセンタープロキシです。レジデンシャルプロキシは、PlexまたはJellyfinが外部のメタデータソースやサーバーIPをブロックするプラグインにアクセスする際に便利です。
💡 重要なポイント
Plexには独自のクラウドリレーサービス(Plex Relay)があり、Plex Inc.のサーバーを介して組み込みプロキシとして機能します。これは無料ですが、速度を約2Mbpsに制限しており、1080pには不十分です。正常な品質を得るには、ポートを開放するか、独自のプロキシが必要です。
Plexメディアサーバーのためのプロキシ設定:ステップバイステップ
最も実用的なシナリオを考えてみましょう:あなたはPlexを持つ家庭用サーバーを持っており、VPS上のリバースプロキシを介して友人にアクセスを提供したいと思っています。これにより、安定したURL、SSL証明書が得られ、あなたの家庭用IPが隠されます。
必要なもの:
- Plexメディアサーバーがインストールされた家庭用PCまたはNAS
- VPS(どんなものでも、最も安価なもので1 vCPU、1 GB RAMがプロキシに十分です)
- ドメイン(無料のものでも可:DuckDNS、FreeDNS)
- 約30-60分の時間
ステップ1. 家庭用サーバーでPlexを設定する
家庭用サーバーでPlex Webを開きます。設定 → リモートアクセスに移動します。「リモートアクセスを許可する」オプションが有効になっていることを確認します。ポートを覚えておいてください — デフォルトでは32400です。今のところ、このポートをルーターで開放しないでください — すべてをプロキシを介して行います。
ステップ2. VPSにNginxをインストールする
SSHでVPSに接続します。NginxとSSL用のCertbotをインストールします:
sudo apt update
sudo apt install nginx certbot python3-certbot-nginx -y
ステップ3. VPSから家庭用サーバーへのトンネルを設定する
これは重要なポイントです。VPSがあなたの家庭用Plexにアクセスできる必要があります。方法は2つあります:
方法A(簡単):家庭用サーバーからVPSへのSSHトンネル。 あなたの家庭用サーバーで、ポート32400の家庭用Plexをポート32400のVPSにトンネリングする永続的なトンネルを作成するコマンドを実行します:
ssh -N -R 32400:localhost:32400 user@あなたのVPS_IP
トンネルが常に機能するように、systemdに追加するか、autosshを使用して切断時に自動的に再接続します。
方法B(信頼性が高い):家庭用サーバーとVPS間のTailscaleまたはWireGuard VPN。 これにより、ポートを開放することなく、永続的な暗号化トンネルが作成されます。詳細は代替案のセクションで説明します。
ステップ4. Nginxをリバースプロキシとして設定する
あなたのドメインのための設定を作成します。/etc/nginx/sites-available/plexというファイルを作成します:
server {
listen 80;
server_name plex.あなたのドメイン.com;
location / {
proxy_pass http://localhost:32400;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# ビデオストリーミングに重要:
proxy_buffering off;
proxy_read_timeout 36000s;
proxy_send_timeout 36000s;
client_max_body_size 0;
}
}
ステップ5. SSL証明書を取得する
sudo certbot --nginx -d plex.あなたのドメイン.com
Certbotは自動的にNginxの設定を更新し、HTTPSを追加します。その後、あなたの友人はhttps://plex.あなたのドメイン.comにアクセスでき、SSL暗号化されたあなたのPlexを見ることができます。
ステップ6. Plexの設定でプロキシのURLを指定する
Plexメディアサーバーで、設定 → ネットワークに移動します。「カスタムサーバーURL」フィールドにあなたのドメインを指定します:https://plex.あなたのドメイン.com:443。これにより、Plexはクライアントがこのアドレスを介して接続する必要があることを理解し、直接のパスを探す必要がなくなります。
Jellyfinのためのプロキシ設定:ステップバイステップ
Jellyfinは、完全に無料でオープンなPlexの代替です。Jellyfinのリバースプロキシ設定は少し異なりますが、論理は同じです。Jellyfinはデフォルトでポート8096(HTTP)と8920(HTTPS)で動作します。
ステップ1. プロキシで動作するようにJellyfinを設定する
Jellyfinの管理パネルを開きます。管理パネル → ネットワークに移動します。「基本URL」フィールドを見つけて、空白のままにします(Jellyfinがルートパスにある場合)。「リモート接続を許可する」オプションが有効になっていることを確認します。
ステップ2. JellyfinのためのNginxの設定
JellyfinのためのNginxの設定は少し複雑です。サーバーはWebSocketを使用して同期します:
server {
listen 80;
server_name jellyfin.あなたのドメイン.com;
location / {
proxy_pass http://localhost:8096;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# WebSocketサポート(Jellyfinにとって重要!)
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# バッファリングなしでストリーミング
proxy_buffering off;
proxy_read_timeout 36000s;
}
}
代替案:Nginxの代わりにCaddyを使用する
Nginxを扱いたくない場合は、Caddyを試してみてください。Caddyは自動的にSSL証明書を取得し、設定の構文がより簡単です。CaddyでのJellyfinの設定は次のようになります:
jellyfin.あなたのドメイン.com {
reverse_proxy localhost:8096
}
はい、これは文字通り2行です。Caddyは自動的にHTTPSを設定し、Let's Encryptの証明書を取得し、自動的に更新します。ほとんどの家庭用ユーザーにとって、Caddyはより便利な選択です。
ステップ3. トンネルを設定する(Plexと同様に)
Plexのセクションで説明されているのと同じSSHトンネルまたはVPNアプローチを使用しますが、ポート8096を使用します:
ssh -N -R 8096:localhost:8096 user@あなたのVPS_IP
💡 セキュリティのアドバイス
プロキシを設定した後、Jellyfinがすべてのインターフェース(0.0.0.0)ではなく、localhost(127.0.0.1)のみでリッスンしていることを確認してください。これにより、プロキシをバイパスしてサーバーに直接アクセスするのを防ぎます。Jellyfinの設定 → ネットワーク → 「ローカルアドレスにバインド」を127.0.0.1に設定します。
代替案:Tailscale、Cloudflareトンネルとプロキシの比較
従来のVPS経由のリバースプロキシの他にも、より現代的なソリューションがあります。それらの利点と欠点を見てみましょう:
Tailscale(およびHeadscale)
TailscaleはWireGuardに基づくVPNで、あなたのデバイス間にプライベートネットワークを作成します。家庭用サーバーと友人のデバイスにTailscaleをインストールすると、彼らは仮想ネットワークを介してサーバーに直接暗号化されたアクセスを得ることができます。
- 利点:非常に簡単に設定でき、最大のセキュリティ、プロキシによる遅延がない、3人まで無料
- 欠点:友人はTailscaleクライアントをインストールする必要があり、Tailscale Inc.のサーバーに依存し、大規模な視聴者にスケールアップするのが難しい
- 選ぶべき時:技術的に熟練した友人が2-5人いて、アプリをインストールすることに抵抗がない場合
Cloudflareトンネル(以前のArgoトンネル)
Cloudflareトンネルは、ポートを開放せずにCloudflareのインフラストラクチャを介して家庭用サーバーをインターネットに公開することを可能にします。家庭用サーバーにcloudflaredをインストールし、Cloudflareへのアウトゴーイングトンネルを作成すると、あなたのサーバーはCloudflareのCDNを介してあなたのドメインでアクセス可能になります。
- 利点:無料、VPSは不要、CloudflareからのDDoS保護、SSLが自動的に設定される
- 欠点:Cloudflareは、ストリーミングビデオに対して無料プランの使用を禁止しています。大量のトラフィックには有料プランが必要です。また、Cloudflareはあなたのトラフィックをすべて見ることができます。
- 選ぶべき時:テストやJellyfin/Plexへの不定期なアクセスのため
ソリューションの比較表
| ソリューション | 難易度 | コスト | 速度 | 視聴者の要件 |
|---|---|---|---|---|
| Nginx/Caddy on VPS | 中程度 | ~$3-5/月(VPS) | ★★★★★ | ブラウザまたはPlex/Jellyfinクライアントのみ |
| Tailscale | 低い | 無料(最大3人) | ★★★★★ | Tailscaleをインストール |
| Cloudflareトンネル | 低い | 無料 / $20/月から | ★★★☆☆ | ブラウザまたはクライアントのみ |
| Plexリレー(組み込み) | ゼロ | 無料 | ★★☆☆☆ | Plexクライアントのみ |
プロキシ経由のストリーミング速度と品質:何が影響するのか
メディアサーバーのプロキシを使用する際の主な質問は、ビデオの品質が低下しないかということです。プロキシ経由のストリーミング速度に実際に影響を与える要因を見てみましょう。
家庭用インターネットの帯域幅
これは最も重要な制限です。すべてのビデオストリームは、あなたの家庭のインターネット回線(アップロード)を介して流れます。アップロード速度に関する一般的な要件は次のとおりです:
- SD品質(480p):約2-4 Mbps/視聴者
- HD品質(720p):約5-8 Mbps/視聴者
- フルHD(1080p):約8-15 Mbps/視聴者
- 4K HDR:約25-40 Mbps/視聴者
もしあなたの家庭用プランが50 Mbpsのアップロード速度であれば、1080pで同時に3-4人の視聴者をサポートできます。プロキシはここで追加の制限を作ることはありません — それは単にトラフィックをリダイレクトするだけです。
トランスコーディング vs 直接ストリーム
PlexとJellyfinは、クライアントデバイスの能力に応じてビデオをリアルタイムでトランスコーディングできます。トランスコーディングは家庭用サーバーのCPUに負担をかけますが、プロキシとは関係ありません。クライアントデバイスが直接再生(Direct Play)をサポートしている場合、負担は最小限です。
推奨事項:Plex/Jellyfinのクライアントアプリケーションを最大品質と直接再生に設定してください。これにより、サーバーへの負担が軽減され、トランスコーディングの遅延がなくなります。
プロキシの遅延(latency)
プロキシはルートに追加の「ジャンプ」を追加します。ビデオストリーミングにおいて、20-50msの遅延はほとんど気付かれません — ビデオプレーヤーのバッファリングがそれを補います。視聴者に近い地域にVPSを選ぶことが重要です:友人がモスクワにいる場合は、モスクワまたはヨーロッパのVPSを選び、米国ではなく選択してください。
最適化の実用的なアドバイス
- Nginxでバッファリングを無効にする(
proxy_buffering off) — これはビデオストリーミングにとって重要です - タイムアウトを増やす(
proxy_read_timeout 36000s) — そうしないと、長い映画が中断されます - NginxでHTTP/2を有効にする — 複数の並列リクエストのオーバーヘッドを減少させます
- テキストレスポンス(メタデータ、API)のみgzipを使用し、ビデオストリームには使用しないでください
- プロキシレベルでカバーとメタデータのキャッシュを設定する — これにより家庭用サーバーへの負担が軽減されます
セキュリティ:サーバーとユーザーデータを保護する方法
プロキシを設定することで、開放されたポートと比較してセキュリティが大幅に向上しました。しかし、実施すべきいくつかの重要な対策があります。
プロキシレベルでの認証
Nginxレベルで基本的なHTTP認証を追加して、追加のバリアを作成します。誰かがあなたのURLを見つけた場合でも、ログインとパスワードがなければPlex/Jellyfinのインターフェースを見ることはできません。パスワードファイルを作成します:
sudo htpasswd -c /etc/nginx/.htpasswd ユーザー名
ただし、注意してください:Nginxの基本認証はPlex/JellyfinのAPIと競合する可能性があります。これらのサービスの組み込み認証に完全に依存する方が良いです — それは十分に信頼できます。
IP制限
友人に静的IPがある場合(または変更時にIPを知らせる準備ができている場合)、Nginxにホワイトリストを追加します:
location / {
allow 1.2.3.4; # 友人のIP 1
allow 5.6.7.8; # 友人のIP 2
deny all;
proxy_pass http://localhost:32400;
}
Fail2banによるブルートフォース攻撃対策
VPSにFail2banをインストールします — これは、失敗したログイン試行が多すぎるIPアドレスを自動的にブロックします。これにより、NginxとVPS上のSSHの両方が保護されます:
sudo apt install fail2ban -y
sudo systemctl enable fail2ban
定期的な更新
Plex/Jellyfin、Nginx、およびVPSのオペレーティングシステムを定期的に更新してください。ほとんどのメディアサーバーのハッキングは、古いバージョンのソフトウェアにおける既知の脆弱性を介して発生します。VPSでのセキュリティの自動更新を設定します:
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure unattended-upgrades
監視とログ
Nginxのログを監視して疑わしい活動を追跡します。リアルタイムで最新のリクエストを表示するためのコマンド:
sudo tail -f /var/log/nginx/access.log
異常なUser-Agentを持つリクエスト、/admin、/wp-admin、および他の標準パスへの大量のリクエストに注意してください — これは自動スキャンの兆候です。
家庭用メディアサーバーのセキュリティチェックリスト
- ✅ プロキシは実際の家庭用IPを隠します
- ✅ SSL証明書が設定され、自動更新されます
- ✅ Plex/Jellyfinのポートはルーターで直接開放されていません
- ✅ Plex/Jellyfinはlocalhostのみにリッスンします
- ✅ Fail2banがVPSにインストールされています
- ✅ VPSのSSHはキーのみで動作します(パスワードではなく)
- ✅ セキュリティの自動更新が有効になっています
- ✅ 各視聴者のためにPlex/Jellyfinで個別のアカウントが作成されています
- ✅ 管理セクションへのアクセスが制限されています
結論と推奨事項
PlexまたはJellyfinの家庭用メディアサーバーのためのプロキシ設定は、便利さ、セキュリティ、速度のバランスです。ルーターの開放されたポートは最大の速度を提供しますが、家庭内ネットワーク全体に対する実際のリスクを生じさせます。プロキシはこの問題を解決し、最小限の遅延を追加しながら、正常な保護を提供します。
ほとんどの家庭用ユーザーにとっての最良の選択は、Caddy(簡単)またはNginx(柔軟)を介した安価なVPS上のリバースプロキシです。これにより、安定したURL、SSL暗号化、および誰がどのようにあなたのサーバーに接続するかを完全に制御できます。
もしあなたがPlexやJellyfinを友人にコンテンツを配信するだけでなく、外部のメタデータソース、トレーラー、またはサーバーIPをブロックするプラグインにアクセスするためにも使用する場合、これらのリクエストにはレジデンシャルプロキシが適しています:これらは通常の家庭ユーザーのトラフィックを模倣し、外部サービスに疑念を抱かせません。
最大のストリーミング速度と最小の遅延でビデオストリームをトンネリングしたい場合は、データセンタープロキシに注目してください — これらは高い帯域幅と安定した稼働時間を提供し、フルHDや4Kのストリーミングにとって重要です。