LibreChatをDockerで動かす

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3764962/0b9ca0da-1cd9-4d43-94b8-49cc4215d935.png)
作成日：2025年5月30日(金)

## １．はじめに
会社のAI推進では従来Chatbot UI Legacyを使用していましたが、チャット履歴やチャットテンプレートがクライアントPCのブラウザのCookieに保存される仕様でした。セキュリティ上の理由からブラウザを閉じるたびにCookieをクリアする設定となっている会社のPCでは、チャット履歴やテンプレートを保存できないという課題がありました。
また、Azure App ServiceでChatbot UI LegacyをEasy Authを使ってOkta認証していましたが、チャットボットのユーザ管理と連動しておらず、使い勝手は決して良くありませんでした。

そんななか、職場の同僚からLibreChatを紹介されました。半年ほどかけて段階的に使用方法を理解し、Chatbot UI Legacyからの移行先として適していると判断したため、このLibreChatの設定について記事にまとめることにしました。

## ２．LibreChatとは

LibreChatとはDanny Avila氏を中心とした開発チームによって設計されMITライセンスのもとで2023年3月8日(水)に公開されたChatGPTのクローンです。
ChatGPTのインターフェースを模倣しつつ、より柔軟で拡張性のある機能を提供することを目指しています。
開発者のDanny Avila氏を中心にオープンソースコミュニティによって2023年前半から本格的な開発が進められ、2023年6月にはLangChainを用いたプラグイン機能を導入したバージョン0.5.0が公開されました。続くアップデートでは、ChatGPT公式のプラグイン対応（v0.5.5）やOpenAIの関数機能対応、Anthropic社モデル対応、ユーザー認証機能など、次々と機能拡張が図られました。

特に2024年には飛躍的な発展を遂げ、AIエージェント機能やコードインタープリター（コード実行環境）、音声入出力、ローカルLLM対応、マルチリンガル対応などが次々と追加されています。

こうした継続的な開発により、LibreChatは2025年時点でバージョン0.7台に達し、GitHubのスター26,000以上を集める人気プロジェクトへと成長しました。現在も活発に更新が行われており、新たなAIモデルや機能がリリースされるたびに迅速に統合されています。3

### 2.1. 主な特長

LibreChatは、企業での利用に最適化された包括的なAIチャットプラットフォームです。SSO対応のユーザー認証やサーバーサイドでの会話履歴管理により、セキュアな環境を提供します。複数のAIプロバイダーのモデルを一つのインターフェースで利用可能で、ユーザー毎のAPIキー管理やプロンプトテンプレート機能により、効率的な運用が可能です。また、会話共有機能を通じて、チーム間での知識共有やAIモデルの比較検証にも活用できます。

| No | 特長 | 説明 | 備考 |
| --- | --- | --- | --- |
| 1 | ユーザー認証 | SSO等の複数の認証方式に対応し、セキュアなアクセス制御が可能 | 企業での利用に適している |
| 2 | 会話履歴管理 | サーバーサイドでチャット履歴を保存し、安全に管理 | ブラウザのCookieに依存しない |
| 3 | マルチモデル対応 | 複数のAIプロバイダーのモデルを一つのインターフェースで利用可能 | OpenAI、Claude、Google、OpenRouter等に対応 |
| 4 | ユーザー毎のAPIキー管理 | 各ユーザーが個別のAPIキーを設定・管理可能 | 利用コストの可視化と管理が容易 |
| 5 | プロンプトテンプレート | よく使うプロンプトをテンプレートとして保存・管理可能 | 業務効率化に貢献 |
| 6 | 会話の共有 | 特定の会話を他のユーザーと共有できる機能を搭載 | チーム間での知識共有に有効 |

### 2.2. 活用方法

企業での活用に特に適しており、以下のような用途で効果を発揮します。

- 社内での統一されたAIチャットプラットフォームとして
- 複数のAIモデルの比較・検証環境として
- チーム間での知識共有ツールとして

### 2.3. 導入時の留意事項

以下の点に注意して導入を検討する必要があります。

