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

Azure Blob Storage

Dokumen ini menyediakan instruksi untuk mengatur Azure Blob Storage untuk LibreChat

Pengaturan Produksi

Azure Blob Storage menawarkan penyimpanan objek yang dapat diskalakan dan aman untuk file di LibreChat. Ikuti langkah-langkah berikut untuk mengonfigurasi Azure Blob Storage Anda.

1. Buat Azure Storage Account

  1. Masuk ke Azure:

  2. Buat Akun Penyimpanan (Storage Account):

    • Klik "Create a resource" dan cari "Storage account".
    • Klik "Create" dan isi detail yang diperlukan:
      • Langganan & Grup Sumber Daya: Pilih langganan Anda dan pilih grup sumber daya yang sudah ada atau buat yang baru.
      • Nama Akun Penyimpanan: Masukkan nama unik (contoh: mylibrechatstorage).
      • Wilayah: Pilih wilayah yang paling dekat dengan pengguna Anda.
      • Performa & Redundansi: Pilih tingkat performa dan tingkat redundansi yang paling sesuai dengan kebutuhan Anda.
    • Klik "Review + Create" lalu "Create". Tunggu hingga penyebaran (deployment) selesai.

2. Mengatur Autentikasi

Anda memiliki dua opsi untuk melakukan autentikasi dengan Azure Storage Account Anda:

Opsi A: Menggunakan Connection String

  1. Arahkan ke Access Keys:

    • Di akun penyimpanan yang baru Anda buat, buka "Access keys" di bilah sisi.
  2. Salin Connection String:

    • Salin salah satu string koneksi yang disediakan. String ini mencakup kredensial yang diperlukan untuk terhubung ke akun Blob Storage Anda.

Opsi B: Menggunakan Managed Identity

Jika aplikasi LibreChat Anda berjalan pada layanan Azure yang mendukung Managed Identity (seperti Azure VM, App Service, atau AKS), Anda dapat menggunakannya sebagai pengganti connection string.

  1. Tetapkan Managed Identity:

    • Pastikan sumber daya Azure Anda (VM, App Service, atau AKS) telah mengaktifkan Managed Identity yang ditetapkan oleh sistem (system-assigned) atau oleh pengguna (user-assigned).
  2. Berikan Izin Penyimpanan:

    • Di akun penyimpanan Anda, tetapkan Storage Blob Data Contributor (atau peran dengan cakupan serupa) ke Managed Identity Anda. Ini memungkinkan aplikasi Anda untuk mengakses Blob Storage tanpa string koneksi.

3. Perbarui Variabel Lingkungan Anda

Buat atau perbarui file .env Anda di root proyek Anda dengan konfigurasi berikut:

# 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: Atur ini jika Anda menggunakan Opsi A.
  • AZURE_STORAGE_ACCOUNT_NAME: Atur ini jika Anda menggunakan Opsi B (Managed Identity). Jangan atur keduanya.
  • AZURE_STORAGE_PUBLIC_ACCESS: Atur ke false jika Anda tidak ingin blob Anda dapat diakses secara publik secara default. Atur ke true jika Anda memerlukan akses publik (misalnya, untuk gambar yang dapat dilihat publik).
  • AZURE_CONTAINER_NAME: Ini adalah nama container yang akan digunakan oleh aplikasi Anda (contoh: files). Aplikasi akan secara otomatis membuat container ini jika belum ada.

4. Konfigurasi LibreChat untuk Menggunakan Azure Blob Storage

Perbarui file konfigurasi LibreChat Anda (librechat.yaml) untuk menentukan bahwa aplikasi harus menggunakan Azure Blob Storage untuk penanganan file:

version: 1.3.5
cache: true
fileStrategy: "azure_blob"

Azure Blob Storage adalah penyimpanan objek, bukan CDN

