Referência
Armazenamento (S3 / R2 / MinIO)
Configure onde os anexos, documentos de conhecimento e ativos são armazenados.
O AskAIs Customer Service conversa com qualquer armazenamento de objetos compatível com S3. Troque de provedor editando algumas variáveis .env — o código é idêntico. Abaixo: AWS S3, Cloudflare R2 e MinIO auto-hospedado.
O que é armazenado
- Anexos de mensagens (imagens, vídeos, PDFs, etc.) enviados por visitantes ou agentes
- Documentos de origem da base de conhecimento (para ingestão de RAG)
- Modelo de chave de objeto:
tenants/{tenantId}/yyyy/mm/{uuid}.{ext}
Cloudflare R2 (recomendado para auto-hospedagem)
O R2 tem taxa de saída (egress) zero — perfeito se você serve anexos para muitos usuários. Obtenha sua access key e secret no painel do R2 → Manage R2 API Tokens.
# .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"Para obter uma URL pública, ative o Public access no bucket e vincule um subdomínio personalizado (painel do R2 → bucket → 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"A política do bucket deve permitir s3:PutObject para a access key, além de leitura pública se você quiser downloads não autenticados. Caso contrário, recorreremos a URLs GET pré-assinadas a cada leitura.
MinIO (padrão para desenvolvimento local)
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 (alternativa barata ao S3)
S3_ENDPOINT="https://s3.us-west-001.backblazeb2.com"
S3_REGION="us-west-001"
S3_BUCKET="singlink"
S3_ACCESS_KEY="..."
S3_SECRET_KEY="..."Ressalvas
- CORS — o bucket precisa permitir
POSTa partir do host do seu widget. A maioria dos provedores usa curinga por padrão; para o R2, defina explicitamente as regras de CORS via API. - Região
autosó funciona para o R2. AWS / B2 exigem um nome de região real. - S3_PUBLIC_URL — se vazio, o SDK constrói as URLs a partir de
S3_ENDPOINT + bucket. Defina explicitamente quando estiver atrás de uma CDN ou domínio personalizado.