---
title: "Tier web ing Cloudflare Workers"
description: "Mlakokake tier web Quire sing suda ing Cloudflare Workers."
image: "https://docs.quirelms.com/og.png"
---

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

# Tier web ing Cloudflare Workers

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

Desaine iku `docs/architecture/23-ops.md` bagean 6. Workers mbukak tier web sing suda. Paritas fitur ing Workers ing njaba scope (PRD bagean 12): apa sing ora bisa ditindakake target iki ditolak nalika miwiti, kanthi jeneng.

## Status ing rilis iki <!--quire:status-in-this-release-->

Konfigurasi wis ana (`apps/web/wrangler.jsonc`, preset Nitro `cloudflare-module`, jembatan Hyperdrive lan pamriksan start-up). Worker butuh panyimpenan kompatibel S3 kanggo R2 (`QUIRE_STORAGE_DRIVER=s3`), driver realtime ing antar panjalukan (`QUIRE_REALTIME_DRIVER=durable_objects` utawa `centrifugo`), cache bareng (`QUIRE_CACHE_DRIVER=postgres` utawa `valkey`) lan panyedhiya email HTTP. Tanpane Worker nolak miwiti lan loge nyebutake saben setelan. Driver Durable Objects iku klien saka Worker realtime ing `apps/realtime-worker` (siji Durable Object per channel kanggo fan-out, presence lan riwayat, siji per wong kanggo pedhot); deploy bebarengan, kaya ing ngisor, utawa gunakake Centrifugo.

## Perangan <!--quire:the-pieces-->

| Perangan | Ing Cloudflare |
| --- | --- |
| `web` | Worker kanthi `nodejs_compat` |
| Postgres | Eksternal, digayuh liwat Hyperdrive: `HYPERDRIVE` kanggo peran aplikasi, `REPORT_HYPERDRIVE` kanggo peran laporan ing database fisik sing padha. Tier web nyalin saben string sambungan menyang `DATABASE_URL` lan `QUIRE_REPORT_DATABASE_URL` nalika miwiti |
| File | R2, liwat S3 API-e (`S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com`); binding `FILES` nempelake bucket |
| Pagawean latar | pg-boss liwat Hyperdrive nalika pagawean kudu diantrekake karo tulisan. Kanthi `QUIRE_QUEUE_DRIVER=cloudflare` ing worker pendamping, pagawean entheng (pangiriman notifikasi lan webhook sing ora urut) liwat Cloudflare Queues, supaya Postgres ora dipoll kanggo iku. Worker pendamping mbukak kalorone |
| Realtime | Worker realtime, `apps/realtime-worker`, kanthi Durable Objects |
| `worker`, `scheduler`, `collab`, `content`, ClamAV, Gotenberg, ffmpeg | Host container pendamping. Worker ora bisa mbukak |
| Tracing | Observabilitas Workers, diuripake ing `wrangler.jsonc` |

`REPORT_HYPERDRIVE` nyedhiyakake peran laporan kanggo database fisik sing dijenengi dening `HYPERDRIVE`. Target iki ora ngladeni tenant sing disematake menyang database fisik tambahan, kaya sing diterangake ing ngisor.

## Apa sing ora bisa ditindakake target iki <!--quire:what-this-target-cannot-do-->

Ditolak nalika miwiti, kanthi saben masalah kadhaptar bebarengan:

- **Tanpa SMTP.** Gunakake panyedhiya HTTP ing `QUIRE_EMAIL_PROVIDER_CONFIG`.
- **Tanpa disk lokal.** `QUIRE_STORAGE_DRIVER` kudu nyebutake panyimpenan objek.
- **Tanpa realtime utawa cache ing-proses.** Workers ora nuduhake memori antar panjalukan, dadi `QUIRE_REALTIME_DRIVER=inprocess` lan `QUIRE_CACHE_DRIVER=memory` ditolak.
- **Tanpa ClamAV, Gotenberg utawa ffmpeg ing Worker.** `CLAMAV_URL`, `GOTENBERG_URL` lan `FFMPEG_PATH` sing disetel ing Worker ditolak; setel ing worker pendamping.
- **Tanpa organisasi database khusus.** Binding Hyperdrive Worker tetep nalika deploy, dadi organisasi kanthi database dhewe entuk kaca "unavailable here" sing cetha. Ladeni saka Compose utawa Vercel.

Lan siji prakara sing ora ditolak nanging kudu dimangerteni: **prerendering lan regenerasi statis inkremental ora mlaku ing Workers**, apa wae sing diandharake dokumentasi framework. Saben rute dirender per panjalukan.

Ing target iki njaga transaksi cendhak lan ora tau nyekel siji ing antar telpon jaringan: Hyperdrive ngreset kahanan sesi nalika sambungan bali menyang pool, dadi konteks tenant disetel per transaksi.

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

1. Gawe sumbere:
   ```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
   ```
   Lebokake kalorone id Hyperdrive menyang `apps/web/wrangler.jsonc`.
2. Setel rahasia, siji-siji nganggo `bun run --bun wrangler secret put <NAME>` saka `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`. Setelan biasa (`QUIRE_APP_ORIGIN`, `QUIRE_CONTENT_ORIGIN`, `QUIRE_PLATFORM_DOMAINS`, `QUIRE_DATABASE_ID`, `S3_ENDPOINT`, `S3_BUCKET`, `QUIRE_COLLAB_URL`) menyang `vars`.
3. Build lan deploy saka `apps/web`:
   ```sh
   NITRO_PRESET=cloudflare-module bun run build
   bun run --bun wrangler deploy
   ```
4. Deploy Worker realtime, kanthi `QUIRE_REALTIME_WORKER_SECRET` tier web lan rahasia tokene minangka `QUIRE_REALTIME_TOKEN_SECRET` (tier web nandatangani token realtime nganggo `QUIRE_REALTIME_TOKEN_SECRET` dhewe, utawa nganggo `QUIRE_SECRET_KEY` nalika iku ora disetel, dadi gunakake sing digunakake), lan setel `QUIRE_REALTIME_WORKER_URL` ing tier web menyang alamate:
   ```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. Kanggo pagawean entheng ing Cloudflare Queues, gawe siji antrean per antrean entheng lan setel iki ing worker pendamping (token API kanthi Queues waca lan tulis):
   ```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`, lan `QUIRE_QUEUE_PREFIX` yen dudu `quire-`.
6. Mbukak host pendamping kaya ing [pandhuan Vercel](/jv/ops/vercel/), langkah 3. Migrasi mlaku ing kana, sadurunge saben deployment Worker.

Konfigurasi sing ditolak katon ing `bun run --bun wrangler tail` minangka "The web tier did not start on cloudflare", diterusake saben setelan sing diowahi.

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