المرجع
التخزين (S3 / R2 / MinIO)
اضبط مكان تخزين المرفقات ومستندات المعرفة والأصول.
يتواصل AskAIs Customer Service مع أي مخزن كائنات متوافق مع S3. بدّل المزوّد بتعديل بضعة متغيرات .env — والشيفرة تظل نفسها. أدناه: AWS S3 و Cloudflare R2 و MinIO المستضاف ذاتيًا.
ما الذي يُخزَّن
- مرفقات الرسائل (الصور والفيديو وملفات PDF وغيرها) التي يرفعها الزوّار أو الوكلاء
- مستندات مصدر قاعدة المعرفة (لاستيعاب RAG)
- قالب مفتاح الكائن:
tenants/{tenantId}/yyyy/mm/{uuid}.{ext}
Cloudflare R2 (موصى به للاستضافة الذاتية)
لا توجد رسوم خروج (egress) في R2 — مثالي إذا كنت تقدّم المرفقات لكثير من المستخدمين. احصل على 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 لمفتاح الوصول، إضافة إلى القراءة العامة إذا أردت تنزيلات دون مصادقة. وإلا فسنرجع إلى عناوين URL GET موقّعة مسبقًا عند كل قراءة.
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من مضيف الأداة (widget) الخاصة بك. تستخدم معظم المزوّدين قيمة عامة (wildcard) افتراضيًا؛ أما بالنسبة لـ R2 فاضبط قواعد CORS صراحةً عبر API. - المنطقة
autoتعمل مع R2 فقط. أما AWS / B2 فتتطلب اسم منطقة حقيقيًا. - S3_PUBLIC_URL — إذا كان فارغًا، يبني SDK عناوين URL من
S3_ENDPOINT + bucket. اضبطه صراحةً عند وجودك خلف CDN أو نطاق مخصص.