Справочник
Хранилище (S3 / R2 / MinIO)
Настройте, где хранятся вложения, документы базы знаний и ресурсы.
AskAIs Customer Service работает с любым объектным хранилищем, совместимым с S3. Смените провайдера, отредактировав несколько переменных .env — код остаётся прежним. Ниже: AWS S3, Cloudflare R2 и самостоятельно размещённый MinIO.
Что хранится
- Вложения сообщений (изображения, видео, PDF и т. д.), загруженные посетителями или агентами
- Исходные документы базы знаний (для загрузки в RAG)
- Шаблон ключа объекта:
tenants/{tenantId}/yyyy/mm/{uuid}.{ext}
Cloudflare R2 (рекомендуется для самостоятельного хостинга)
У R2 нет платы за исходящий трафик (egress) — идеально, если вы раздаёте вложения многим пользователям. Получите access key и secret в панели 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"Чтобы получить публичный 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"Политика бакета должна разрешать s3:PutObject для access key, а также публичное чтение, если вам нужны загрузки без аутентификации. В противном случае при каждом чтении мы будем переходить к предподписанным 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 явно задайте правила CORS через API. - Регион
autoработает только для R2. AWS / B2 требуют реального имени региона. - S3_PUBLIC_URL — если значение пустое, SDK строит URL из
S3_ENDPOINT + bucket. Задавайте его явно, когда находитесь за CDN или пользовательским доменом.