---
title: "Cloudflare Workers-ত web tier"
description: "Cloudflare Workers-ত সীমিত Quire web tier চলাওক।"
image: "https://docs.quirelms.com/og.png"
---

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

# Cloudflare Workers-ত web tier

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

ডিজাইন `docs/architecture/23-ops.md`ৰ section 6-ত। Workers-ত সীমিত web tier চলে। Workers-ত feature parity scope-ৰ বাহিৰত (PRD section 12): এই target-এ কৰিব নোৱাৰা কাম আৰম্ভ হওঁতেই নামসহ নাকচ হয়।

## এই release-ৰ অৱস্থা <!--quire:status-in-this-release-->

Configuration সাজু (`apps/web/wrangler.jsonc`, `cloudflare-module` Nitro preset, Hyperdrive bridge আৰু startup check)। Worker-ৰ R2-ৰ বাবে S3-compatible storage (`QUIRE_STORAGE_DRIVER=s3`), request-সমূহৰ মাজত 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; disconnect-ৰ বাবে প্ৰতিজন ব্যক্তিত এটা); তলত দিয়াৰ দৰে কাষতে deploy কৰক অথবা Centrifugo ব্যৱহাৰ কৰক।

## অংশবোৰ <!--quire:the-pieces-->

| অংশ | Cloudflare-ত |
| --- | --- |
| `web` | `nodejs_compat`-সহ Worker |
| Postgres | Hyperdrive-ৰে পোৱা বাহ্যিক database: application role-ৰ বাবে `HYPERDRIVE`, একে physical database-ৰ report role-ৰ বাবে `REPORT_HYPERDRIVE`। আৰম্ভ হওঁতে web tier-এ প্ৰতিটো connection string `DATABASE_URL` আৰু `QUIRE_REPORT_DATABASE_URL`লৈ copy কৰে |
| File | S3 API-ৰে R2 (`S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com`); `FILES` binding-এ bucket সংযোগ কৰে |
| Background job | লিখাৰ সৈতে job queue কৰিবলগীয়া হ’লে Hyperdrive-ৰ ওপৰত pg-boss। সহায়ক worker-ত `QUIRE_QUEUE_DRIVER=cloudflare` দিলে সৰু job (ক্ৰমবিহীন notification আৰু webhook delivery) Cloudflare Queues-ৰে যায়, সেয়ে Postgres-ত poll নহয়। সহায়ক worker-এ দুয়োটা চলায় |
| Realtime | Durable Objects-সহ realtime Worker, `apps/realtime-worker` |
| `worker`, `scheduler`, `collab`, `content`, ClamAV, Gotenberg, ffmpeg | সহায়ক container host। Worker-এ এইবোৰ চলাব নোৱাৰে |
| Tracing | `wrangler.jsonc`ত অন কৰা Workers observability |

`REPORT_HYPERDRIVE`-এ `HYPERDRIVE`-এ নাম দিয়া physical database-ৰ report role দিয়ে। তলত বৰ্ণনা কৰা দৰে অতিৰিক্ত physical database-ত pinned tenant এই target-এ serve নকৰে।

## এই target-এ কি কৰিব নোৱাৰে <!--quire:what-this-target-cannot-do-->

আৰম্ভ কৰোঁতে প্ৰতিটো সমস্যা একেলগে দেখুৱাই নাকচ কৰে:

- **SMTP নাই।** `QUIRE_EMAIL_PROVIDER_CONFIG`ত HTTP provider ব্যৱহাৰ কৰক।
- **Local disk নাই।** `QUIRE_STORAGE_DRIVER`-এ object storage নাম দিব লাগিব।
- **In-process realtime বা cache নাই।** Worker-এ request-সমূহৰ মাজত memory ভাগ নকৰে, সেয়ে `QUIRE_REALTIME_DRIVER=inprocess` আৰু `QUIRE_CACHE_DRIVER=memory` নাকচ হয়।
- **Worker-ত ClamAV, Gotenberg বা ffmpeg নাই।** Worker-ত ছেট কৰা `CLAMAV_URL`, `GOTENBERG_URL` আৰু `FFMPEG_PATH` নাকচ হয়; ইয়াৰ সলনি সহায়ক worker-ত দিয়ক।
- **Dedicated database থকা প্ৰতিষ্ঠান নাই।** Worker-ৰ Hyperdrive binding deploy সময়ত নিৰ্দিষ্ট, সেয়ে নিজা database থকা প্ৰতিষ্ঠানে স্পষ্ট “ইয়াত উপলব্ধ নহয়” page পায়। Compose বা Vercel-ৰ পৰা serve কৰক।

এটা বস্তু নাকচ নহয় যদিও জানিব লাগিব: framework documentation-এ যিয়েই কওক, **Workers-ত prerendering আৰু incremental static regeneration নচলে**। প্ৰতিটো route প্ৰতিটো request-ত render হয়।

এই target-ত transaction চুটি ৰাখক আৰু network call চলোঁতে খোলা নাৰাখিব: connection pool-লৈ ঘূৰিলে Hyperdrive-এ session state reset কৰে, সেয়ে প্ৰতিটো transaction-ত tenant context ছেট হয়।

## Deploy <!--quire:deploying-->

1. Resource সৃষ্টি কৰক:
   ```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`ৰ পৰা এটাকৈ secret ছেট কৰক: `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`। সাধাৰণ setting (`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. Web tier-ৰ `QUIRE_REALTIME_WORKER_SECRET` আৰু ইয়াৰ token secret `QUIRE_REALTIME_TOKEN_SECRET` হিচাপে লৈ realtime Worker deploy কৰক (web tier-এ নিজৰ `QUIRE_REALTIME_TOKEN_SECRET`ৰে realtime token sign কৰে, অথবা সেয়া unset হ’লে `QUIRE_SECRET_KEY`ৰে; যিটো ই ব্যৱহাৰ কৰে সেইটো দিয়ক); web tier-ত ইয়াৰ address `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-ত সৰু job-ৰ বাবে প্ৰতিটো 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 গাইড](/as/ops/vercel/)ৰ step 3 অনুসৰি সহায়ক host চলাওক। প্ৰতিটো Worker deployment-ৰ আগতে তাত migration চলে।

Configuration নাকচ হ’লে `bun run --bun wrangler tail`ত “The web tier did not start on cloudflare” আৰু তাৰ পিছত সলনি কৰিবলগীয়া প্ৰতিটো setting দেখা যায়।

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