레퍼런스
저장 공간 (S3 / R2 / MinIO)
첨부 파일, 지식 문서 및 자산이 저장되는 위치를 구성합니다.
AskAIs Customer Service 은 모든 S3 호환 객체 스토리지와 통신합니다. 몇 가지 .env 변수를 편집하면 제공업체를 전환할 수 있습니다 — 코드는 동일합니다. 아래에서는 AWS S3, Cloudflare R2 및 자체 호스팅 MinIO 를 다룹니다.
무엇이 저장되나요
- 방문자 또는 상담원이 업로드한 메시지 첨부 파일(이미지, 동영상, PDF 등)
- 지식 베이스 소스 문서(RAG 수집용)
- 객체 key 템플릿:
tenants/{tenantId}/yyyy/mm/{uuid}.{ext}
Cloudflare R2(자체 호스팅에 권장)
R2 는 송신(egress) 요금이 없습니다 — 많은 사용자에게 첨부 파일을 제공할 때 이상적입니다. 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 이나 사용자 지정 도메인 뒤에 있을 때는 명시적으로 설정하세요.