---
title: "Web tier sou Cloudflare Workers"
description: "Kouri yon web tier Quire ki gen kapasite redui sou Cloudflare Workers."
image: "https://docs.quirelms.com/og.png"
---

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

# Web tier sou Cloudflare Workers

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

Konsepsyon an nan `docs/architecture/23-ops.md`, seksyon 6. Workers yo kouri yon web tier redui. Menm fonksyon ak lòt vèsyon yo pa nan objektif Workers yo (PRD seksyon 12): lè yo kòmanse, yo refize fonksyon sib sa a pa kapab fè, epi yo bay non li.

## Estati nan vèsyon sa a <!--quire:status-in-this-release-->

Konfigirasyon an pare (`apps/web/wrangler.jsonc`, preset Nitro `cloudflare-module`, pon Hyperdrive ak verifikasyon demaraj yo). Yon Worker bezwen depo ki konpatib ak S3 pou R2 (`QUIRE_STORAGE_DRIVER=s3`), yon driver reyalite-a-kounye a ki mache nan plizyè demann (`QUIRE_REALTIME_DRIVER=durable_objects` oswa `centrifugo`), yon kach pataje (`QUIRE_CACHE_DRIVER=postgres` oswa `valkey`) ak yon founisè imèl HTTP. San eleman sa yo, Worker la refize kòmanse epi log li bay non chak paramèt. Driver Durable Objects la se yon client Worker reyalite-a-kounye a nan `apps/realtime-worker` (yon Durable Object pou chak chanèl pou distribisyon, prezans ak istwa; youn pou chak moun pou dekoneksyon); deplwaye li ansanm jan sa esplike pi ba a, oswa sèvi ak Centrifugo.

## Konpozan yo <!--quire:the-pieces-->

| Konpozan | Sou Cloudflare |
| --- | --- |
| `web` | Yon Worker avèk `nodejs_compat` |
| Postgres | Deyò, aksesib atravè Hyperdrive: `HYPERDRIVE` pou wòl aplikasyon an; `REPORT_HYPERDRIVE` pou wòl rapò a sou menm bazdone fizik la. Lè web tier la kòmanse, li kopye chak chèn koneksyon nan `DATABASE_URL` ak `QUIRE_REPORT_DATABASE_URL` |
| Fichye | R2, atravè API S3 li a (`S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com`); binding `FILES` la konekte bucket la |
| Travay an aryè-plan | pg-boss sou Hyperdrive lè fòk travay la antre nan ke nan menm tan ak yon ekriti. Si yo mete `QUIRE_QUEUE_DRIVER=cloudflare` sou worker konpayon an, travay lejè yo (notifikasyon san lòd ak livrezon webhook) pase nan Cloudflare Queues; konsa yo pa sonde Postgres pou sa yo. Worker konpayon an kouri toude |
| Reyalite-a-kounye a | Worker reyalite-a-kounye a, `apps/realtime-worker`, avèk Durable Objects |
| `worker`, `scheduler`, `collab`, `content`, ClamAV, Gotenberg, ffmpeg | Yon host container konpayon. Worker pa kapab kouri yo |
| Trase | Workers observability, aktive nan `wrangler.jsonc` |

`REPORT_HYPERDRIVE` bay wòl rapò a pou bazdone fizik `HYPERDRIVE` idantifye a. Jan sa esplike pi ba a, sib sa a pa sèvi tenant ki fikse nan lòt bazdone fizik.

## Sa sib sa a pa kapab fè <!--quire:what-this-target-cannot-do-->

Li refize lè li kòmanse epi li bay lis chak pwoblèm anmenmtan:

- **Pa gen SMTP.** Sèvi ak yon founisè HTTP nan `QUIRE_EMAIL_PROVIDER_CONFIG`.
- **Pa gen disk lokal.** `QUIRE_STORAGE_DRIVER` dwe nonmen depo objè.
- **Pa gen reyalite-a-kounye a oswa kach nan pwosesis la.** Workers pa pataje memwa ant demann; se poutèt sa yo refize `QUIRE_REALTIME_DRIVER=inprocess` ak `QUIRE_CACHE_DRIVER=memory`.
- **Worker la pa kouri ClamAV, Gotenberg ni ffmpeg.** Li refize `CLAMAV_URL`, `GOTENBERG_URL` ak `FFMPEG_PATH` ki mete sou Worker la; mete yo pito sou worker konpayon an.
- **Òganizasyon ki gen bazdone dedye pa disponib.** Binding Hyperdrive Worker yo fikse nan moman deplwaman, kidonk yon òganizasyon ki gen pwòp bazdone li jwenn paj "pa disponib isit la". Sèvi l nan Compose oswa Vercel.

Men yon bagay li pa refize, men fòk ou konnen: **pre-rann paj ak rejenere paj estatik piti piti pa mache sou Workers**, kèlkeswa sa dokiman framework la di. Yo rann chak route pou chak demann.

Sou sib sa a, kenbe transaction yo kout epi pa janm kite youn louvri pandan yon apèl rezo: Hyperdrive re-inisyalize eta sesyon an lè koneksyon an retounen nan pool lan, kidonk yo fikse tenant context pou chak transaction.

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

1. Kreye resous yo:
   ```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
   ```
   Mete de ID Hyperdrive yo nan `apps/web/wrangler.jsonc`.
2. Mete sekrè yo youn apre lòt avèk `bun run --bun wrangler secret put <NAME>` apati `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`. Mete paramèt senp yo (`QUIRE_APP_ORIGIN`, `QUIRE_CONTENT_ORIGIN`, `QUIRE_PLATFORM_DOMAINS`, `QUIRE_DATABASE_ID`, `S3_ENDPOINT`, `S3_BUCKET`, `QUIRE_COLLAB_URL`) nan `vars`.
3. Bati epi deplwaye apati `apps/web`:
   ```sh
   NITRO_PRESET=cloudflare-module bun run build
   bun run --bun wrangler deploy
   ```
4. Deplwaye Worker reyalite-a-kounye a a, avèk `QUIRE_REALTIME_WORKER_SECRET` ki nan web tier la epi sekrè token li a kòm `QUIRE_REALTIME_TOKEN_SECRET`. Web tier la siyen token reyalite-a-kounye a ak pwòp `QUIRE_REALTIME_TOKEN_SECRET` li, oswa `QUIRE_SECRET_KEY` si premye a pa fikse; donk sèvi ak valè li itilize a. Mete `QUIRE_REALTIME_WORKER_URL` nan web tier la pou adrès Worker la:
   ```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. Pou travay lejè pase nan Cloudflare Queues, kreye yon ke pou chak ke lejè epi mete paramèt sa yo sou worker konpayon an (yon token API ki gen dwa li ak ekri Queues):
   ```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` ak `QUIRE_QUEUE_PREFIX` si li pa `quire-`.
6. Kouri host konpayon an jan etap 3 nan [gid Vercel la](/ht/ops/vercel/) esplike. Migration yo fèt la, anvan chak deplwaman Worker.

Lè konfigirasyon an refize, `bun run --bun wrangler tail` montre "The web tier did not start on cloudflare", epi li bay chak paramèt pou chanje.

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