- 各AIプロバイダーのAPIキーと利用料金の管理
- ユーザー認証システムの適切な設定
- データの保存場所とバックアップ方針の決定
- 社内ネットワークでの利用に関するセキュリティポリシーの確認

## ３．要件

企業での生成AI推進において重要なのは、利用状況の把握による啓発活動と、個人レベルでのセキュリティ確保です。
必要な機能として、個人ごとのチャット履歴管理、プロンプトテンプレート、Okta認証、複数AIモデルの利用、マルチモーダル機能、ユーザーや組織単位での利用料管理、会話履歴の共有機能があります。

LibreChatは予実管理などの一部機能は不足しているものの、これらの要件を概ね満たしています。予実管理については、社内の生成AI APIサービスと統合して管理するため、別のOSSを採用することにしました。

| No | 分類 | 要件 | 説明 | 備考 |
| --- | --- | --- | --- | --- |
| 1 | セキュリティ | Okta認証 | シングルサインオンによる統合的なアクセス管理 | 既存の認証基盤との連携 |
| 2 | ↓ | 個人ごとのチャット履歴管理 | ユーザー単位での会話ログの保存と管理 | データ保持期間の設定が必要 |
| 3 | ↓ | ユーザーや組織単位での利用料管理 | APIキーや利用コストを部門別に管理・制御 | 予算管理との連携 |
| 4 | 利便性 | プロンプトテンプレート | 定型的な問い合わせや作業の効率化 | 組織共有テンプレートの活用 |
| 5 | ↓ | 複数AIモデルの利用 | 用途に応じて最適なAIモデルを選択可能 | モデル特性の理解が必要 |
| 6 | ↓ | マルチモーダル機能 | テキスト以外の画像や音声などにも対応 | データ形式の制限確認 |
| 7 | ↓ | 会話履歴の共有機能 | 優れた利用事例を組織内で共有し、ベストプラクティスを展開 | 権限管理との連携が重要 |
| 8 | 啓発活動 | 利用状況の把握 | 組織全体のAI利用状況をモニタリングし、効果的な啓発活動に活用 | 利用統計やレポート機能が必要 |

## ４．システム構想

本システムは、企業の生成AI活用を安全かつ効率的に実現するための統合AIプラットフォームで、Microsoft Azureクラウド環境にプライベートネットワーク基盤を構築しています。社内イントラネットからAzureのExpressRouteを経由する完全クローズドな環境を採用し、機密情報の漏洩リスクを最小限に抑えながら、複数の生成AIサービスを統一的に利用できる仕組みを提供しています。

LibreChatはNginx統合メニューの機能の一つとして位置づけられ、メニューとLibreChatはともにOkta認証によってSSOで接続されます。

この記事では以降、Azure Virtual Machineで動作させるLibreChatの構築について整理していきます。
![LibreChatシステム構成図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3764962/82c023d6-9d6a-432f-a048-a187dd71506f.png)

<details><summary>LibreChatシステム構成図.svg</summary>

