---
title: "Cloudflare Workers मा वेब तह"
description: "Cloudflare Workers मा घटाइएको Quire वेब तह चलाउनुहोस्।"
image: "https://docs.quirelms.com/og.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://docs.quirelms.com/ne/llms.txt
> Use this file to discover all available pages before exploring further.

# Cloudflare Workers मा वेब तह

<span id="the-web-tier-on-cloudflare-workers"></span>

डिजाइन `docs/architecture/23-ops.md` खण्ड 6 हो। Workers ले घटाइएको
वेब तह चलाउँछन्। Workers मा सुविधा समानता दायराबाहिर छ (PRD खण्ड 12): यो
लक्ष्यले गर्न नसक्ने कुरा सुरु हुँदा नामैसहित अस्वीकार हुन्छ।

## यस रिलिजमा स्थिति <!--quire:status-in-this-release-->

कन्फिगरेसन ठाउँमा छ (`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 प्रयोग गर्नुहोस्।

## टुक्राहरू <!--quire:the-pieces-->

| टुक्रा | 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` ले नाम दिएको भौतिक डेटाबेसका लागि प्रतिवेदन भूमिका दिन्छ।
यो लक्ष्यले तल वर्णन गरेअनुसार थप भौतिक डेटाबेसमा पिन गरिएका टेनान्ट सेवा गर्दैन।

## यो लक्ष्यले के गर्न सक्दैन <!--quire:what-this-target-cannot-do-->

सुरुमा अस्वीकार, हरेक समस्या एकैचोटि सूचीबद्ध:

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

## परिनियोजन गर्ने <!--quire:deploying-->

1. स्रोत बनाउनुहोस्:
   ```sh
   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` बाट निर्माण र परिनियोजन गर्नुहोस्:
   ```sh
   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` लाई यसको ठेगानामा सेट गर्नुहोस्:
   ```sh
   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 टोकन):
   ```sh
   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 मार्गदर्शिका](/ne/ops/vercel/) मा जस्तै, चरण 3 चलाउनुहोस्।
   माइग्रेसन त्यहाँ चल्छन्, हरेक Worker परिनियोजनअघि।

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

Source: https://docs.quirelms.com/ne/ops/cloudflare/index.mdx
