डिजाइन docs/architecture/23-ops.md खण्ड 6 हो। Workers ले घटाइएको
वेब तह चलाउँछन्। Workers मा सुविधा समानता दायराबाहिर छ (PRD खण्ड 12): यो
लक्ष्यले गर्न नसक्ने कुरा सुरु हुँदा नामैसहित अस्वीकार हुन्छ।
यस रिलिजमा स्थिति
कन्फिगरेसन ठाउँमा छ (apps/web/wrangler.jsonc,
cloudflare-module Nitro प्रिसेट, Hyperdrive ब्रिज र सुरुवात जाँच)।
Worker लाई R2 का लागि S3-अनुकूल भण्डारण (QUIRE_STORAGE_DRIVER=s3),
अनुरोधहरूमा रियलटाइम ड्राइभर (QUIRE_REALTIME_DRIVER=durable_objects वा centrifugo),
साझा क्यास (QUIRE_CACHE_DRIVER=postgres वा valkey) र HTTP इमेल प्रदायक चाहिन्छ।
तिनबिना Worker सुरु गर्न अस्वीकार गर्छ र लगले हरेक सेटिङ नाम दिन्छ।
Durable Objects ड्राइभर apps/realtime-worker मा रियलटाइम Worker को क्लाइन्ट हो
(फ्यान-आउट, उपस्थिति र इतिहासका लागि प्रति च्यानल एउटा Durable Object, विच्छेदका लागि प्रति व्यक्ति एउटा);
तल जस्तै सँगै परिनियोजन गर्नुहोस्, वा Centrifugo प्रयोग गर्नुहोस्।
टुक्राहरू
टुक्रा
Cloudflare मा
web
nodejs_compat सहित Worker
Postgres
Hyperdrive मार्फत बाह्य: अनुप्रयोग भूमिकाका लागि HYPERDRIVE, उही भौतिक डेटाबेसमा प्रतिवेदन भूमिकाका लागि REPORT_HYPERDRIVE। वेब तहले सुरु हुँदा हरेक जडान स्ट्रिङ DATABASE_URL र QUIRE_REPORT_DATABASE_URL मा प्रतिलिपि गर्छ
Files
यसको S3 API मार्फत R2 (S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com); FILES बाइन्डिङले बकेट जोड्छ
Background jobs
लेखनसँग पङ्क्तिबद्ध हुनुपर्ने कामका लागि Hyperdrive मा pg-boss। साथी वर्करमा QUIRE_QUEUE_DRIVER=cloudflare सहित, हल्का काम (अक्रमित सूचना र webhook वितरण) यसको सट्टा Cloudflare Queues मार्फत जान्छन्, त्यसैले Postgres तिनका लागि पोल गरिँदैन। साथी वर्करले दुवै चलाउँछ
Realtime
रियलटाइम Worker, apps/realtime-worker, Durable Objects सहित
REPORT_HYPERDRIVE ले HYPERDRIVE ले नाम दिएको भौतिक डेटाबेसका लागि प्रतिवेदन भूमिका दिन्छ।
यो लक्ष्यले तल वर्णन गरेअनुसार थप भौतिक डेटाबेसमा पिन गरिएका टेनान्ट सेवा गर्दैन।
यो लक्ष्यले के गर्न सक्दैन
सुरुमा अस्वीकार, हरेक समस्या एकैचोटि सूचीबद्ध:
SMTP छैन।QUIRE_EMAIL_PROVIDER_CONFIG मा HTTP प्रदायक प्रयोग गर्नुहोस्।
स्थानीय डिस्क छैन।QUIRE_STORAGE_DRIVER ले वस्तु भण्डारण नाम दिनुपर्छ।
प्रक्रिया-भित्र रियलटाइम वा क्यास छैन। Workers ले अनुरोधबीच मेमोरी साझा गर्दैनन्,
त्यसैले QUIRE_REALTIME_DRIVER=inprocess र
QUIRE_CACHE_DRIVER=memory अस्वीकार हुन्छन्।
Worker मा ClamAV, Gotenberg वा ffmpeg छैन। Worker मा सेट गरिएको CLAMAV_URL,
GOTENBERG_URL र FFMPEG_PATH अस्वीकार हुन्छन्; यसको सट्टा साथी वर्करमा सेट गर्नुहोस्।
समर्पित-डेटाबेस सङ्गठन छैन। Worker को Hyperdrive बाइन्डिङ परिनियोजन समयमा स्थिर हुन्छन्,
त्यसैले आफ्नै डेटाबेस भएको सङ्गठनले स्पष्ट “यहाँ अनुपलब्ध” पृष्ठ पाउँछ। यसलाई Compose वा Vercel बाट सेवा गर्नुहोस्।
र अस्वीकार नहुने तर जान्नैपर्ने एउटा कुरा: फ्रेमवर्क दस्तावेज जे भने पनि Workers मा प्रिरेन्डरिङ र
क्रमिक स्थिर पुनरुत्पादन काम गर्दैनन्। हरेक रुट प्रति अनुरोध रेन्डर हुन्छ।
यस लक्ष्यमा कारोबार छोटो राख्नुहोस् र सञ्जाल कलबाहिर कहिल्यै नराख्नुहोस्: जडान पुलमा फर्किँदा Hyperdrive ले सत्र अवस्था रिसेट गर्छ,
त्यसैले टेनान्ट सन्दर्भ प्रति कारोबार सेट हुन्छ।
परिनियोजन गर्ने
स्रोत बनाउनुहोस्:
bun run --bun wrangler hyperdrive create quire-app --connection-string="postgres://quire_app:...@db.example.com:5432/quire"bun run --bun wrangler hyperdrive create quire-report --connection-string="postgres://quire_report:...@db.example.com:5432/quire"bun run --bun wrangler r2 bucket create quire-filesbun run --bun wrangler queues create quire-jobs
दुई Hyperdrive id apps/web/wrangler.jsonc मा राख्नुहोस्।
bun run --bun wrangler secret put <NAME> सँग apps/web बाट एक-एक गरी गोप्य सेट गर्नुहोस्:
QUIRE_SECRET_KEY, QUIRE_MASTER_KEY,
QUIRE_EMAIL_PROVIDER_CONFIG, S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY,
QUIRE_COLLAB_SIGNING_KEY, QUIRE_REALTIME_WORKER_SECRET। सादा सेटिङ
(QUIRE_APP_ORIGIN, QUIRE_CONTENT_ORIGIN, QUIRE_PLATFORM_DOMAINS,
QUIRE_DATABASE_ID, S3_ENDPOINT, S3_BUCKET, QUIRE_COLLAB_URL) vars मा जान्छन्।
apps/web बाट निर्माण र परिनियोजन गर्नुहोस्:
NITRO_PRESET=cloudflare-module bun run buildbun run --bun wrangler deploy
रियलटाइम Worker परिनियोजन गर्नुहोस्, वेब तहको QUIRE_REALTIME_WORKER_SECRET
र यसको टोकन गोप्य QUIRE_REALTIME_TOKEN_SECRET का रूपमा (वेब तहले रियलटाइम टोकन आफ्नै QUIRE_REALTIME_TOKEN_SECRET सँग हस्ताक्षर गर्छ,
वा नसेट्दा QUIRE_SECRET_KEY सँग, त्यसैले यसले जे प्रयोग गर्छ त्यही प्रयोग गर्नुहोस्), र वेब तहमा
QUIRE_REALTIME_WORKER_URL लाई यसको ठेगानामा सेट गर्नुहोस्:
cd apps/realtime-workerbun run --bun wrangler secret put QUIRE_REALTIME_WORKER_SECRETbun run --bun wrangler secret put QUIRE_REALTIME_TOKEN_SECRETbun run --bun wrangler deploy
Cloudflare Queues मा हल्का कामका लागि, प्रति हल्का पङ्क्ति एउटा पङ्क्ति बनाउनुहोस् र
साथी वर्करमा यी सेट गर्नुहोस् (Queues पढ्ने र लेख्ने API टोकन):
bun run --bun wrangler queues create quire-events-notificationsbun run --bun wrangler queues create quire-events-notifications-deadbun run --bun wrangler queues create quire-events-webhooksbun run --bun wrangler queues create quire-events-webhooks-dead
QUIRE_QUEUE_DRIVER=cloudflare, CLOUDFLARE_ACCOUNT_ID,
CLOUDFLARE_QUEUES_TOKEN, र QUIRE_QUEUE_PREFIX (quire- नभए)।
साथी होस्ट Vercel मार्गदर्शिका मा जस्तै, चरण 3 चलाउनुहोस्।
माइग्रेसन त्यहाँ चल्छन्, हरेक Worker परिनियोजनअघि।
अस्वीकृत कन्फिगरेसन bun run --bun wrangler tail मा “The web tier did
not start on cloudflare” का रूपमा देखिन्छ, पछि परिवर्तन गर्ने हरेक सेटिङसहित।