Referencia
Almacenamiento (S3 / R2 / MinIO)
Configura dónde se almacenan los adjuntos, los documentos de conocimiento y los recursos.
AskAIs Customer Service se comunica con cualquier almacenamiento de objetos compatible con S3. Cambia de proveedor editando unas pocas variables .env — el código es idéntico. A continuación: AWS S3, Cloudflare R2 y MinIO autoalojado.
Qué se almacena
- Adjuntos de mensajes (imágenes, vídeos, PDF, etc.) subidos por visitantes o agentes
- Documentos de origen de la base de conocimientos (para la ingesta de RAG)
- Plantilla de clave de objeto:
tenants/{tenantId}/yyyy/mm/{uuid}.{ext}
Cloudflare R2 (recomendado para autoalojamiento)
R2 no tiene tarifas de salida (egress) — perfecto si sirves adjuntos a muchos usuarios. Obtén tu access key y secret desde el panel de 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 obtener una URL pública, habilita Public access en el bucket y vincula un subdominio personalizado (panel de 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"La política del bucket debe permitir s3:PutObject para la access key, además de lectura pública si quieres descargas sin autenticación. De lo contrario, recurriremos a URL GET prefirmadas en cada lectura.
MinIO (predeterminado para desarrollo 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 económica a S3)
S3_ENDPOINT="https://s3.us-west-001.backblazeb2.com"
S3_REGION="us-west-001"
S3_BUCKET="singlink"
S3_ACCESS_KEY="..."
S3_SECRET_KEY="..."Advertencias
- CORS — el bucket debe permitir
POSTdesde el host de tu widget. La mayoría de los proveedores usan comodín por defecto; para R2, establece explícitamente las reglas de CORS a través de la API. - Región
autosolo funciona para R2. AWS / B2 requieren un nombre de región real. - S3_PUBLIC_URL — si está vacío, el SDK construye las URL a partir de
S3_ENDPOINT + bucket. Establécela explícitamente cuando estés detrás de una CDN o un dominio personalizado.