संदर्भ
स्टोरेज (S3 / R2 / MinIO)
कॉन्फ़िगर करें कि अटैचमेंट, नॉलेज दस्तावेज़ और एसेट कहाँ संग्रहीत किए जाते हैं।
AskAIs Customer Service किसी भी S3-संगत ऑब्जेक्ट स्टोर से बात करता है। कुछ .env वेरिएबल संपादित करके प्रदाता बदलें — कोड एक जैसा रहता है। नीचे: AWS S3, Cloudflare R2, और स्वयं-होस्ट किया गया MinIO।
क्या संग्रहीत होता है
- विज़िटर या एजेंट द्वारा अपलोड किए गए संदेश अटैचमेंट (छवियाँ, वीडियो, PDF आदि)
- नॉलेज बेस स्रोत दस्तावेज़ (RAG इन्जेशन के लिए)
- ऑब्जेक्ट key टेम्पलेट:
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"बकेट नीति को access key के लिए s3:PutObject की अनुमति देनी चाहिए, साथ ही यदि आप बिना प्रमाणीकरण के डाउनलोड चाहते हैं तो सार्वजनिक पठन की भी। अन्यथा हम हर पठन पर presigned 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 के लिए API के माध्यम से CORS नियम स्पष्ट रूप से सेट करें। - क्षेत्र
autoकेवल R2 के लिए काम करता है। AWS / B2 को एक वास्तविक क्षेत्र नाम चाहिए। - S3_PUBLIC_URL — यदि खाली है, तो SDK
S3_ENDPOINT + bucketसे URL बनाता है। CDN या कस्टम डोमेन के पीछे होने पर इसे स्पष्ट रूप से सेट करें।