コミュニティソリューション

Nginx Proxy ManagerでZimaOS上のJellyfinにリモートアクセス:502エラー、HTTPS、ポート443の競合を解決

A long community support thread that began with beginner ZimaOS setup questions and later documented a working Jellyfin remote-access path through Nginx Proxy Manager and DuckDNS. The successful page-3 sequence separated Docker routing from TLS and finally found a router service occupying port 443.

この長いサポートスレッドでは多くの初心者向けトピックが扱われていますが、検索上もっとも役立つ結論は3ページ目にあります。Jellyfinサーバーはローカルでは動作し、DuckDNSも名前解決でき、SSL証明書も存在していたにもかかわらず、パブリックドメインにアクセスすると502 Bad Gatewayが返っていました。コミュニティは最終的に、問題を次の3層に分けました。Nginx Proxy ManagerからJellyfinへの接続、TLS設定、そしてポート443の処理を担っているルーターです。

最終的な突破口は、ルーター独自のNASサービスをポート443で無効にしたことでした。その後、HTTPとHTTPSの両方でJellyfinにアクセスできるようになりました。

502エラーは、プロキシがJellyfinに接続できないことを意味していた

コミュニティによるトラブルシューティングでは、まずNginx Proxy Managerのアップストリーム先に焦点が当てられました。Jellyfinの通常のHTTPサービスはポート8096で動作しており、プロキシはJellyfinのオプションのHTTPSポートをアップストリームとして扱うのではなく、HTTP経由でJellyfinコンテナに転送する必要がありました。

現在のJellyfinのガイダンスでも同じモデルが採用されています。JellyfinのNginxリバースプロキシ例では、通常のトラフィックとWebSocketをポート8096のJellyfinに転送しています

プロキシとJellyfinには、到達可能なDocker経路が必要

ある段階ではコンテナ名を使っても機能しなかったため、コミュニティの協力者はプロキシの接続先をJellyfinのDocker内部アドレスに変更しました。これにより、HTTP経路が機能し始めました。

Jellyfinのトラブルシューティング中に、Dockerブリッジネットワークへ接続されたNginx Proxy ManagerをPortainerで表示した画面
このスレッドでは、Nginx Proxy Managerが内部的にJellyfinへ接続できるかどうかを判断するため、コンテナネットワークの情報を使用しました。
メディアボリュームとともにDockerブリッジネットワークへ接続されたJellyfinコンテナをPortainerで表示した画面
プロキシとJellyfinのネットワーク状態を比較することで、502エラーをその後のHTTPS問題から切り分けることができました。

コンテナの変動する内部IPを使う方法は、両方のサービスを、サービス名による安定した名前解決が可能な、管理された共有Dockerネットワークに配置する方法ほど堅牢ではありません。元のスレッドに記録されているのは、その環境で機能した方法であり、すべてのサーバーに適した理想的なCompose設計ではありません。

SSLを追加する前に、HTTPルーティングを修正する

プロキシがまだJellyfinに接続できていない状態でTLSオプションを変更していたことが、大きな混乱の原因でした。コミュニティでは、プロキシホストから一時的にSSLを削除し、まず通常のHTTPルーティングを確認してから、証明書を再設定してHTTPSへのリダイレクトを有効にする手順が取られました。

このトラブルシューティングの順序は、特定のIPアドレスをそのままコピーするよりも重要です。まずアップストリームへのルーティングを確認し、その後でTLSを診断します。

ルーターがポート443を使用していた

HTTPでようやくJellyfinを開けるようになった後、HTTPSを再び有効にすると、ユーザーはルーターのログインページに移動しました。これはスレッド内でもっとも強い手がかりでした。外部からのポート443への接続が、Nginx Proxy Managerへ転送されるのではなく、ルーター独自のNAS/管理機能によって処理されていたのです。

ユーザーがルーター内部のNASサービスをポート443で無効にしたところ、HTTPSが機能することを確認できました。

リモートHTTPSが機能しても、ローカルアプリの検出が保証されるわけではない

その後、スレッドではRokuやスマートフォンのクライアントについても検討されました。パブリックドメイン経由のブラウザーアクセスは機能しましたが、ローカルの自動検出とヘアピン/NATループバックの動作には一貫性がありませんでした。最終的にコミュニティは、Roku向けの実用的な回避策としてDLNAを使用しました。

この後続の問題は、解決済みの502/HTTPS経路と混同しないでください。リモートのリバースプロキシルーティングと、ローカルデバイスの検出は別々のネットワーク動作です。

これはIceWhaleのセキュリティ手順ではなく、コミュニティによるネットワーク支援だった

詳細なリバースプロキシの手順は、コミュニティ参加者から提供されたものです。Jellyfinをドメイン経由で公開するには、ルーター、TLS、認証、アップデートについて慎重に運用する必要があります。ポート443をリバースプロキシへ転送したからといって、関係のないZimaOS管理サービスまで公開しないでください。

JellyfinとNPMに関するよくある質問

502 Bad Gatewayの原因は何でしたか?

Nginx Proxy Managerが当初、Jellyfinのアップストリームに正しく接続できていませんでした。ルーティングを修正すると、JellyfinはHTTP経由で読み込めるようになりました。

なぜHTTPSでルーターのログインページが開いたのですか?

ルーター自身がポート443を使用していたためです。ルーターのそのサービスを無効にするか別のポートへ移動すると、ポート443がNginx Proxy Managerへ到達するようになります。

NPMはJellyfinへ内部的にHTTPとHTTPSのどちらでプロキシすべきですか?

このスレッドで成功した構成と、現在のJellyfinのNginx例では、ポート8096のJellyfinサービスへHTTPで接続し、TLSはリバースプロキシで終端します。

リモートHTTPSが機能すれば、JellyfinはRokuで自動検出されますか?

いいえ。クライアントの検出、Wi-Fiの分離、Dockerネットワーク、NATループバックは、それぞれ別の問題です。