Skip to main content
LibreChat is joining ClickHouse to power the open-source Agentic Data Stack 🎉 Learn more
LibreChat

Azure Blob Storage

このドキュメントでは、LibreChatでAzure Blob Storageをセットアップするための手順を説明します。

本番環境のセットアップ

Azure Blob Storageは、LibreChat内のファイルに対してスケーラブルで安全なオブジェクトストレージを提供します。Azure Blob Storageを設定するには、以下の手順に従ってください。

1. Azure Storage Account を作成する

  1. Azure にサインイン:

    • Azure Portal を開き、Microsoftアカウントでサインインします。
  2. ストレージアカウントの作成:

    • "Create a resource" をクリックし、"Storage account" を検索します。
    • "Create" をクリックし、必要な詳細を入力します:
      • サブスクリプションとリソースグループ: サブスクリプションを選択し、既存のリソースグループを選択するか、新しく作成してください。
      • ストレージアカウント名: 一意の名前を入力します(例: mylibrechatstorage)。
      • Region: ユーザーに最も近いリージョンを選択してください。
      • パフォーマンスと冗長性: ニーズに最適なパフォーマンスティアと冗長性レベルを選択してください。
    • "Review + create"(確認と作成)をクリックし、続いて "Create"(作成)をクリックします。デプロイが完了するまで待ちます。

2. 認証のセットアップ

Azure Storage Accountで認証を行うには、2つの選択肢があります。

オプション A: 接続文字列を使用する

  1. アクセスキーに移動:

    • 新しく作成したストレージアカウントで、サイドバーの "Access keys" に移動します。
  2. 接続文字列をコピー:

    • 提供された接続文字列のいずれかをコピーしてください。この文字列には、Blob Storageアカウントへの接続に必要な認証情報が含まれています。

オプション B: マネージド ID の使用

LibreChatアプリケーションがManaged IdentityをサポートするAzureサービス(Azure VM、App Service、AKSなど)上で実行されている場合は、接続文字列の代わりにそれを使用できます。

  1. マネージドIDの割り当て:

    • Azureリソース(VM、App Service、またはAKS)で、システム割り当てまたはユーザー割り当てのManaged Identityが有効になっていることを確認してください。
  2. ストレージ権限の付与:

    • ストレージアカウントで、マネージドIDに Storage Blob Data Contributor(または同様のスコープのロール)を割り当てます。これにより、接続文字列を使用せずにアプリケーションからBlob Storageにアクセスできるようになります。

3. 環境変数の更新

プロジェクトのルートにある .env ファイルを作成または更新し、以下の設定を記述してください:

# Option A: Using a Connection String
AZURE_STORAGE_CONNECTION_STRING=DefaultEndpointsProtocol=https;AccountName=yourAccountName;AccountKey=yourAccountKey;EndpointSuffix=core.windows.net
 
# Option B: Using Managed Identity (do not set the connection string if using Managed Identity)
AZURE_STORAGE_ACCOUNT_NAME=yourAccountName
 
AZURE_STORAGE_PUBLIC_ACCESS=false
AZURE_CONTAINER_NAME=files
  • AZURE_STORAGE_CONNECTION_STRING: Option A を使用している場合に設定してください。
  • AZURE_STORAGE_ACCOUNT_NAME: オプション B (Managed Identity) を使用している場合に設定してください。両方を設定しないでください。
  • AZURE_STORAGE_PUBLIC_ACCESS: デフォルトでBLOBをパブリックアクセス不可にする場合は false に設定します。パブリックアクセスが必要な場合(例:公開可能な画像など)は true に設定します。
  • AZURE_CONTAINER_NAME: アプリケーションが使用するコンテナ名です(例: files)。このコンテナが存在しない場合、アプリケーションは自動的に作成します。

4. LibreChatをAzure Blob Storageで使用するように設定する

LibreChatの設定ファイル(librechat.yaml)を更新し、アプリケーションがファイル処理にAzure Blob Storageを使用するように指定します:

version: 1.3.5
cache: true
fileStrategy: "azure_blob"

