Raspberry PiでLibreChatを構築する方法|Docker・Nginx・HTTPS・Microsoft Entra ID(OpenID)対応

ラズパイ

はじめに

Raspberry Pi を使って LibreChat(ChatGPT互換UI) を社内向けに安全に運用したい、というケースは増えています。

本記事では、以下をすべて満たす構成を 実際に動作確認できた手順 としてまとめます。

  • Raspberry Pi 上で LibreChat を Docker で動かす
  • Nginx による HTTPS(自己署名証明書)
  • Microsoft Entra ID(OpenID Connect)によるSSOログイン
  • localhost へのリダイレクト問題を回避
  • 社内LAN前提の安定構成

構成概要

[ Browser ]
↓ HTTPS(自己署名SSL)
[ Nginx(Raspberry Pi / Host)]
↓ HTTP
[ LibreChat(Docker :3080)]

前提条件

  • Raspberry Pi OS(64bit 推奨)
  • 固定IP(例:192.168.1.5
  • 社内DNS または hosts で名前解決
librechat-server → 192.168.1.5

アクセスURL:

[https://librechat-server](https://librechat-server)

`


Dockerのインストール

curl -fsSL https://get.docker.com | sh

`

確認:

docker --version
docker compose version

Dockge(Docker Compose 管理UI)

sudo mkdir -p /opt/stacks /opt/dockge
cd /opt/dockge
sudo wget https://raw.githubusercontent.com/louislam/dockge/master/compose.yaml
sudo docker compose up -d

アクセス:


LibreChat のインストール

cd /opt/stacks
sudo git clone https://github.com/danny-avila/LibreChat
cd LibreChat

LibreChat の設定(Entra ID SSO 専用)

.env 作成

cp .env.example .env
nano .env
# ========================
# Login / Registration
# ========================
ALLOW_EMAIL_LOGIN=false
ALLOW_REGISTRATION=false
ALLOW_SOCIAL_LOGIN=true
ALLOW_SOCIAL_REGISTRATION=true

# ========================
# OpenID (Microsoft Entra ID)
# ========================
OPENID_CLIENT_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
OPENID_CLIENT_SECRET=xxxxxxxxxxxxxxxxxxxx
OPENID_ISSUER=https://login.microsoftonline.com/<TENANT_ID>/v2.0
OPENID_SCOPE="openid profile email"
OPENID_CALLBACK_URL=/oauth/openid/callback
OPENID_SESSION_SECRET=<十分に長いランダム文字列>

OPENID_USERNAME_CLAIM=preferred_username
OPENID_NAME_CLAIM=name
OPENID_BUTTON_LABEL=Sign in with Microsoft

# ========================
# External URL (重要)
# ========================
DOMAIN_CLIENT=https://librechat-server
DOMAIN_SERVER=https://librechat-server

OPENID_IMAGE_URL は設定しない
DOMAIN_CLIENT / DOMAIN_SERVER が無いと localhost:3080 に飛ぶ


ポート公開制御

cp docker-compose.override.yml.example docker-compose.override.yml
nano docker-compose.override.yml
services:
  librechat:
    ports:
      - "127.0.0.1:3080:3080"
sudo docker compose down
sudo docker compose up -d

Nginx のインストール

sudo apt update
sudo apt install -y nginx

自己署名SSL証明書(SAN必須)

sudo mkdir -p /etc/nginx/ssl
sudo nano /etc/nginx/ssl/librechat.cnf
[req]
prompt = no
default_bits = 2048
default_md = sha256
distinguished_name = dn
x509_extensions = v3_req

[dn]

C=JP O=Internal CN=librechat-server

[v3_req]

subjectAltName = @alt_names basicConstraints = CA:FALSE keyUsage = digitalSignature, keyEncipherment extendedKeyUsage = serverAuth

[alt_names]

DNS.1 = librechat-server IP.1 = 192.168.1.5

cd /etc/nginx/ssl
sudo openssl req -x509 -nodes -days 3650 \
  -newkey rsa:2048 \
  -keyout librechat.key \
  -out librechat.crt \
  -config librechat.cnf \
  -extensions v3_req

Nginx リバースプロキシ設定

sudo nano /etc/nginx/sites-available/librechat
server {
    listen 443 ssl;
    server_name librechat-server;

    ssl_certificate     /etc/nginx/ssl/librechat.crt;
    ssl_certificate_key /etc/nginx/ssl/librechat.key;

    ssl_protocols TLSv1.2 TLSv1.3;

    location / {
        proxy_pass http://127.0.0.1:3080;
        proxy_http_version 1.1;

        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;

        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}
sudo ln -s /etc/nginx/sites-available/librechat /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

クライアント側(Windows)の証明書信頼

  1. /etc/nginx/ssl/librechat.crt をコピー
  2. 証明書のインストール
  3. 信頼されたルート証明機関
  4. ブラウザ再起動

Microsoft Entra ID 側の設定

アプリ登録

  • 種類:Web
  • 名前:LibreChat (librechat-server)
  • アカウントの種類:この組織ディレクトリのみ

Redirect URI

クライアントシークレット

  • Certificates & secrets → New client secret
  • 表示された Value.env に設定

動作確認


よくあるハマりどころ

症状原因
localhost:3080 に飛ぶDOMAIN_CLIENT 未設定
SSL警告SANなし / 証明書未信頼
ボタンが出ないALLOW_SOCIAL_LOGIN=false
画像が壊れるOPENID_IMAGE_URL=false

まとめ

Raspberry Pi + LibreChat は、
Docker + Nginx + Entra ID を組み合わせることで、
社内向けの安全なAIチャット基盤として十分実用になります。

  • LibreChat 本体は HTTP のままでOK
  • HTTPSは Nginx 側で終端
  • Entra ID SSO には HTTPS が必須
  • DOMAIN_CLIENT / DOMAIN_SERVER が最重要ポイント

タイトルとURLをコピーしました