---
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/ml/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`-ലേക്കും പകർത്തും |
| ഫയലുകൾ | R2, അതിന്റെ S3 API വഴി (`S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com`); `FILES` ബൈന്റിംഗ് ബക്കറ്റ് ചേർക്കുന്നു |
| പശ്ചാത്തല ജോലികൾ | എഴുത്തോടെ ക്യൂവിലാക്കേണ്ട ജോലിയാണെങ്കിൽ Hyperdrive-ലൂടെ pg-boss. കമ്പാനിയൻ വർക്കറിൽ `QUIRE_QUEUE_DRIVER=cloudflare` ഉണ്ടെങ്കിൽ, ലഘു ജോലികൾ (ക്രമരഹിത അറിയിപ്പും വെബ്ഹുക്ക് ഡെലിവറികളും) പകരം Cloudflare Queues വഴി പോകും, അതിനാൽ Postgres അവയ്ക്കായി പോള് ചെയ്യപ്പെടില്ല. കമ്പാനിയൻ വർക്കർ രണ്ടും പ്രവർത്തിപ്പിക്കും |
| റിയൽടൈം | റിയൽടൈം Worker, `apps/realtime-worker`, Durable Objects സഹിതം |
| `worker`, `scheduler`, `collab`, `content`, ClamAV, Gotenberg, ffmpeg | ഒരു കമ്പാനിയൻ കണ്ടെയ്നർ ഹോസ്റ്റ്. ഒരു Worker-ന് അവ പ്രവർത്തിപ്പിക്കാൻ കഴിയില്ല |
| ട്രേസിംഗ് | Workers observability, `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. വെബ് ടയറിന്റെ `QUIRE_REALTIME_WORKER_SECRET`, കൂടാതെ അതിന്റെ ടോക്കൺ രഹസ്യം `QUIRE_REALTIME_TOKEN_SECRET` ആയി, റിയൽടൈം Worker ഡിപ്ലോയ് ചെയ്യൂ (വെബ് ടയർ റിയൽടൈം ടോക്കണുകൾ സ്വന്തം `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 ഗൈഡ്](/ml/ops/vercel/)-ലെ 3-ാം ഘട്ടത്തിലെപ്പോലെ കമ്പാനിയൻ ഹോസ്റ്റ് പ്രവർത്തിപ്പിക്കൂ. ഓരോ Worker ഡിപ്ലോയ്മെന്റിനും മുമ്പ് മൈഗ്രേഷനുകൾ അവിടെ പ്രവർത്തിക്കും.

നിരസിക്കപ്പെട്ട ക്രമീകരണം `bun run --bun wrangler tail`-ൽ "The web tier did not start on cloudflare" എന്നായി കാണപ്പെടും, തുടർന്ന് മാറ്റേണ്ട ഓരോ ക്രമീകരണവും.

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