```
<svg viewBox="0 0 1200 800" xmlns="http://www.w3.org/2000/svg">
  <!-- 背景 -->
  <rect width="1200" height="800" fill="#f0f8ff"/>
  
  <!-- タイトル -->
  <text x="600" y="30" text-anchor="middle" font-family="Arial, sans-serif" font-size="20" font-weight="bold" fill="#333">LibreChatシステム構成図</text>
  
  <!-- 社内イントラネット -->
  <rect x="50" y="80" width="200" height="120" fill="#e6f3ff" stroke="#0066cc" stroke-width="2" rx="10"/>
  <text x="150" y="105" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" font-weight="bold" fill="#0066cc">社内イントラネット</text>
  <rect x="80" y="120" width="140" height="60" fill="#ffffff" stroke="#0066cc" stroke-width="1" rx="5"/>
  <text x="150" y="140" text-anchor="middle" font-family="Arial, sans-serif" font-size="12" fill="#333">社内ユーザー</text>
  <text x="150" y="155" text-anchor="middle" font-family="Arial, sans-serif" font-size="12" fill="#333">端末</text>
  
  <!-- Azure ExpressRoute -->
  <rect x="300" y="120" width="150" height="40" fill="#ff9900" stroke="#cc7700" stroke-width="2" rx="20"/>
  <text x="375" y="145" text-anchor="middle" font-family="Arial, sans-serif" font-size="12" font-weight="bold" fill="white">Azure ExpressRoute</text>
  
  <!-- Azure Cloud境界 -->
  <rect x="500" y="60" width="650" height="700" fill="#e6f7ff" stroke="#0099cc" stroke-width="3" rx="15"/>
  <text x="525" y="85" font-family="Arial, sans-serif" font-size="16" font-weight="bold" fill="#0099cc">Azure Cloud</text>
  
  <!-- プライベートVNET -->
  <rect x="520" y="110" width="610" height="500" fill="#f0faff" stroke="#0066cc" stroke-width="2" rx="10"/>
  <text x="540" y="135" font-family="Arial, sans-serif" font-size="14" font-weight="bold" fill="#0066cc">プライベートVNET</text>
  
  <!-- Azure App Service (Nginx統合メニュー) -->
  <rect x="550" y="160" width="250" height="120" fill="#4caf50" stroke="#2e7d32" stroke-width="2" rx="8"/>
  <text x="675" y="185" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" font-weight="bold" fill="white">Azure App Service</text>
  <text x="675" y="205" text-anchor="middle" font-family="Arial, sans-serif" font-size="12" fill="white">Nginx統合メニュー</text>
  <text x="675" y="225" text-anchor="middle" font-family="Arial, sans-serif" font-size="10" fill="#c8e6c9">• LibreChat</text>
  <text x="675" y="240" text-anchor="middle" font-family="Arial, sans-serif" font-size="10" fill="#c8e6c9">• 組織内RAGチャットボット</text>
  <text x="675" y="255" text-anchor="middle" font-family="Arial, sans-serif" font-size="10" fill="#c8e6c9">• 生成AIアプリケーション</text>
  <text x="675" y="270" text-anchor="middle" font-family="Arial, sans-serif" font-size="9" fill="#a5d6a7">プライベートエンドポイント</text>
  
  <!-- Azure Virtual Machine (LibreChat) -->
  <rect x="850" y="160" width="250" height="120" fill="#2196f3" stroke="#1565c0" stroke-width="2" rx="8"/>
  <text x="975" y="185" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" font-weight="bold" fill="white">Azure Virtual Machine</text>
  <text x="975" y="205" text-anchor="middle" font-family="Arial, sans-serif" font-size="12" fill="white">(Linux)</text>
  <rect x="870" y="220" width="210" height="45" fill="#64b5f6" stroke="#1976d2" stroke-width="1" rx="5"/>
  <text x="975" y="238" text-anchor="middle" font-family="Arial, sans-serif" font-size="12" font-weight="bold" fill="white">Docker</text>
  <text x="975" y="255" text-anchor="middle" font-family="Arial, sans-serif" font-size="12" fill="white">LibreChat</text>
  
  <!-- Okta認証 -->
  <rect x="550" y="320" width="550" height="80" fill="#ff5722" stroke="#d84315" stroke-width="2" rx="8"/>
  <text x="825" y="345" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" font-weight="bold" fill="white">Okta認証 (SSO)</text>
  <text x="825" y="365" text-anchor="middle" font-family="Arial, sans-serif" font-size="12" fill="#ffccbc">統合メニュー ⇔ LibreChat</text>
  <text x="825" y="385" text-anchor="middle" font-family="Arial, sans-serif" font-size="12" fill="#ffccbc">シングルサインオン</text>
  
  <!-- LibreChatが接続するAIサービス -->
  <rect x="550" y="440" width="550" height="150" fill="#9c27b0" stroke="#6a1b9a" stroke-width="2" rx="8"/>
  <text x="825" y="465" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" font-weight="bold" fill="white">LibreChatが接続するAIサービス</text>
  
  <!-- 個別のAIサービス -->
  <rect x="650" y="490" width="150" height="40" fill="#e1bee7" stroke="#8e24aa" stroke-width="1" rx="5"/>
  <text x="725" y="515" text-anchor="middle" font-family="Arial, sans-serif" font-size="12" fill="#4a148c">Azure OpenAI</text>
  
  <rect x="820" y="490" width="150" height="40" fill="#e1bee7" stroke="#8e24aa" stroke-width="1" rx="5"/>
  <text x="895" y="515" text-anchor="middle" font-family="Arial, sans-serif" font-size="12" fill="#4a148c">Claude</text>
  
  <rect x="735" y="540" width="150" height="40" fill="#e1bee7" stroke="#8e24aa" stroke-width="1" rx="5"/>
  <text x="810" y="565" text-anchor="middle" font-family="Arial, sans-serif" font-size="12" fill="#4a148c">Google</text>
  
  <!-- Azure監視・管理サービス -->
  <rect x="520" y="650" width="610" height="80" fill="#607d8b" stroke="#37474f" stroke-width="2" rx="8"/>
  <text x="825" y="675" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" font-weight="bold" fill="white">Azure監視・管理サービス</text>
  <text x="825" y="695" text-anchor="middle" font-family="Arial, sans-serif" font-size="12" fill="#cfd8dc">Azure Monitor, Log Analytics, Application Insights</text>
  <text x="825" y="715" text-anchor="middle" font-family="Arial, sans-serif" font-size="12" fill="#cfd8dc">Security Center, Key Vault</text>
  
  <!-- 接続線 -->
  <!-- 社内からExpressRoute -->
  <line x1="250" y1="140" x2="300" y2="140" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)"/>
  
  <!-- ExpressRouteからApp Service -->
  <line x1="450" y1="140" x2="550" y2="200" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)"/>
  
  <!-- App ServiceからLibreChat -->
  <line x1="800" y1="210" x2="850" y2="210" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)"/>
  <text x="825" y="205" text-anchor="middle" font-family="Arial, sans-serif" font-size="10" fill="#666">バックエンド</text>
  
  <!-- Okta認証への接続 -->
  <line x1="675" y1="280" x2="675" y2="320" stroke="#ff5722" stroke-width="2"/>
  <line x1="975" y1="280" x2="975" y2="320" stroke="#ff5722" stroke-width="2"/>
  
  <!-- LibreChatから生成AIサービスへ -->
  <line x1="975" y1="280" x2="975" y2="440" stroke="#9c27b0" stroke-width="2" marker-end="url(#arrowhead)"/>
  
  <!-- 矢印マーカーの定義 -->
  <defs>
    <marker id="arrowhead" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
      <polygon points="0 0, 10 3.5, 0 7" fill="#333"/>
    </marker>
  </defs>
  
  <!-- セキュリティ注記 -->
  <rect x="50" y="650" width="400" height="120" fill="#fff3e0" stroke="#ff9800" stroke-width="2" rx="8"/>
  <text x="70" y="675" font-family="Arial, sans-serif" font-size="14" font-weight="bold" fill="#e65100">セキュリティ要件</text>
  <text x="70" y="695" font-family="Arial, sans-serif" font-size="11" fill="#bf360c">• プライベートVNET内での完全クローズド環境</text>
  <text x="70" y="710" font-family="Arial, sans-serif" font-size="11" fill="#bf360c">• インターネット通信完全遮断</text>
  <text x="70" y="725" font-family="Arial, sans-serif" font-size="11" fill="#bf360c">• ExpressRoute経由での社内専用アクセス</text>
  <text x="70" y="740" font-family="Arial, sans-serif" font-size="11" fill="#bf360c">• Okta SSOによる統合認証</text>
  <text x="70" y="755" font-family="Arial, sans-serif" font-size="11" fill="#bf360c">• プライベートエンドポイントによる内部通信</text>
</svg>
```
</details>

