---
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/gu/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): આ
target જે કરી શકતું નથી તેનો શરૂ થતી વખતે નામ સાથે ઇનકાર થાય છે.

## આ રિલીઝની સ્થિતિ <!--quire:status-in-this-release-->

ગોઠવણી તૈયાર છે (`apps/web/wrangler.jsonc`, `cloudflare-module` Nitro preset,
Hyperdrive bridge અને startup ચકાસણીઓ). Worker ને R2 માટે S3-compatible storage
(`QUIRE_STORAGE_DRIVER=s3`), requests વચ્ચે realtime driver
(`QUIRE_REALTIME_DRIVER=durable_objects` અથવા `centrifugo`), shared cache
(`QUIRE_CACHE_DRIVER=postgres` અથવા `valkey`) અને HTTP email provider જોઈએ. તે વિના
Worker શરૂ થવાનો ઇનકાર કરે છે અને તેના log માં દરેક setting નું નામ આવે છે.
Durable Objects driver `apps/realtime-worker` માંના realtime Worker નો client છે
(fan-out, presence અને history માટે દરેક channel દીઠ એક Durable Object; disconnects
માટે વ્યક્તિ દીઠ એક); નીચે પ્રમાણે તેને સાથે deploy કરો અથવા Centrifugo વાપરો.

## ઘટકો <!--quire:the-pieces-->

| ઘટક | Cloudflare પર |
| --- | --- |
| `web` | `nodejs_compat` ધરાવતો Worker |
| Postgres | Hyperdrive મારફતે જોડાયેલ બાહ્ય ડેટાબેઝ: application role માટે `HYPERDRIVE`, એ જ ભૌતિક database પર report role માટે `REPORT_HYPERDRIVE`. શરૂ થાય ત્યારે web tier દરેક connection string ને `DATABASE_URL` અને `QUIRE_REPORT_DATABASE_URL` માં નકલ કરે છે |
| Files | R2, તેની S3 API મારફતે (`S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com`); `FILES` binding bucket જોડે છે |
| Background jobs | લખાણ સાથે જ job queue થવી જરૂરી હોય ત્યારે Hyperdrive ઉપર pg-boss. સાથી worker પર `QUIRE_QUEUE_DRIVER=cloudflare` હોય ત્યારે હળવી jobs (ક્રમ વિનાના notification અને webhook deliveries) Cloudflare Queues મારફતે જાય છે, તેથી Postgres ને તેમના માટે poll કરાતો નથી. સાથી worker બંને ચલાવે છે |
| Realtime | Durable Objects સાથેનો realtime Worker, `apps/realtime-worker` |
| `worker`, `scheduler`, `collab`, `content`, ClamAV, Gotenberg, ffmpeg | સાથી container host. Worker આ ચલાવી શકતો નથી |
| Tracing | Workers observability, `wrangler.jsonc` માં સક્રિય |

`REPORT_HYPERDRIVE`, `HYPERDRIVE` દ્વારા નામ અપાયેલા ભૌતિક ડેટાબેઝ માટે report role
આપે છે. નીચે સમજાવ્યા મુજબ આ target વધારાના ભૌતિક ડેટાબેઝ પર નિશ્ચિત tenants ને
સેવા આપતું નથી.

## આ target શું કરી શકતું નથી <!--quire:what-this-target-cannot-do-->

શરૂઆત વખતે જ ઇનકાર થાય છે અને બધી સમસ્યાઓ એકસાથે યાદીબદ્ધ થાય છે:

- **SMTP નથી.** `QUIRE_EMAIL_PROVIDER_CONFIG` માં HTTP provider વાપરો.
- **સ્થાનિક disk નથી.** `QUIRE_STORAGE_DRIVER` એ object storage દર્શાવવું જોઈએ.
- **In-process realtime કે cache નથી.** Workers requests વચ્ચે memory વહેંચતા નથી,
  તેથી `QUIRE_REALTIME_DRIVER=inprocess` અને `QUIRE_CACHE_DRIVER=memory` નકારાય છે.
- **Worker માં ClamAV, Gotenberg કે ffmpeg નથી.** Worker પર સેટ કરેલા `CLAMAV_URL`,
  `GOTENBERG_URL` અને `FFMPEG_PATH` નકારાય છે; તેના બદલે સાથી worker પર સેટ કરો.
- **સમર્પિત database ધરાવતી organisations નથી.** Worker ના Hyperdrive bindings
  deploy વખતે જ નક્કી થાય છે, તેથી પોતાનો database ધરાવતી organisation માટે
  "unavailable here" પાનું દેખાય છે. તેને Compose અથવા Vercel પરથી સેવા આપો.

અને એક વાતનો ઇનકાર થતો નથી, પણ જાણવી જરૂરી છે: framework documentation કંઈ પણ કહે,
**Workers પર prerendering અને incremental static regeneration કામ કરતાં નથી**. દરેક
route દરેક request પર render થાય છે.

આ target પર transactions ટૂંકા રાખો અને network call દરમિયાન તેને ખુલ્લા ક્યારેય ન
રાખો: connection pool માં પાછું જાય ત્યારે Hyperdrive session state reset કરે છે,
એટલે tenant context દરેક transaction માટે સેટ થાય છે.

## Deploy કરવું <!--quire:deploying-->

1. Resources બનાવો:
   ```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 ids ને `apps/web/wrangler.jsonc` માં મૂકો.
2. `bun run --bun wrangler secret put <NAME>` વડે એક પછી એક secrets સેટ કરો, `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` માંથી build અને deploy કરો:
   ```sh
   NITRO_PRESET=cloudflare-module bun run build
   bun run --bun wrangler deploy
   ```
4. વેબ સ્તરનું `QUIRE_REALTIME_WORKER_SECRET` અને તેનો token secret
   `QUIRE_REALTIME_TOKEN_SECRET` તરીકે વાપરી realtime Worker deploy કરો (વેબ સ્તર
   પોતાના `QUIRE_REALTIME_TOKEN_SECRET` વડે realtime tokens સહી કરે છે, અથવા તે unset
   હોય તો `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 પર હળવી jobs માટે દરેક light queue માટે એક queue બનાવો અને આ
   સેટિંગ્સ સાથી worker પર મૂકો (Queues માટે read અને write અધિકાર ધરાવતું API token):
   ```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 guide](/gu/ops/vercel/) ના પગલા 3 મુજબ સાથી host ચલાવો. દરેક Worker deployment
   પહેલાં ત્યાં migrations ચાલે છે.

નકારાયેલી ગોઠવણી `bun run --bun wrangler tail` માં "The web tier did not start on cloudflare"
તરીકે દેખાય છે અને ત્યારબાદ બદલવાની દરેક setting આવે છે.

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