सामग्रीमा जानुहोस्

Cloudflare Workers मा वेब तह

Cloudflare Workers मा घटाइएको Quire वेब तह चलाउनुहोस्।

Markdown का रूपमा हेर्नुहोस्

डिजाइन 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 सहित
worker, scheduler, collab, content, ClamAV, Gotenberg, ffmpeg साथी कन्टेनर होस्ट। Worker ले तिनलाई चलाउन सक्दैन
Tracing Workers अवलोकनयोग्यता, wrangler.jsonc मा सक्षम

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 ले सत्र अवस्था रिसेट गर्छ, त्यसैले टेनान्ट सन्दर्भ प्रति कारोबार सेट हुन्छ।

परिनियोजन गर्ने

  1. स्रोत बनाउनुहोस्:
    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-files
    bun run --bun wrangler queues create quire-jobs
    दुई Hyperdrive id apps/web/wrangler.jsonc मा राख्नुहोस्।
  2. 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 मा जान्छन्।
  3. apps/web बाट निर्माण र परिनियोजन गर्नुहोस्:
    NITRO_PRESET=cloudflare-module bun run build
    bun run --bun wrangler deploy
  4. रियलटाइम Worker परिनियोजन गर्नुहोस्, वेब तहको QUIRE_REALTIME_WORKER_SECRET र यसको टोकन गोप्य QUIRE_REALTIME_TOKEN_SECRET का रूपमा (वेब तहले रियलटाइम टोकन आफ्नै QUIRE_REALTIME_TOKEN_SECRET सँग हस्ताक्षर गर्छ, वा नसेट्दा QUIRE_SECRET_KEY सँग, त्यसैले यसले जे प्रयोग गर्छ त्यही प्रयोग गर्नुहोस्), र वेब तहमा QUIRE_REALTIME_WORKER_URL लाई यसको ठेगानामा सेट गर्नुहोस्:
    cd apps/realtime-worker
    bun run --bun wrangler secret put QUIRE_REALTIME_WORKER_SECRET
    bun run --bun wrangler secret put QUIRE_REALTIME_TOKEN_SECRET
    bun run --bun wrangler deploy
  5. Cloudflare Queues मा हल्का कामका लागि, प्रति हल्का पङ्क्ति एउटा पङ्क्ति बनाउनुहोस् र साथी वर्करमा यी सेट गर्नुहोस् (Queues पढ्ने र लेख्ने API टोकन):
    bun run --bun wrangler queues create quire-events-notifications
    bun run --bun wrangler queues create quire-events-notifications-dead
    bun run --bun wrangler queues create quire-events-webhooks
    bun run --bun wrangler queues create quire-events-webhooks-dead
    QUIRE_QUEUE_DRIVER=cloudflare, CLOUDFLARE_ACCOUNT_ID, CLOUDFLARE_QUEUES_TOKEN, र QUIRE_QUEUE_PREFIX (quire- नभए)।
  6. साथी होस्ट Vercel मार्गदर्शिका मा जस्तै, चरण 3 चलाउनुहोस्। माइग्रेसन त्यहाँ चल्छन्, हरेक Worker परिनियोजनअघि।

अस्वीकृत कन्फिगरेसन bun run --bun wrangler tail मा “The web tier did not start on cloudflare” का रूपमा देखिन्छ, पछि परिवर्तन गर्ने हरेक सेटिङसहित।

नेभिगेसन

खोज्न टाइप गर्नुहोस्…

↑↓ नेभिगेट↵ छान्नुहोस्Esc बन्द गर्नुहोस्