## ５．構築

開発プロセスでは、まずローカルPCのDocker環境でLibreChatを構築し、その後本番環境のAzure Virtual Machineへデプロイを行います。

LibreChatはDocker対応が充実しているため、独自のDockerイメージをビルドせず、公式の手順に従って構築を進めます。

本記事では、SSO認証を除外し、OpenRouterを利用したDocker環境の構築方法を解説します。

また、ローカルPCのDocker環境は既に構築済みの前提とします。

### 5.1. Git Clone

LibreChatをDockerで動かすには、docker-compose.ymlというDocker Composeの構成ファイルが必要です。
このファイルにはDockerHubリポジトリなどの設定情報が含まれています。
docker-compose.ymlはLibreChatのソースパッケージに含まれているため、GitHubからLibreChatのソースリポジトリをダウンロードします。GitHubリポジトリからのダウンロードはCloneと呼ばれています。
Windows上のUbuntu(WSL)でCloneを実行するには、適切なフォルダで以下のコマンドを使用します。

```
root@Ardbeg:~# git clone https://github.com/danny-avila/LibreChat.git
Cloning into 'LibreChat'...
remote: Enumerating objects: 47027, done.
remote: Counting objects: 100% (303/303), done.
remote: Compressing objects: 100% (204/204), done.
remote: Total 47027 (delta 204), reused 99 (delta 99), pack-reused 46724 (from 2)
Receiving objects: 100% (47027/47027), 84.40 MiB | 22.63 MiB/s, done.
Resolving deltas: 100% (33862/33862), done.
root@Ardbeg:~#
```

