---
title: "Ang web tier sa Cloudflare Workers"
description: "Padagana ang pinamubong web tier sa Quire sa Cloudflare Workers."
image: "https://docs.quirelms.com/og.png"
---

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

# Ang web tier sa Cloudflare Workers

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

Gihulagway ang disenyo sa seksiyon 6 sa `docs/architecture/23-ops.md`. Pinamubong web tier ang gipadagan sa Workers. Dili sakop sa tumong ang pagkaparehas sa tanang feature sa Workers (PRD seksiyon 12): kon dili mahimo niining target, isalikway kini sa pagsugod ug nganlan.

## Kahimtang niining release <!--quire:status-in-this-release-->

Andam na ang configuration (`apps/web/wrangler.jsonc`, ang Nitro preset nga `cloudflare-module`, ang Hyperdrive bridge ug ang mga pagsusi sa pagsugod). Nagkinahanglan ang Worker og S3-compatible storage para sa R2 (`QUIRE_STORAGE_DRIVER=s3`), realtime driver nga moandar sa daghang request (`QUIRE_REALTIME_DRIVER=durable_objects` o `centrifugo`), gipaambitang cache (`QUIRE_CACHE_DRIVER=postgres` o `valkey`) ug HTTP email provider. Kon wala kini, dili mosugod ang Worker ug ilista sa log ang matag setting. Kliyente sa realtime Worker sa `apps/realtime-worker` ang Durable Objects driver (usa ka Durable Object kada channel para sa fan-out, presence ug history, ug usa kada tawo para sa mga disconnect); i-deploy kini tupad sa web tier sumala sa ubos, o gamita ang Centrifugo.

## Mga bahin <!--quire:the-pieces-->

| Bahin | Sa Cloudflare |
| --- | --- |
| `web` | Usa ka Worker nga adunay `nodejs_compat` |
| Postgres | Eksternal, maabot pinaagi sa Hyperdrive: `HYPERDRIVE` para sa application role, `REPORT_HYPERDRIVE` para sa report role niadtong pisikal nga database. Kopyahon sa web tier ang matag connection string ngadto sa `DATABASE_URL` ug `QUIRE_REPORT_DATABASE_URL` sa pagsugod niini |
| Files | R2, pinaagi sa S3 API (`S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com`); ikabit sa `FILES` binding ang bucket |
| Background jobs | pg-boss pinaagi sa Hyperdrive kon kinahanglan i-enqueue ang job uban sa write. Kon gamiton sa kauban nga worker ang `QUIRE_QUEUE_DRIVER=cloudflare`, moagi sa Cloudflare Queues ang gaan nga mga job (notifications ug webhook delivery nga walay gitakdang han-ay), busa dili pangutan-on alang niini ang Postgres. Ang kauban nga worker maoy mopadagan sa duha |
| Realtime | Ang realtime Worker nga `apps/realtime-worker`, uban sa Durable Objects |
| `worker`, `scheduler`, `collab`, `content`, ClamAV, Gotenberg, ffmpeg | Kauban nga container host. Dili kini mapadagan sa Worker |
| Tracing | Workers observability, nga gi-enable sa `wrangler.jsonc` |

Naghatag ang `REPORT_HYPERDRIVE` sa report role para sa pisikal nga database nga ginganlan sa `HYPERDRIVE`. Dili makaserbisyo niining target sa mga tenant nga naka-pin sa dugang nga pisikal nga database, sumala sa gihulagway sa ubos.

## Dili mahimo niining target <!--quire:what-this-target-cannot-do-->

Isalikway sa pagsugod samtang ilista ang tanan nga problema:

- **Walay SMTP.** Gamita ang HTTP provider sa `QUIRE_EMAIL_PROVIDER_CONFIG`.
- **Walay lokal nga disk.** Kinahanglan nagtudlo ang `QUIRE_STORAGE_DRIVER` sa object storage.
- **Walay in-process realtime o cache.** Dili magpaambit og memorya ang mga Worker tali sa mga request, busa isalikway ang `QUIRE_REALTIME_DRIVER=inprocess` ug `QUIRE_CACHE_DRIVER=memory`.
- **Walay ClamAV, Gotenberg o ffmpeg sulod sa Worker.** Isalikway ang `CLAMAV_URL`, `GOTENBERG_URL` ug `FFMPEG_PATH` kon itakda kini sa Worker; itakda hinuon kini sa kauban nga worker.
- **Walay organisasyon nga adunay kaugalingong database.** Naka-fix sa oras sa pag-deploy ang mga Hyperdrive binding sa Worker, busa ipakita ang klarong panid nga “dili magamit dinhi” sa organisasyong adunay kaugalingong database. Iserbisyo kini gikan sa Compose o Vercel.

Aduna pay usa ka butang nga wala isalikway apan kinahanglan mahibaloan: **dili molihok sa Workers ang prerendering ug incremental static regeneration**, bisan unsay isulti sa dokumentasyon sa framework. I-render ang matag route sa matag request.

Niining target, himoa nga mubo ang mga transaction ug ayaw kini ipadayon samtang nagtawag sa network: i-reset sa Hyperdrive ang kahimtang sa session kon ibalik ang connection ngadto sa pool, busa itakda ang tenant context kada transaction.

## Pag-deploy <!--quire:deploying-->

1. Paghimo sa mga 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
   ```
   Ibutang ang duha ka Hyperdrive id sa `apps/web/wrangler.jsonc`.
2. Itakda tagsa-tagsa ang mga sekreto pinaagi sa `bun run --bun wrangler secret put <NAME>` gikan sa `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`. Ang mga ordinaryong setting (`QUIRE_APP_ORIGIN`, `QUIRE_CONTENT_ORIGIN`, `QUIRE_PLATFORM_DOMAINS`, `QUIRE_DATABASE_ID`, `S3_ENDPOINT`, `S3_BUCKET`, `QUIRE_COLLAB_URL`) ibutang sa `vars`.
3. Build-a ug i-deploy gikan sa `apps/web`:
   ```sh
   NITRO_PRESET=cloudflare-module bun run build
   bun run --bun wrangler deploy
   ```
4. I-deploy ang realtime Worker uban sa `QUIRE_REALTIME_WORKER_SECRET` sa web tier ug token secret niini isip `QUIRE_REALTIME_TOKEN_SECRET` (pirmahan sa web tier ang realtime token gamit ang kaugalingong `QUIRE_REALTIME_TOKEN_SECRET`, o ang `QUIRE_SECRET_KEY` kon wala kini itakda, busa gamita ang bisan hain niini nga gigamit niini). Itakda ang `QUIRE_REALTIME_WORKER_URL` sa web tier aron itudlo sa address niini:
   ```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. Para sa gaan nga job sa Cloudflare Queues, paghimo og usa ka queue kada gaan nga queue ug itakda kini sa kauban nga worker (kinahanglan API token nga makabasa ug makasulat sa 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`, ug `QUIRE_QUEUE_PREFIX` kon dili `quire-`.
6. Padagana ang kauban nga host sama sa lakang 3 sa [giya sa Vercel](/ceb/ops/vercel/). Didto modagan ang migration sa dili pa ang matag deployment sa Worker.

Ipakita ang gisalikway nga configuration sa `bun run --bun wrangler tail` isip "The web tier did not start on cloudflare", gisundan sa matag setting nga usbon.

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