Azure Blob Storageはオブジェクトストレージであり、CDNではありません

Azure Blob Storageはファイルをオリジンから直接保存および提供するものであり、CDNではありません。画像やアバターは、最適なパフォーマンスとグローバルな配信を実現するために、CDN経由で提供するのが最適です。現在、CDNを利用したストレージオプションは Firebase のみがサポートされています。

fileStrategiesを使用して、アバターと画像のみをFirebaseにルーティングし、ドキュメントはAzure Blob Storageに保持することができます:

fileStrategies:
  avatar: "firebase"
  image: "firebase"
  document: "azure_blob"

概要

  1. ストレージアカウントの作成:
    Azure Portalにサインインし、ストレージアカウントを作成して、デプロイが完了するまで待ちます。

  2. 認証の設定:

  • オプション A: ストレージアカウントの "Access keys" から接続文字列を取得します。
  • オプション B: Azure リソースでマネージド ID を有効にし、適切なストレージ権限を付与して使用します。
  1. 環境変数の更新:
    .env ファイルで、以下のいずれかを設定します:
  • AZURE_STORAGE_CONNECTION_STRING (オプション A の場合)、または
  • AZURE_STORAGE_ACCOUNT_NAME (オプション B の場合)、および以下:
  • AZURE_STORAGE_PUBLIC_ACCESS および
  • AZURE_CONTAINER_NAME
  1. LibreChatの設定:
    librechat.yaml設定ファイルでfileStrategy"azure_blob"に設定します。

これらの手順により、LibreChatアプリケーションは(コンテナが存在しない場合は)自動的にコンテナを作成し、Azure Blob Storageを使用してファイルのアップロード、ダウンロード、および削除を管理します。Managed Identityは、長期的な資格情報を不要にすることで、安全な代替手段を提供します。

Azurite を使用したローカル開発

ローカルでの開発およびテストには、Azurite を使用できます。これは、実際の Azure アカウントを必要とせずに Azure Blob Storage 統合をテストするためのローカル環境を提供する Azure Storage エミュレーターです。

1. Azurite をセットアップする

Azuriteはいくつかの方法で実行できます:

  1. VS Code用のAzurite extensionをインストールします。
  2. コマンドパレットを開きます (Ctrl+Shift+P または Cmd+Shift+P)
  3. 「Azurite: Start」を検索して選択します

これにより、デフォルト設定でAzuriteがバックグラウンドで起動します。

オプション B: Docker を使用する

docker run -p 10000:10000 -p 10001:10001 -p 10002:10002 mcr.microsoft.com/azure-storage/azurite

オプション C: npm を使用する

npm install -g azurite
azurite --silent --location /path/to/azurite/workspace --debug /path/to/debug/log

2. ローカル開発用の環境変数を設定する

.env ファイルに以下の環境変数を追加してください:

# Azurite connection string for local development
AZURE_STORAGE_CONNECTION_STRING="DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;"
AZURE_STORAGE_PUBLIC_ACCESS=true
AZURE_CONTAINER_NAME=files

注記:

  • AccountKey の値は、Azurite によって使用されるデフォルトの開発用キーです。
  • ローカル開発では、https ではなく http プロトコルを使用して接続します。
  • BlobEndpoint は、ポート 10000 で実行されているローカルの Azurite インスタンスを指します。

3. 接続の確認

アプリケーションがローカルのAzuriteインスタンスに接続できることを確認するには:

  1. LibreChat アプリケーションを起動します
  2. インターフェースを通じてファイルをアップロードしてみてください
  3. Azuriteのログを確認して、接続と操作が正常に行われているか確認してください。

VS Code拡張機能を使用している場合は、ドロップダウンから「Azurite Blob」を選択することで、出力パネルでAzuriteのログを表示できます。

注記

デフォルトの Azurite アカウントキーは、開発目的でのみ使用される固定値です。このキーを本番環境で使用しないでください。接続文字列は常に安全に管理し、パブリックリポジトリには決してコミットしないようにしてください。

このガイドはいかがでしたか?