### 5.2. 作成するファイル

LibreChatを構成するには、バージョンアップを考慮して以下の3つのファイルを作成する必要があります。

特にdocker-compose.override.ymlは、バージョンアップ時の管理において重要な役割を果たします。多くの記事ではdocker-compose.ymlファイルを直接編集する方法を紹介していますが、この方法ではgitを使ったバージョンアップ時にコンフリクト（リモートリポジトリとローカルリポジトリ間でのファイル編集の競合）が発生する可能性があります。このような問題に対応するため、Dockerではdocker-compose.override.ymlという機能を提供しており、これによってdocker-compose.ymlファイルを部分的に上書きすることができます。本構築では、このdocker-compose.override.ymlを活用して設定を行います。

| No | ファイル | 説明 |
| --- | --- | --- |
| 1 | .env | 環境変数の設定ファイル。APIキーやデータベース接続情報など、重要な設定を管理します。 |
| 2 | docker-compose.override.yml | Docker Composeの上書き設定ファイル。ポート番号やボリュームマウントなど、環境固有の設定を定義します。 |
| 3 | librechat.yaml | LibreChatの主要な設定ファイル。認証方式、使用するAIモデル、チャット機能のカスタマイズなどを設定します。 |

### 5.3. .envファイル

まず最初にLibreChatのフォルダ内にある.env.exampleファイルを.envファイルにコピーして、.envファイルのCONFIG_PATH、OPENROUTER_KEY、ENDPOINTSの３か所を書き換えます。

※viエディタに不慣れな場合は、エクスプローラから[Linux]⇒[Ubuntu-22.04]⇒[root]⇒[LibreChat]へ移動し、.envファイルをWindowsのメモ帳で編集できます。このファイルはWSLのアクセス権限に注意が必要です。WSLで最初に作成したユーザで作業するか、/etc/wsl.confでdefaultユーザをrootに設定して作業してください（エクスプローラからのファイルアクセスはデフォルトユーザの権限で行われます）。

```
root@Ardbeg:~/LibreChat# cp .env.example .env
root@Ardbeg:~/LibreChat# vi .env
```

![LibreChat-環境変数ファイル.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3764962/a1d5ac8b-131d-4bbd-8d7b-ad6d0abf2588.png)

| No | 環境変数 | 値 | 説明 |
| --- | --- | --- | --- |
| 1 | CONFIG_PATH | /app/librechat.yaml | こちらはLibreChatを構成するLibreChatコンテナ内のどのフォルダにlibrechat.yamlを配置したかを記述します。<br>通常はdocker-compose.override.yamlファイルで設定する/app/librechat.yamlとします。 |
| 2 | OPENROUTER_KEY | sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | OpenRouter.aiを従量課金契約して取得したAPIキーを記述します。 |
| 3 | ENDPOINTS | OpenRouter | デフォルトですとopenaiなども設定されているためLLMのAPIプロバイダーをOpenRouterに固定します |

