管理パネル
LibreChatのユーザー、グループ、ロール、設定オーバーライド、システム権限を管理するためのスタンドアロンWeb UI。librechat.yamlを手動で編集する必要はありません。
LibreChat 管理パネル
LibreChat Admin Panelは、LibreChatのためのスタンドアロンなブラウザベースの管理インターフェースです。LibreChat本体と同じデータベースに接続し、granular access controlを支える管理タスクのためのGUIを提供します。これには、ユーザーおよびグループの管理、ロール管理、ロールやグループにスコープされた設定のオーバーライド、システムレベルの権限付与などが含まれます。
ステータス: プレビュー
管理パネルは現在テスト用として利用可能であり、LibreChat v0.8.5 で導入された管理APIを基盤とする今後の管理インターフェースです。ソースコード、イシュー、およびリリースは github.com/ClickHouse/librechat-admin-panel にあります。
What It Does
管理パネルはシンクライアントです。すべてのデータはLibreChatのデータベースに存在し、すべてのアクションはLibreChat APIサーバー上のバージョン管理された /api/admin/* endpoint を経由します。これにより、管理者は以下の操作を一元的に行えるようになります。
- 設定の管理: 動的でスキーマ駆動型のフォームを通じて、すべての LibreChat 設定を表示および編集できます。設定スキーマに新しいフィールドが追加されると自動的に反映されるため、管理パネルのリリースは不要です。
- プリンシパルごとのオーバーライドを適用: 設定のオーバーライドを特定のロールやグループにスコープし、ログイン時に各ユーザーに適用される最終的な値を決定する優先順位ベースのカスケードを使用します。
- ユーザーの管理: インスタンス上のすべてのアカウントのリスト表示、検索、および閲覧を行います。
- グループの管理: グループの作成と削除、メンバーの追加と削除を行い、ACLやオーバーライドにおいてグループを第一級のプリンシパルとして使用します。
- ロールの管理: 組み込みの
USER/ADMIN以外のカスタムロールを作成し、機能権限マトリックスを編集し、ユーザーにロールを割り当てます。 - Issue system grants: 特定のユーザー、グループ、またはロールに対して、完全な管理者権限を付与することなく、管理機能(例:
manage:users、read:usage、manage:mcpservers)を委任します。 - Authenticate: LibreChatのローカル管理者アカウントでログインするか、LibreChatインスタンスで有効になっている場合はOpenID SSO / SAML / サポートされているOAuthプロバイダー経由でログインします。
基盤となる権限モデル(プリンシパル、リソースACL、機能、およびレイヤーの構成方法)については、Access Control ページを参照してください。
アーキテクチャ
┌──────────────────┐ ┌──────────────────┐ ┌──────────────┐
│ Admin Panel │ ───────▶│ LibreChat API │ ───────▶│ MongoDB │
│ (Bun + Vite) │ HTTPS │ /api/admin/* │ │ (shared DB) │
└──────────────────┘ └──────────────────┘ └──────────────┘
│ │
│ OAuth/OIDC/SAML redirect │ Verifies admin access
└─────────────────────────────┘管理パネルは独立したサービスとして実行され、LibreChatとプロセスを共有しません。管理機能は、access:admin システム権限または SystemRoles.ADMIN ロールを通じてLibreChat側で検証されるため、パネル自体が本来持つべきでない権限を付与することはできません。
LibreChat が公開する管理 API サーフェスは以下の通りです:
| マウント | 目的 |
|---|---|
POST /api/admin/login /oauth/* | 管理者専用の認証エンドポイント (ローカル + SSO) |
GET /api/admin/verify | 管理者セッションの検証 |
/api/admin/users | ユーザー一覧および検索 |
/api/admin/groups | グループのCRUD + メンバー管理 |
/api/admin/roles | カスタムロールのCRUD + 権限編集 + メンバー管理 |
/api/admin/grants | システム機能の付与 (割り当て/取り消し/一覧表示) |
/api/admin/config | ベース + プリンシパルごとの設定オーバーライド |
はじめに
前提条件
- v0.8.5以降で実行中のLibreChatインスタンス(それ以前のバージョンでは管理者APIは利用できません)
- admin-panel コンテナ/ホストから LibreChat API へのネットワークアクセス
- LibreChat上の管理者アカウント:最初に登録されたユーザー(自動管理者)、Mongoで
role: 'ADMIN'が設定されたユーザー、またはaccess:admin権限が付与されたプリンシパルのいずれか。
LibreChatに同梱(推奨)
LibreChatを公式のdocker-compose.ymlまたはdeploy-compose.ymlで実行する場合、管理パネルはサービスとして同梱されており、LibreChatと同時に自動的に起動するため、別途デプロイする必要はありません。
| Compose file | Admin panel URL | How it is served |
|---|---|---|
docker-compose.yml (default) | http://localhost:3000 | ホストポート (ADMIN_PANEL_PORT、デフォルト 3000) で公開されます |
deploy-compose.yml | http://admin.localhost | バンドルされている nginx リバースプロキシを経由してサブドメインでルーティングされます |
スタックを起動する前に、LibreChatの.envでパネルのセッションシークレットを設定してください。composeファイルはそれをパネルのSESSION_SECRETとして渡します:
# Min 32 characters. Generate with: openssl rand -hex 32
ADMIN_PANEL_SESSION_SECRET=replace-with-a-32-char-random-string
# Optional: host port for the default docker-compose
# ADMIN_PANEL_PORT=3000
# Optional: set true when the panel is served over HTTPS
# ADMIN_PANEL_SESSION_COOKIE_SECURE=falsecomposeファイルは残りの設定を自動的に接続します。API_SERVER_URLはapiサービスを指し、VITE_API_BASE_URLはブラウザ向けのOAuthリダイレクトのためにDOMAIN_CLIENTに従い、ADMIN_PANEL_URLはSSO後にLibreChatが管理者をパネルへ戻すように設定されます。これを使用しない場合は、admin-panelサービスを削除するか、Composeのprofilesエントリを使用して制限してください。
実ドメイン上のadmin.localhost
モダンブラウザは *.localhost(admin.localhost を含む)を 127.0.0.1 に解決するため、hostsファイルを変更しなくても deploy-compose のURLが機能します。実際のドメインを使用する場合は、DNSレコードをホストに向け、client/nginx.conf 内の admin.localhost の server_name を更新し、それに合わせて ADMIN_PANEL_URL を設定してください。
スタンドアロン(個別デプロイ)
管理パネルを単独でホストし、別の場所で実行されている LibreChat インスタンスに向けるには、GHCR から公開されているイメージを使用してください:
# 1. Create an env file
cp .env.example .env
# 2. Edit .env and set at minimum:
# SESSION_SECRET=<random string, min 32 characters>
# VITE_API_BASE_URL=http://host.docker.internal:3080
# 3. Start it
docker compose up -d # http://localhost:3000
docker compose down # stopスタンドアロンの docker run:
docker run -p 3000:3000 \
--add-host=host.docker.internal:host-gateway \
-e SESSION_SECRET=replace-with-32-char-random-string \
-e VITE_API_BASE_URL=http://host.docker.internal:3080 \
ghcr.io/clickhouse/librechat-admin-panel:latestDocker ネットワーク
コンテナ内では、localhost はホストではなくコンテナ自身を指します。LibreChat が同じホスト上で実行されている場合、VITE_API_BASE_URL を http://host.docker.internal:3080 に指定してください(Linux の場合は --add-host=host.docker.internal:host-gateway を追加してください)。本番環境では、LibreChat API のパブリックまたは内部 DNS 名を使用してください。
開発用にローカルで実行する
git clone https://github.com/ClickHouse/librechat-admin-panel.git
cd librechat-admin-panel
cp .env.example .env # then edit
bun install
bun dev # http://localhost:3000環境変数
| 変数 | 必須 | デフォルト | 説明 |
|---|---|---|---|
SESSION_SECRET | 本番環境では必須 | bun dev 実行時はハードコードされた開発用フォールバック; Docker イメージではデフォルトなし | セッション暗号化キー。32文字以上である必要があります。 |
VITE_API_BASE_URL | Docker では必須 | http://localhost:3080 (ローカル開発のみ) | OAuth リダイレクトに使用される、ブラウザから見た LibreChat API サーバーの URL。 |
API_SERVER_URL | いいえ | VITE_API_BASE_URL にフォールバック | LibreChat API 呼び出し用のサーバーサイド URL。管理パネルサーバーがブラウザとは異なる URL(例: 内部 Kubernetes サービス対パブリックホスト名)で LibreChat にアクセスする場合に便利です。 |
PORT | いいえ | 3000 | 管理パネルがリッスンするポート。 |
ADMIN_PANEL_SESSION_SECRET | 本番環境では必須 | バンドルされた LibreChat Docker スタックでは CREDS_KEY にフォールバック | バンドルされた管理パネルサービス用に、管理パネルの SESSION_SECRET にマッピングされる LibreChat 側の変数。本番環境では32文字以上のユニークな値を生成してください。 |
ADMIN_PANEL_PORT | いいえ | 3000 | デフォルトの docker-compose.yml において、バンドルされた管理パネルサービスによって公開されるホストポート。 |
ADMIN_SSO_ONLY | いいえ | false | メールアドレス/パスワードフォームを非表示にし、SSO のみのログインを強制します。 |
ADMIN_SESSION_IDLE_TIMEOUT_MS | いいえ | 1800000 (30分) | ミリ秒単位でのセッションアイドルタイムアウト。 |
SESSION_COOKIE_SECURE | いいえ | 本番環境では true | セッションクッキーに HTTPS が必要かどうか。 |
ADMIN_PANEL_METRICS_SECRET | いいえ | 未設定 | /metrics Prometheus エンドポイントをスクレイピングするために必要な Bearer トークン。未設定または不一致の場合、エンドポイントは 401 を返します。 |
LibreChatのバンドルされたDockerスタックでは、管理パネルは admin-panel サービスとして実行されます。デフォルトの docker-compose.yml はこれを ADMIN_PANEL_PORT で公開します。deploy-compose.yml はこれを nginx を介して http://admin.localhost にルーティングし、APIサービス用に ADMIN_PANEL_URL を設定します。
LibreChat リダイレクト URL
管理パネルがLibreChatとは別のURLでホストされている場合は、LibreChat API環境で ADMIN_PANEL_URL を設定してください。パスプレフィックスを含む外部管理パネルのベースURLを使用し、末尾のスラッシュは省略してください:
ADMIN_PANEL_URL=https://admin.example.com/adminHelmデプロイの場合は、valuesファイルで librechat.adminPanelUrl を設定してください。チャートはこれをLibreChatの管理用OAuthフローのために ADMIN_PANEL_URL としてレンダリングします:
librechat:
adminPanelUrl: https://admin.example.com/adminOpenID SSOの場合、${DOMAIN_SERVER}/api/admin/oauth/openid/callback をアイデンティティプロバイダーに登録してください。
キャッシュ制御
これらはLibreChatのキャッシュ環境変数を反映したものです。ADMIN_PANEL_* バリアントが優先され、設定されていない場合は共有のLibreChat相当の設定にフォールバックされます。
| 変数 | 目的 |
|---|---|
STATIC_CACHE_MAX_AGE / ADMIN_PANEL_STATIC_CACHE_MAX_AGE | /assets/ 内のハッシュ化されたアセットに対するブラウザの max-age(秒単位、デフォルトは 172800 = 2日間)。 |
STATIC_CACHE_S_MAX_AGE / ADMIN_PANEL_STATIC_CACHE_S_MAX_AGE | CDN の s-maxage(秒単位、デフォルトは 86400 = 1日間)。 |
INDEX_CACHE_CONTROL / ADMIN_PANEL_INDEX_CACHE_CONTROL | HTML インデックスレスポンス用の Cache-Control ヘッダー。 |
INDEX_PRAGMA / ADMIN_PANEL_INDEX_PRAGMA | HTML インデックスレスポンス用の Pragma ヘッダー。 |
INDEX_EXPIRES / ADMIN_PANEL_INDEX_EXPIRES | HTML インデックスレスポンス用の Expires ヘッダー。 |
認証
管理パネルはLibreChatの認証スタックを再利用しており、独自のユーザーデータベースは持っていません。以下の2つのログインパスがサポートされています:
- ローカルアカウント: 管理者アクセスチェックを通過したLibreChatユーザーに対するユーザー名/パスワード。
- シングルサインオン: OpenID Connect、SAML、およびLibreChatインスタンス上で既に設定済みのソーシャルOAuthプロバイダー。
ADMIN_SSO_ONLY=trueを設定すると、パスワードフォームを完全に非表示にできます。
LibreChatでは、すべてのリクエストに対してサーバーサイドで管理者アクセス権が検証されます。アカウントは以下のいずれかの条件を満たしている必要があります。
- MongoDBで
role: 'ADMIN'を持っているか、または access:adminシステム権限を保持していること(管理パネル自体を通じて別のプリンシパルに割り当てられます。詳細は System Grants を参照してください)。
セッションはCookieベースであり、SESSION_SECRETで暗号化され、ADMIN_SESSION_IDLE_TIMEOUT_MSに基づいてアイドル状態でのタイムアウトが発生します。
設定管理
このパネルは、LibreChatの設定をconfig schemaによって駆動される動的なフォームとしてレンダリングします。これには2つの有用な特性があります:
- 前方互換性: LibreChatが新しい設定フィールドをリリースすると、パネルはスキーマからそれを自動的に取得します。管理パネルのアップグレードや再デプロイは不要です。
- Layered overrides: ベース設定(
librechat.yamlからの読み込み)は、ロールやグループごとにスコープされたプリンシパル単位のオーバーライドによって上書き(シャドウイング)される場合があります。ユーザーがログインすると、オーバーライドは優先順位に従って解決され、ベース設定にマージされることで、そのユーザーに適用される有効な設定が生成されます。
これはLibreChatのDB-backed per-principal configuration override systemの背後にあるインターフェースです。一般的な使用例:
- 「Research」グループに、より高い
recursionLimitと追加の endpoint を付与する - 「FinanceAdmins」ロールにMCPサーバーの管理を許可し、通常のユーザーには利用のみを許可します
- 外部委託業者グループに対して、より厳格な
interface権限を適用する
関連情報
- Access Control: 管理パネルの基盤となる権限モデル
- Interface Configuration: パネルが編集する機能フラグ
- Authentication: LibreChatにおけるユーザー認証
- v0.8.5 changelog: 管理者APIの基盤
- GitHub: ClickHouse/librechat-admin-panel: ソース、イシュー、リリース
このガイドはいかがでしたか?