參考
儲存(S3 / R2 / MinIO)
設定附件、知識文件與資源的儲存位置。
AskAIs 智能客服系統 可對接任意相容 S3 的物件儲存。只需修改幾個 .env變數即可切換服務商 —— 程式碼完全相同。以下涵蓋 AWS S3、Cloudflare R2 以及自架的 MinIO。
會儲存哪些內容
- 訪客或客服上傳的訊息附件(圖片、影片、PDF 等)
- 知識庫來源文件(用於 RAG 匯入)
- 物件 key 範本:
tenants/{tenantId}/yyyy/mm/{uuid}.{ext}
Cloudflare R2(建議用於自架)
R2 出口流量零費用 —— 當你需要向大量使用者分發附件時尤其理想。在 R2 控制台 →Manage R2 API Tokens 中取得你的 access key 與 secret。
# .env
S3_ENDPOINT="https://<account-id>.r2.cloudflarestorage.com"
S3_REGION="auto"
S3_BUCKET="singlink"
S3_ACCESS_KEY="..."
S3_SECRET_KEY="..."
# Public URL for the bucket (custom domain pointing to R2 public access)
S3_PUBLIC_URL="https://files.acme.com"要取得公開 URL,請在儲存桶上啟用 Public access 並繫結自訂子網域(R2 控制台 → 儲存桶 → Settings → Custom Domains)。
AWS S3
S3_ENDPOINT="" # leave empty for AWS
S3_REGION="us-east-1"
S3_BUCKET="singlink-prod"
S3_ACCESS_KEY="AKIA..."
S3_SECRET_KEY="..."
S3_PUBLIC_URL="https://singlink-prod.s3.amazonaws.com"儲存桶政策必須允許該 access key 執行 s3:PutObject,若希望支援免驗證下載,還需 允許公開讀取。否則我們會在每次讀取時回退到預簽名的 GET URL。
MinIO(本機開發預設)
S3_ENDPOINT="http://localhost:9002"
S3_REGION="us-east-1"
S3_BUCKET="singlink"
S3_ACCESS_KEY="minio"
S3_SECRET_KEY="minio_dev_password"
S3_PUBLIC_URL="http://localhost:9002/singlink"Backblaze B2(便宜的 S3 替代方案)
S3_ENDPOINT="https://s3.us-west-001.backblazeb2.com"
S3_REGION="us-west-001"
S3_BUCKET="singlink"
S3_ACCESS_KEY="..."
S3_SECRET_KEY="..."注意事項
- CORS —— 儲存桶需要允許來自你元件所在主機的
POST請求。 多數服務商預設使用萬用字元;對於 R2,請透過 API 明確設定 CORS 規則。 - 區域
auto僅對 R2 有效。AWS / B2 需要真實的區域名稱。 - S3_PUBLIC_URL —— 若為空,SDK 會根據
S3_ENDPOINT + bucket建構 URL。在 CDN 或自訂網域後面時請明確設定。