NGINX
Nginxをリバースプロキシとして使用し、HTTPSでLibreChatデプロイメントを保護するためのステップバイステップガイド
このガイドでは、HTTPS用のSSL/TLS証明書を使用してLibreChatのデプロイメントを保護し、Nginxをリバースプロキシとして設定し、ドメインを構成するための基本的な手順を説明します。
前提条件
- クラウドサーバー(例:AWS、Google Cloud、Azure、Digital Ocean)。
- 登録済みのドメイン名。
- クラウドサーバーへのターミナルアクセス。
- LibreChatをホスト上で直接実行する場合は、Node.js
v24.16.0および npmv11.16.0が必要です。
初期設定
ドメインをサーバーに向ける
証明書の取得を進める前に、ドメインをクラウドサーバーのIPアドレスに向けてください。この手順は基本となるものであり、DNSレコードが世界中に反映されるまでに時間がかかる可能性があるため、SSL証明書の設定よりも前に行う必要があります。
- ドメイン登録業者のコントロールパネルにログインします。
- DNS設定に移動します。
- ドメインをクラウドサーバーのIPアドレスに向ける
A recordを作成します。 - DNSの変更が世界中に反映されるまで待ちます(ドメインにpingを送信して確認できます:
ping your_domain.com)。
SSL/TLS証明書の取得
LibreChat アプリケーションを HTTPS で保護するには、SSL/TLS 証明書が必要です。Let's Encrypt では無料の証明書を提供しています:
-
Certbotをインストールする:
- Ubuntuの場合:
sudo apt-get install certbot python3-certbot-nginx - CentOSの場合:
sudo yum install certbot python2-certbot-nginx
- Ubuntuの場合:
-
証明書を取得する:
sudo certbot --nginxを実行して、Nginx用の証明書を自動的に取得およびインストールします。- 画面の指示に従ってください。Certbotが情報を要求し、検証プロセスを完了させます。
- 成功すると、Certbotは証明書ファイルを保存します。
Nginxをリバースプロキシとして設定する
Nginxはリバースプロキシとして機能し、クライアントからのリクエストをLibreChatアプリケーションに転送します。デプロイには2つの選択肢があります:
オプション A: deploy-compose.yml Docker Compose を使用する(推奨)
deploy-compose.yml ファイルには Nginx コンテナが含まれており、Nginx の設定には client/nginx.conf ファイルを使用します。しかし、sudo certbot --nginx は証明書をホスト側の設定に抽出するため、その証明書を Docker コンテナに複製する必要があります。
client/nginx.confを、お使いのドメインと証明書のパスで更新してください。deploy-compose.ymlのclientセクションを更新し、ホストから証明書ファイルをマウントするようにします:
client:
# ...
volumes:
- ./client/nginx.conf:/etc/nginx/conf.d/default.conf
- /etc/letsencrypt/live/<your-domain>:/etc/letsencrypt/live/<your-domain>
- /etc/letsencrypt/archive/<your-domain>:/etc/letsencrypt/archive/<your-domain>
- /etc/letsencrypt/options-ssl-nginx.conf:/etc/letsencrypt/options-ssl-nginx.conf
- /etc/letsencrypt/ssl-dhparams.pem:/etc/letsencrypt/ssl-dhparams.pem- 実行中のインスタンスを停止する:
npm run stop:deployed - 変更を新しいGitブランチにコミットします。
- デプロイ済みインスタンスをリベースする:
npm run rebase:deployed
Option B: Dockerを使用しないホストベースのデプロイ
Dockerを使用していない場合は、ホスト上で直接Nginxをインストールおよび設定することができます:
-
Nginxのインストール:
- Ubuntu:
sudo apt-get install nginx - CentOS:
sudo yum install nginx
- Ubuntu:
-
Nginxの起動:
sudo systemctl start nginx -
Nginx設定ファイルを開きます:
sudo nano /etc/nginx/sites-available/default -
ファイルの内容を以下に置き換えてください。その際、
your_domain.comをご自身のドメインに、app_portをアプリケーションのポート番号に置き換えるようにしてください。
server {
listen 80;
server_name your_domain.com;
location / {
proxy_pass http://localhost:app_port;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}- Nginxの設定を確認します:
sudo nginx -t - Nginxをリロードする:
sudo systemctl reload nginx
アプリケーションの実行
- アプリケーションのディレクトリに移動します:
cd LibreChat- Docker Composeを使用してアプリケーションを起動します:
sudo docker compose -f ./deploy-compose.yml up -dnginx を使用している場合の証明書の更新
上記の推奨されるオプションAを使用してnginxをセットアップした場合、以下の手順で証明書を更新してください:
- アプリケーションのディレクトリに移動します
cd LibreChat- 実行中のDockerコンテナを停止する
sudo docker compose -f ./deploy-compose.yml down -d- 証明書を更新する
sudo certbot renew- アプリケーションを再起動してください
sudo docker compose -f ./deploy-compose.yml up -d注: certbot がホストの nginx を再起動する場合があります。その際は sudo pkill nginx で停止できます。
Web Application Firewall
Nginxは、OWASP Core Rule Set (CRS) を活用することで、Webアプリケーションファイアウォール (WAF) として機能するように構成できます。OWASP CRSは、一般的なWebアプリケーションの脆弱性や攻撃から保護するための堅牢なルールセットを提供します。NginxでOWASP CRSを使用することで、保護レイヤーが追加され、LibreChatデプロイメントのセキュリティを強化できます。
-
OWASP CRSをインストールする:
- Ubuntu:
sudo apt-get install nginx-modsecurity-crs
- Ubuntu:
-
NginxでModSecurityを有効にする:
-
Nginx設定ファイル(例:
/etc/nginx/nginx.conf)を開きます。 -
httpブロック内に以下の行を追加します:modsecurity on; modsecurity_rules_file /usr/share/nginx/modsecurity-crs/nginx-modsecurity.conf;
-
-
OWASP CRSの設定:
- OWASP CRSパッケージには通常、設定ファイル(例:
/etc/nginx/modsecurity.d/nginx-modsecurity.conf)が含まれており、要件に基づいてさまざまな設定やルールセットを調整できます。
- OWASP CRSパッケージには通常、設定ファイル(例:
-
Nginxをリロード:
sudo systemctl reload nginx
Nginx設定でOWASP CRSを有効にすることで、プロジェクトが提供する包括的なルールセットを活用し、SQLインジェクション、クロスサイトスクリプティング(XSS)、リモートファイルインクルードなど、さまざまなWebアプリケーションの脆弱性や攻撃を検知・緩和することができます。
静的ファイルのキャッシュと圧縮
LibreChatは現在、静的ファイルのキャッシュと圧縮をネイティブでサポートしています。NGINXを使用して圧縮を処理している場合は、冗長な処理を避けるためにLibreChat側の圧縮を無効にする必要があります。これを行うには、LibreChatの設定で DISABLE_COMPRESSION 環境変数を true に設定してください。
# .env file
DISABLE_COMPRESSION=trueこれにより、LibreChatが静的ファイルを圧縮することを防ぎ、NGINXがより効率的に圧縮を処理できるようになります。
LibreChatにおける静的ファイルの取り扱いやキャッシュオプションの詳細については、Static File Handlingのドキュメントを参照してください。
このガイドはいかがでしたか?