Azure Blob Storage menyimpan dan menyajikan file secara langsung dari origin — ini bukan CDN. Gambar dan avatar paling baik disajikan melalui CDN untuk kinerja optimal dan pengiriman global. Saat ini, Firebase adalah satu-satunya opsi penyimpanan yang didukung CDN.

Anda dapat menggunakan fileStrategies untuk mengarahkan avatar dan gambar saja ke Firebase sementara tetap menyimpan dokumen di Azure Blob Storage:

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

Ringkasan

  1. Membuat Akun Penyimpanan (Storage Account):
    Masuk ke Azure Portal, buat akun penyimpanan, dan tunggu hingga penyebaran selesai.

  2. Siapkan Autentikasi:

  • Opsi A: Ambil string koneksi dari "Access keys" di akun penyimpanan Anda.
  • Opsi B: Gunakan Managed Identity dengan mengaktifkannya pada sumber daya Azure Anda dan memberikan izin penyimpanan yang sesuai.
  1. Perbarui Variabel Lingkungan:
    Di dalam file .env Anda, atur salah satu dari berikut:
  • AZURE_STORAGE_CONNECTION_STRING (untuk Opsi A), atau
  • AZURE_STORAGE_ACCOUNT_NAME (untuk Opsi B), beserta:
  • AZURE_STORAGE_PUBLIC_ACCESS dan
  • AZURE_CONTAINER_NAME.
  1. Konfigurasi LibreChat:
    Atur fileStrategy ke "azure_blob" di dalam file konfigurasi librechat.yaml Anda.

Dengan langkah-langkah ini, aplikasi LibreChat Anda akan secara otomatis membuat kontainer (jika belum ada) serta mengelola unggahan, unduhan, dan penghapusan file menggunakan Azure Blob Storage. Managed Identity menyediakan alternatif yang aman dengan menghilangkan kebutuhan akan kredensial jangka panjang.

Pengembangan Lokal dengan Azurite

Untuk pengembangan dan pengujian lokal, Anda dapat menggunakan Azurite, sebuah emulator Azure Storage yang menyediakan lingkungan lokal untuk menguji integrasi Azure Blob Storage Anda tanpa memerlukan akun Azure yang sebenarnya.

1. Siapkan Azurite

Anda dapat menjalankan Azurite dengan beberapa cara:

  1. Instal ekstensi Azurite untuk VS Code
  2. Buka palet perintah (Ctrl+Shift+P atau Cmd+Shift+P)
  3. Cari dan pilih "Azurite: Start"

Ini akan menjalankan Azurite di latar belakang dengan pengaturan default.

Opsi B: Menggunakan Docker

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

Opsi C: Menggunakan npm

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

2. Konfigurasi Variabel Lingkungan untuk Pengembangan Lokal

Tambahkan variabel lingkungan berikut ke file .env Anda:

# 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

Catatan:

  • Nilai AccountKey adalah kunci pengembangan default yang digunakan oleh Azurite
  • Koneksi menggunakan protokol http alih-alih https untuk pengembangan lokal
  • BlobEndpoint mengarah ke instans Azurite lokal yang berjalan pada port 10000

3. Verifikasi Koneksi

Untuk memverifikasi bahwa aplikasi Anda dapat terhubung ke instance Azurite lokal:

  1. Mulai aplikasi LibreChat Anda
  2. Mencoba mengunggah file melalui antarmuka
  3. Periksa log Azurite untuk mengonfirmasi koneksi dan operasi

Jika Anda menggunakan ekstensi VS Code, Anda dapat melihat log Azurite di panel Output dengan memilih "Azurite Blob" dari menu dropdown.

Catatan

Kunci akun Azurite default adalah nilai tetap yang digunakan hanya untuk tujuan pengembangan. Jangan pernah menggunakan kunci ini di lingkungan produksi. Selalu pastikan string koneksi Anda tetap aman dan jangan pernah melakukan commit ke repositori publik.

Bagaimana panduan ini?