### 5.4. docker-compose.override.ymlファイル

デフォルトではlibrechat.yamlのボリュームバインドが定義されていないため、librechat.yamlがLibreChatコンテナ内に反映されません。

そのため、docker-compose.override.example.ymlを参考に、以下のようなdocker-compose.override.ymlファイルを作成します。

実行時に必要な設定は以下のみです。

```
services:
  api:
    volumes:
    - type: bind
      source: ./librechat.yaml
      target: /app/librechat.yaml
```

### 5.5. librechar.yamlファイル

```
version: 1.2.1

endpoints:
  custom:
    - name: 'OpenRouter'
      apiKey: '${OPENROUTER_KEY}'
      baseURL: 'https://openrouter.ai/api/v1'
      models:
        default: ["openai/gpt-4o-mini"]
        fetch: true
      plugins: true
      assistants: false
      titleConvo: true
      titleModel: 'openai/gpt-4o-mini'
      modelDisplayLabel: 'OpenRouter'
```

### 5.6. Docker Composeでの起動

起動方法

```
root@Ardbeg:~/LibreChat# docker compose up -d
WARN[0000] The "UID" variable is not set. Defaulting to a blank string.
WARN[0000] The "GID" variable is not set. Defaulting to a blank string.
WARN[0000] The "UID" variable is not set. Defaulting to a blank string.
WARN[0000] The "GID" variable is not set. Defaulting to a blank string.
WARN[0000] The "UID" variable is not set. Defaulting to a blank string.
WARN[0000] The "GID" variable is not set. Defaulting to a blank string.
[+] Running 5/5
 ✔ Container vectordb          Started                                                                                                                                                  0.3s
 ✔ Container chat-mongodb      Started                                                                                                                                                  0.4s
 ✔ Container chat-meilisearch  Started                                                                                                                                                  0.2s
 ✔ Container rag_api           Started                                                                                                                                                  0.5s
 ✔ Container LibreChat         Started                                                                                                                                                  0.8s
root@Ardbeg:~/LibreChat#
```

停止方法

```
root@Ardbeg:~/LibreChat# docker compose down
WARN[0000] The "UID" variable is not set. Defaulting to a blank string.
WARN[0000] The "GID" variable is not set. Defaulting to a blank string.
WARN[0000] The "UID" variable is not set. Defaulting to a blank string.
WARN[0000] The "GID" variable is not set. Defaulting to a blank string.
WARN[0000] The "UID" variable is not set. Defaulting to a blank string.
WARN[0000] The "GID" variable is not set. Defaulting to a blank string.
[+] Running 6/6
 ✔ Container chat-meilisearch  Removed                                                                                                                                                  0.6s
 ✔ Container LibreChat         Removed                                                                                                                                                  0.8s
 ✔ Container chat-mongodb      Removed                                                                                                                                                  0.6s
 ✔ Container rag_api           Removed                                                                                                                                                  1.1s
 ✔ Container vectordb          Removed                                                                                                                                                  0.6s
 ✔ Network librechat_default   Removed                                                                                                                                                  0.7s
root@Ardbeg:~/LibreChat#
```

管理者の削除

```
root@Ardbeg:~/LibreChat# rm -rf data-node
root@Ardbeg:~/LibreChat#
```

## ６．管理者登録

LibreChatは起動直後に管理者登録から運用を開始します。

管理者の登録は、ブラウザで「http://localhost:3080」 にアクセスし、初回起動時に「新規登録」ボタンから行います。登録完了後は、セキュリティを確保するため、.envファイルでALLOW_REGISTRATIONをfalseに設定し、Docker Composeを再起動してください。

![LibreChat初期画面.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3764962/d2eb2282-53c1-4d8e-8f0e-11f93c46134d.png)

![LibreChatアカウント登録.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3764962/4de2d522-4807-4603-a3f5-1a8a65d484ca.png)

## ７．使ってみる

ブラウザでhttp://localhost:3080にアクセスしてLibreChatに登録したユーザでサインインすると以下のような画面構成になります。
説明のために左側ペインのチャット履歴や右側ペインのプロンプトテンプレートの画面を表示しています。

