このチュートリアルはコミュニティによる貢献であり、Open WebUIチームによるサポートは受けられません。このチュートリアルは特定のユースケースに合わせてOpen WebUIをカスタマイズする方法を示すものです。貢献したいですか?貢献方法のチュートリアルをチェックしてください。
Open WebUI向けのHAProxyの設定
HAProxy(High Availability Proxy)は、高性能かつ柔軟な負荷分散およびリバースプロキシソリューションで、大量の接続を比較的低リソースで処理するよう設計されています。詳細については以下を参照してください: https://www.haproxy.org/
HAProxyとLets Encryptのインストール
まず、HAProxyとLets Encryptのcertbotをインストールします:
Redhat系
sudo dnf install haproxy certbot openssl -y
Debian系
sudo apt install haproxy certbot openssl -y
HAProxyの基本設定
HAProxyの設定は通常/etc/haproxy/haproxy.cfg
に保存されます。このファイルには、HAProxyの動作方法を決定するすべての設定指示が含まれています。
Open WebUIでHAProxyを動作させるための基本設定は非常にシンプルです 。
#---------------------------------------------------------------------
# グローバル設定
#---------------------------------------------------------------------
global
# これらのメッセージを/var/log/haproxy.logに転送するには:
#
# 1) syslogがネットワークログイベントを受け入れるよう設定する。
# これは/etc/sysconfig/syslogでSYSLOGD_OPTIONSに-rオプションを追加することで行う。
#
# 2) local2イベントを/var/log/haproxy.logファイルに追加する
# 次のような行を/etc/sysconfig/syslogに追加します:
#
# local2.* /var/log/haproxy.log
#
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy
group haproxy
daemon
# dh-paramを適切な値に調整
tune.ssl.default-dh-param 2048
#---------------------------------------------------------------------
# listen および backend セクションで指定されない場合に使用される共通デフォルト
#---------------------------------------------------------------------
defaults
mode http
log global
option httplog
option dontlognull
option http-server-close
option forwardfor #except 127.0.0.0/8
option redispatch
retries 3
timeout http-request 300s
timeout queue 2m
timeout connect 120s
timeout client 10m
timeout server 10m
timeout http-keep-alive 120s
timeout check 10s
maxconn 3000
#http
frontend web
#SSLなし
bind 0.0.0.0:80
#SSL/TLS
bind 0.0.0.0:443 ssl crt /path/to/ssl/folder/
#Lets Encrypt SSL
acl letsencrypt-acl path_beg /.well-known/acme-challenge/
use_backend letsencrypt-backend if letsencrypt-acl
#サブドメイン方式
acl chat-acl hdr(host) -i subdomain.domain.tld
#パス方式
acl chat-acl path_beg /owui/
use_backend owui_chat if chat-acl
#SSLリクエストをLets Encryptに送信
backend letsencrypt-backend
server letsencrypt 127.0.0.1:8688
#OWUIチャット
backend owui_chat
# X-FORWARDED-FORを追加
option forwardfor
# X-CLIENT-IPを追加
http-request add-header X-CLIENT-IP %[src]
http-request set-header X-Forwarded-Proto https if { ssl_fc }
server chat <ip>:3000
Open WebUIとLets Encryptの両方にACLレコード(ルーター)が追加されているのがわかります。OWUIでWebSocketを使用するにはSSLを設定する必要があり、Lets Encryptを使用するのが最も簡単です。
ドメインに専用サブドメイン(例: chat.yourdomain.com)を割り当てるサブドメイン方式と、特定のパス(例: yourdomain.com/owui/)を経由してOpen WebUIにアクセスするパス方式があります。使用する方法を選び、それぞれに応じて設定を更新してください。
HAProxyサーバーにポート80および443を解放する必要があります。これらのポートはLets Encryptがドメインを検証するため、またHTTPSトラフィック用に必要です。また、DNSレコードを適切に設定してHAProxyサーバーを指すようにする必要があります。HAProxyを家庭で運用する場合は、ルーターでポート80および443をHAProxyサーバーに転送するポートフォワーディングを使用する必要があります。