LibreChatをセルフホスティングして社内利用できるようにしました

  • URLをコピーしました!

こんにちは、開発部でバックエンドエンジニアをしている田中 湧大(@Romira915)です。

今回は社内向けのAIチャットボットツールとしてOSSのLibreChatをセルフホストして公開したのでその紹介をします。

目次

LibreChatを新たにセルフホストした理由

弊社では以前からOSSのchatbot-uiをCloud Runにセルフホストしていました。

あわせて読みたい
chatbot-ui で ChatGPT を社内利用できるようにしました こんにちは。PR TIMES 開発本部フロントエンドエンジニアのいわもと (@yoiwamoto) です。ChatGPT を業務で利用するために、OSS の chatbot-ui を社内でセルフホストして...

しかしchatbot-uiはいくつかの課題がありました。

  • 運用していたバージョン(ver1系)ではGPT-4oやGPT-4o miniなどの最新のモデルが利用できなかった。
  • chatbot-uiの最新ver2系からBaaSのSupabaseが必要になったこと 社内ではCloud Runにデプロイしていたためインフラ構成を変える必要がありました。

選択肢として以下の2つが考えられました

  • chatbot-uiのインフラ構成を見直して最新のchatbot-uiを再構築する
  • その他のOSSのAIチャットボットツールをセルフホスティングする

前者についてはSupabaseをセルフホストする必要があり、私がSupabaseについてあまり詳しくないことやセルフホストしても運営上の管理が大変になることから見送りました。

そのため、OSS製のAIチャットボットツールを探していたところ、LibreChatが使いやすそうだったため、こちらをセルフホストすることにしました。

LibreChatについて

LibreChatはオープンソースのAIチャットプラットフォームです。

LibreChat
LibreChat - The Open-Source AI Platform LibreChat brings together all your AI conversations in one unified, customizable interface.

LibreChatは以下のような特徴があります。

  • ChatGPTだけでなくGeminiやbingAIなどの複数のAIプロパイダーを利用できる
  • 現時点でStarが16.1k、コントリビュータ数が149、イシュー数が102で活発に開発されている
  • デプロイ用のdocker composeファイルが用意されている
  • プリセットやプロンプトマネージャなど豊富なカスタマイズオプションがある
  • MIT license

やったこと

今回はLibreChatをAWSのEC2上にdockerを用いてセルフホストしました。

以下の公式サイトの手順に従ってデプロイしました

あわせて読みたい
Docker (Remote Linux) These instructions are designed for someone starting from scratch for a Docker Installation on a remote Ubuntu server

社内向けツールであるためログインできる権限を絞る必要があります。

そのため .env を登録・ログインに関わる記述を以下のようにします。

ALLOW_EMAIL_LOGIN=false
ALLOW_REGISTRATION=false
ALLOW_SOCIAL_LOGIN=true
ALLOW_SOCIAL_REGISTRATION=true
ALLOW_PASSWORD_RESET=false

# Google
GOOGLE_CLIENT_ID=xxxx
GOOGLE_CLIENT_SECRET=xxxx
GOOGLE_CALLBACK_URL=/oauth/google/callback

まず、e-mailによる新規登録・ログインを無効にします。

次にソーシャルアカウントによる新規登録・ログインを許可します。

最後にGoogle OAuthの CLIENT_IDCLIENT_SECRET を設定します。

Google Cloud上のOAuth 同意画面の設定でユーザーの種類を「内部」にすることで組織内の Google Workspace ユーザーのみに使用を制限できます。

OAuth 同意画面

さらにアプリケーションを保護するために、EC2の前段にALBを設置し、Googleアカウント認証を挟むようにしました。

ALBでGoogle認証を行う

AWS ALBではリスナールールのアクションを追加することで追加の実装をすることなくGoogleアカウントなどの認証を挟むことができます。

まず認証を入れたいルールの編集から「OpenID または Amazon Cognito を使用する」を有効化します。

画像ではデフォルトのルールを編集しています。

OpenIDを使用する設定

アイデンティティプロバイダーや発行者などはGoogleアカウント認証の場合は以下のようになります。

IdPの情報を入力

クライアントIDや、クライアントシークレットは先ほどlibrechatに使った値を使い回すこともできますが、今回はALB用に新規発行した値を入力しました。

Google認証側の承認済みのリダイレクト URIは以下の値を入力します。

https://{YOUR DOMAIN}/oauth2/idpresponse

ここまででALBのGoogle認証設定は完了です。

YOUR DOMAIN にアクセスするとGoogleログインが求められると思います。

まとめ

今回はChatbot-uiの代替先としてLibreChatをセルフホスティングしたことについてご紹介しました。

LibreChatはcompose.ymlが提供されているので手軽に検証したりデプロイ出来ることが魅力的だと感じました。

この記事が少しでも参考になれば幸いです。

  • URLをコピーしました!

この記事を書いた人

PR TIMESの開発本部でバックエンドエンジニアをしています。

目次