リファレンス
ストレージ(S3 / R2 / MinIO)
添付ファイル、ナレッジドキュメント、アセットの保存先を設定します。
AskAIs Customer Service はあらゆる S3 互換オブジェクトストアと通信します。いくつかの .env 変数を編集するだけでプロバイダーを切り替えられます — コードは同一です。以下では AWS S3、Cloudflare R2、セルフホストの MinIO を扱います。
何が保存されるか
- 訪問者またはエージェントがアップロードしたメッセージの添付ファイル(画像、動画、PDF など)
- ナレッジベースのソースドキュメント(RAG 取り込み用)
- オブジェクトキーのテンプレート:
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 やカスタムドメインの背後にある 場合は明示的に設定してください。