メインコンテンツまでスキップ
警告

このチュートリアルはコミュニティの貢献によるものであり、Open WebUIチームによるサポートは提供されません。これは、ご自身の特定の利用例に合わせてOpen WebUIをカスタマイズする方法のデモとしてのみ提供されています。貢献したいですか?貢献方法についてのチュートリアルをご覧ください。

Nginxを使用したHTTPS

ユーザーとOpen WebUI間の安全な通信を確保することは非常に重要です。HTTPS (HyperText Transfer Protocol Secure)は、送信されるデータを暗号化し、それを盗聴や改ざんから保護します。リバースプロキシとしてNginxを構成することで、Open WebUIデプロイメントにシームレスにHTTPSを追加し、セキュリティと信頼性を向上させることができます。

このガイドでは、HTTPSを設定するための3つの方法を紹介します:

  • 自己署名証明書: 開発および内部使用に最適、Dockerを使用。
  • Lets Encrypt: 信頼性の高いSSL証明書が必要な本番環境に最適、Dockerを使用。
  • Windows+自己署名: Windows上で開発および内部使用向けの簡略化した手順、Docker不要。

ご自身のデプロイメントニーズに最適な方法を選んでください。

Nginx Proxy Manager

Nginx Proxy Manager (NPM) は、Open WebUI のようなローカルアプリケーションを、Lets Encrypt の有効な SSL 証明書を使用して簡単に管理し、安全にリバースプロキシすることができます。 この設定により、HTTPS アクセスが可能になり、多くのモバイルブラウザで音声入力機能を使用するために必要なセキュリティ要件を満たしつつ、アプリケーション固有のポートを直接インターネットに公開することなく使用できます。

前提条件

  • Docker を実行しているホームサーバーと open-webui コンテナが動作していること。
  • ドメイン名(DuckDNS のような無料オプション、Namecheap や GoDaddy のような有料オプション)。
  • Docker と DNS 設定に関する基本的な知識。

手順

  1. Nginx ファイル用ディレクトリを作成:

    mkdir ~/nginx_config
    cd ~/nginx_config
  2. Docker を使用して Nginx Proxy Managerをセットアップ:

    nano docker-compose.yml
services:
app:
image: jc21/nginx-proxy-manager:latest
restart: unless-stopped
ports:
- 80:80
- 81:81
- 443:443
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt

コンテナを実行:

docker-compose up -d
  1. DNSとドメインを設定:

    • ドメインプロバイダー(例: DuckDNS)にログインしてドメインを作成します。
    • ドメインをプロキシのローカルIPに指定します(例: 192.168.0.6)。
    • DuckDNSを使用する場合は、ダッシュボードからAPIトークンを取得します。
以下は https://www.duckdns.org/domains の簡単な例です:
  1. SSL証明書を設定:
  • http://server_ip:81 で Nginx Proxy Manager にアクセスします。 例: 192.168.0.6:81
  • デフォルトの資格情報([email protected] / changeme)でログインし、要求されたら変更します。
  • SSL 証明書 → SSL 証明書の追加 → Lets Encrypt に進みます。
  • DuckDNSで取得したメールアドレスとドメイン名を記入します。一つのドメイン名にはアスタリスクが含まれ、もう一つのドメインには含まれていません。例: *.hello.duckdns.orghello.duckdns.org
  • DNSチャレンジを使用するオプションを選択し、DuckDNSを選んでAPIトークンを貼り付けます。 例: dns_duckdns_token=f4e2a1b9-c78d-e593-b0d7-67f2e1c9a5b8
  • Let’s Encrypt の利用規約に同意して保存します。必要に応じて伝播時間を変更します (120秒の場合あり)。
  1. プロキシホストを作成:
  • 各サービス (例: openwebui、nextcloud) のために、Hosts → Proxy Hosts → Add Proxy Host に進みます。
  • ドメイン名(例: openwebui.hello.duckdns.org)を入力します。
  • スキームをHTTPに設定(デフォルト)し、Websockets support を有効にし、Docker IPを指定します(nginx manager と open-webui が同じコンピュータで動作する場合は、前述のIPと同じになります。例: 192.168.0.6
  • 先ほど生成したSSL証明書を選択し、SSLを強制し、HTTP/2を有効にします。
  1. open-webuiへのURLを追加(HTTPSエラー回避のため):
  • ご自身のopen-webui → 管理パネル → 設定 → 一般 に移動します。
  • Webhook URLテキストフィールドに、Nginx リバースプロキシ経由で open-webui に接続する際のURLを入力します。例: hello.duckdns.org (これは必須ではない)または openwebui.hello.duckdns.org (これは必須)。

WebUIへのアクセス:

HTTPS経由でOpen WebUIにアクセスします。例: hello.duckdns.org または openwebui.hello.duckdns.org(設定に応じて)。

ファイアウォールに関する注意: ローカルファイアウォールソフトウェア(Portmasterなど)が Dockerの内部ネットワークトラフィックや必要なポートをブロックする可能性があります。この設定が機能しない場合は、問題解決のためにファイアウォールルールを確認してください。

次のステップ

HTTPSの設定後、以下のURLから安全にOpen WebUIにアクセスしてください:

ドメイン名を使用している場合はDNSレコードが正しく構成されていることを確認してください。本番環境では、信頼性の高いSSL証明書を取得するためにLets Encryptを使用することを推奨します。