---
title: "Die webvlak op Cloudflare Workers"
description: "Bedryf ’n verkleinde Quire-webvlak op Cloudflare Workers."
image: "https://docs.quirelms.com/og.png"
---

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

# Die webvlak op Cloudflare Workers

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

Die ontwerp staan in afdeling 6 van `docs/architecture/23-ops.md`. Workers bedryf ’n verkleinde webvlak. Gelykheid van kenmerke op Workers val buite omvang (PRD afdeling 12): wat hierdie teiken nie kan doen nie, word met die naam geweier wanneer dit begin.

## Status in hierdie vrystelling <!--quire:status-in-this-release-->

Die konfigurasie is in plek (`apps/web/wrangler.jsonc`, die `cloudflare-module` Nitro-voorinstelling, die Hyperdrive-brug en opstartkontroles). ’n Worker benodig S3-versoenbare berging vir R2 (`QUIRE_STORAGE_DRIVER=s3`), ’n intydse aandrywer oor versoeke (`QUIRE_REALTIME_DRIVER=durable_objects` of `centrifugo`), ’n gedeelde kas (`QUIRE_CACHE_DRIVER=postgres` of `valkey`) en ’n HTTP-e-posverskaffer. Sonder hulle weier die Worker om te begin en sy log noem elke instelling. Die Durable Objects-aandrywer is ’n kliënt van die intydse Worker in `apps/realtime-worker` (een Durable Object per kanaal vir verspreiding, teenwoordigheid en geskiedenis, een per persoon vir ontkoppelings); ontplooi dit saam soos hieronder, of gebruik Centrifugo.

## Die dele <!--quire:the-pieces-->

| Deel | Op Cloudflare |
| --- | --- |
| `web` | ’n Worker met `nodejs_compat` |
| Postgres | Ekstern via Hyperdrive: `HYPERDRIVE` vir die toepassingrol, `REPORT_HYPERDRIVE` vir verslagrol op dieselfde fisiese databasis. Die webvlak kopieer elke verbindingsstring na `DATABASE_URL` en `QUIRE_REPORT_DATABASE_URL` wanneer dit begin |
| Lêers | R2 via sy S3-API (`S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com`); die `FILES`-binding koppel die emmer |
| Agtergrondtake | pg-boss oor Hyperdrive wanneer ’n taak met ’n skryfbewerking in die tou geplaas moet word. Met `QUIRE_QUEUE_DRIVER=cloudflare` op die meegaande werker gaan die ligte take (ongeordende kennisgewings en webhook-aflewerings) eerder deur Cloudflare Queues, sodat Postgres nie daarvoor gepols word nie. Die meegaande werker loop albei |
| Intyds | Die intydse Worker, `apps/realtime-worker`, met Durable Objects |
| `worker`, `scheduler`, `collab`, `content`, ClamAV, Gotenberg, ffmpeg | ’n Meegaande houergasheer. ’n Worker kan hulle nie loop nie |
| Nasporing | Workers-waarneming, aangeskakel in `wrangler.jsonc` |

`REPORT_HYPERDRIVE` verskaf die verslagrol vir die fisiese databasis wat deur `HYPERDRIVE` benoem word. Hierdie teiken bedien nie tenants wat aan bykomende fisiese databasisse gepen is nie, soos hieronder beskryf.

## Wat hierdie teiken nie kan doen nie <!--quire:what-this-target-cannot-do-->

By opstart geweier, met elke probleem tegelyk gelys:

- **Geen SMTP nie.** Gebruik ’n HTTP-verskaffer in `QUIRE_EMAIL_PROVIDER_CONFIG`.
- **Geen plaaslike skyf nie.** `QUIRE_STORAGE_DRIVER` moet objekberging benoem.
- **Geen intydse diens of kas in die proses nie.** Workers deel geen geheue tussen versoeke nie, dus word `QUIRE_REALTIME_DRIVER=inprocess` en `QUIRE_CACHE_DRIVER=memory` geweier.
- **Geen ClamAV, Gotenberg of ffmpeg in die Worker nie.** `CLAMAV_URL`, `GOTENBERG_URL` en `FFMPEG_PATH` wat op die Worker gestel is, word geweier; stel hulle eerder op die meegaande werker.
- **Geen organisasies met toegewyde databasisse nie.** ’n Worker se Hyperdrive-bindings is tydens ontplooiing vasgestel, dus kry ’n organisasie met sy eie databasis ’n duidelike bladsy “hier nie beskikbaar nie”. Bedien dit vanuit Compose of Vercel.

Een ding word nie geweier nie maar moet bekend wees: **voorafweergawe en inkrementele statiese hergenerering werk nie op Workers nie**, ongeag wat die raamwerkdokumentasie sê. Elke roete word per versoek weergegee.

Hou transaksies op hierdie teiken kort en moenie hulle oor ’n netwerkoproep hou nie: Hyperdrive herstel sessietoestand wanneer ’n verbinding na die poel terugkeer, dus word tenantkonteks per transaksie ingestel.

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

1. Skep die hulpbronne:
   ```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
   ```
   Plaas die twee Hyperdrive-ID’s in `apps/web/wrangler.jsonc`.
2. Stel die geheime een vir een in met `bun run --bun wrangler secret put <NAME>` vanaf `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`. Gewone instellings (`QUIRE_APP_ORIGIN`, `QUIRE_CONTENT_ORIGIN`, `QUIRE_PLATFORM_DOMAINS`, `QUIRE_DATABASE_ID`, `S3_ENDPOINT`, `S3_BUCKET`, `QUIRE_COLLAB_URL`) gaan in `vars`.
3. Bou en ontplooi vanaf `apps/web`:
   ```sh
   NITRO_PRESET=cloudflare-module bun run build
   bun run --bun wrangler deploy
   ```
4. Ontplooi die intydse Worker met die webvlak se `QUIRE_REALTIME_WORKER_SECRET` en sy tekensekret as `QUIRE_REALTIME_TOKEN_SECRET` (die webvlak teken intydse tekens met sy eie `QUIRE_REALTIME_TOKEN_SECRET`, of met `QUIRE_SECRET_KEY` as dit nie gestel is nie; gebruik dus wat dit ook al gebruik), en stel `QUIRE_REALTIME_WORKER_URL` op die webvlak se adres:
   ```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. Vir ligte take op Cloudflare Queues, skep een tou per ligte tou en stel dit op die meegaande werker in (’n API-teken met lees- en skryftoegang vir 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
   ```
   Stel `QUIRE_QUEUE_DRIVER=cloudflare`, `CLOUDFLARE_ACCOUNT_ID`, `CLOUDFLARE_QUEUES_TOKEN` en `QUIRE_QUEUE_PREFIX` in as dit nie `quire-` is nie.
6. Begin die meegaande gasheer soos in stap 3 van die [Vercel-gids](/af/ops/vercel/). Migrasies loop daar voor elke Worker-ontplooiing.

’n Geweierde konfigurasie verskyn in `bun run --bun wrangler tail` as "The web tier did not start on cloudflare", gevolg deur elke instelling om te verander.

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