Référence
Stockage (S3 / R2 / MinIO)
Configurez l'emplacement de stockage des pièces jointes, des documents de connaissances et des ressources.
AskAIs Customer Service communique avec n'importe quel stockage d'objets compatible S3. Changez de fournisseur en modifiant quelques variables .env — le code est identique. Ci-dessous : AWS S3, Cloudflare R2 et MinIO auto-hébergé.
Ce qui est stocké
- Pièces jointes des messages (images, vidéos, PDF, etc.) envoyées par les visiteurs ou les agents
- Documents sources de la base de connaissances (pour l'ingestion RAG)
- Modèle de clé d'objet :
tenants/{tenantId}/yyyy/mm/{uuid}.{ext}
Cloudflare R2 (recommandé pour l'auto-hébergement)
R2 n'a aucun frais de sortie (egress) — parfait si vous diffusez des pièces jointes à de nombreux utilisateurs. Récupérez votre access key et votre secret depuis le tableau de bord 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"Pour obtenir une URL publique, activez Public access sur le bucket et liez un sous-domaine personnalisé (tableau de bord 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 politique du bucket doit autoriser s3:PutObjectpour l'access key, plus la lecture publique si vous voulez des téléchargements non authentifiés. Sinon, nous reviendrons à des URL GET présignées à chaque lecture.
MinIO (par défaut pour le développement 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 (alternative S3 économique)
S3_ENDPOINT="https://s3.us-west-001.backblazeb2.com"
S3_REGION="us-west-001"
S3_BUCKET="singlink"
S3_ACCESS_KEY="..."
S3_SECRET_KEY="..."Mises en garde
- CORS — le bucket doit autoriser le
POSTdepuis l'hôte de votre widget. La plupart des fournisseurs utilisent un joker par défaut ; pour R2, définissez explicitement les règles CORS via l'API. - Région
autone fonctionne que pour R2. AWS / B2 exigent un vrai nom de région. - S3_PUBLIC_URL — si vide, le SDK construit les URL à partir de
S3_ENDPOINT + bucket. Définissez-la explicitement derrière un CDN ou un domaine personnalisé.