![LibreChat画面説明.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3764962/77c07e09-a43d-492e-8e0d-885bce165571.png)

| No | コンポーネント名 | 説明 |
| --- | --- | --- |
| ① | メッセージ検索ボックス | チャット履歴内のメッセージを検索するための入力フィールド |
| ② | チャット履歴リスト | 過去の会話履歴が表示される左側のサイドバー。「今日」の項目下に「横浜市の天気予報」などの会話が一覧表示される |
| ③ | 現在のチャットタブ | 自分のファイルやヘルプ＆FAQ、設定画面を表示するメニューです（ここではユーザ名「potofo」を表示） |
| ④ | モデル選択ドロップダウン | 使用するAIモデルを選択するメニュー。現在「openai/gpt-4o-mini-search-preview」が選択されている |
| ⑤ | メッセージ表示エリア | ユーザーとAIの会話内容が表示されるメインエリア。アクティブなチャットが表示されます |
| ⑥ | メッセージ入力エリア | 新しいメッセージを入力するためのテキストボックス。検索、コードインタープリター、音声入力のボタンも配置<br>’＠’コマンドで利用できるモデルへメンションしたり、<br>’/’コマンドでプロンプトテンプレートを呼び出すことができます。 |
| ⑦ | プロンプト管理パネル | 右側のサイドパネル。プロンプトの管理、作成、フィルタリング機能を提供。パラメータ、ファイル追加、ブックマーク、パネル表示などのオプションも含む<br![LibreChatーVersion.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3764962/6e63cfdd-d280-4b31-b1d3-93477d856f4a.png)<br>プロンプトの管理ではよく使うプロンプトをプロンプトテンプレートとして保存することもできます。 |

## ８．バージョンの確認とバージョンアップ

### 8.1. LibreChatのバージョンの確認

LibreChatのバージョンの確認はWeb画面の最下部またはdocker logsコマンドで可能です。

Web画面
![LibreChatーVersion.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3764962/ab42b6f3-cd37-4cb0-984c-d3e29b2d4581.png)

docker logsコマンド

```
root@Ardbeg:~/LibreChat# docker logs LibreChat | grep LibreChat@
> LibreChat@v0.7.7 backend
root@Ardbeg:~/LibreChat#
```

```
docker compose pull          # イメージを最新に
docker compose up -d
docker logs LibreChat | grep version

```

## ９．トラブルシュート

- OpenRouterのデフォルトのモデルが”deepseek/deepseek-r1-0528-qwen3-8b:free”になる
librechat.yamlで設定したdefaultのモデル”openai/gpt-4o-mini”などが選択されず”deepseek/deepseek-r1-0528-qwen3-8b:free”になってしまう。
⇒ LibreChat v0.7.7 には **「同じ id を複数エンドポイントで重複させない」ための重複除去バグ** がある

```
root@Ardbeg:~/LibreChat# docker logs LibreChat | grep LibreChat@
> LibreChat@v0.7.8 backend
root@Ardbeg:~/LibreChat#

```

上記でもダメな場合、OpenRouterの全てのモデルを表示できなくなるが、librechat.yamlでfetchをfalseにして、使いたいモデルをdefaultに列挙します。

```
version: 1.2.1

endpoints:
  custom:
    - name: 'OpenRouter'
      apiKey: '${OPENROUTER_KEY}'
      baseURL: 'https://openrouter.ai/api/v1'
      models:
        default: ["openai/gpt-4o-mini","openai/gpt-4o-mini-search-preview"]
        fetch: false
      plugins: true
      assistants: false
      titleConvo: true
      titleModel: 'openai/gpt-4o-mini'
      modelDisplayLabel: 'OpenRouter'
```

OpenRouterのモデル名は[Models | OpenRouter](https://openrouter.ai/models)ページで確認できます。

## １０．関連記事

https://qiita.com/potofo/items/1f5891e60bb7c6844e8d

## １１.参考URL

https://www.librechat.ai/

https://github.com/danny-avila/LibreChat