---
title: "Haen we Cloudflare Workers"
description: "Rhedeg haen we Quire lai o ran nodweddion ar Cloudflare Workers."
image: "https://docs.quirelms.com/og.png"
---

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

# Haen we Cloudflare Workers

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

Mae'r dyluniad yn adran 6 o `docs/architecture/23-ops.md`. Mae Workers yn rhedeg
haen we lai o ran nodweddion. Nid yw cydraddoldeb nodweddion ar Workers o fewn y cwmpas (adran 12 y PRD): mae'r hyn
na all y targed hwn ei wneud yn cael ei wrthod wrth gychwyn, yn ôl enw.

## Statws yn y datganiad hwn <!--quire:status-in-this-release-->

Mae'r ffurfweddiad ar waith (`apps/web/wrangler.jsonc`, rhagosodiad Nitro
`cloudflare-module`, pont Hyperdrive a gwiriadau cychwyn). Mae angen storfa sy'n gydnaws â S3 ar Worker ar gyfer R2
(`QUIRE_STORAGE_DRIVER=s3`), gyrrwr amser real ar draws ceisiadau
(`QUIRE_REALTIME_DRIVER=durable_objects` neu `centrifugo`), storfa dros dro a rennir
(`QUIRE_CACHE_DRIVER=postgres` neu `valkey`) a darparwr e-bost HTTP.
Hebddynt mae'r Worker yn gwrthod cychwyn ac mae ei log yn enwi pob gosodiad.
Mae gyrrwr Durable Objects yn gleient i'r Worker amser real yn
`apps/realtime-worker` (un Durable Object fesul sianel ar gyfer dosbarthu, presenoldeb
a hanes, un fesul person ar gyfer datgysylltiadau); defnyddiwch ef ochr yn ochr, fel isod,
eu Centrifugo.

## Y cydrannau <!--quire:the-pieces-->

| Cydran | Ar Cloudflare |
| --- | --- |
| `web` | Worker gyda `nodejs_compat` |
| Postgres | Allanol, drwy Hyperdrive: `HYPERDRIVE` ar gyfer rôl y rhaglen, `REPORT_HYPERDRIVE` ar gyfer rôl yr adroddiad ar yr un gronfa ddata ffisegol. Mae'r haen we'n copïo pob llinyn cysylltiad i `DATABASE_URL` a `QUIRE_REPORT_DATABASE_URL` wrth gychwyn |
| Ffeiliau | R2, drwy ei API S3 (`S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com`); mae'r rhwymiad `FILES` yn atodi'r bwced |
| Gwaith cefndir | pg-boss dros Hyperdrive pan fydd rhaid ciwio'r gwaith gyda gweithred ysgrifennu. Gyda `QUIRE_QUEUE_DRIVER=cloudflare` ar y worker cydymaith, mae'r gwaith ysgafn (hysbysiadau heb drefn a dosbarthiadau webhook) yn mynd drwy Cloudflare Queues yn lle hynny, felly ni pholir Postgres ar eu cyfer. Mae worker y cydymaith yn rhedeg y ddau |
| Amser real | Y Worker amser real, `apps/realtime-worker`, gyda Durable Objects |
| `worker`, `scheduler`, `collab`, `content`, ClamAV, Gotenberg, ffmpeg | Host cynwysyddion cydymaith. Ni all Worker eu rhedeg |
| Olrhain | Arsylwadwyedd Workers, wedi'i alluogi yn `wrangler.jsonc` |

Mae `REPORT_HYPERDRIVE` yn darparu rôl adrodd ar gyfer y gronfa ddata ffisegol a enwir
gan `HYPERDRIVE`. Nid yw'r targed hwn yn gwasanaethu tenantiaid sydd wedi'u pinio i gronfeydd data ffisegol ychwanegol,
fel y disgrifir isod.

## Beth na all y targed hwn ei wneud <!--quire:what-this-target-cannot-do-->

Gwrthodir wrth gychwyn, gyda phob problem wedi'i rhestru ar unwaith:

- **Dim SMTP.** Defnyddiwch ddarparwr HTTP yn `QUIRE_EMAIL_PROVIDER_CONFIG`.
- **Dim disg lleol.** Rhaid i `QUIRE_STORAGE_DRIVER` enwi storfa gwrthrychau.
- **Dim amser real na storfa dros dro yn y broses.** Nid yw Workers yn rhannu cof rhwng
  ceisiadau, felly gwrthodir `QUIRE_REALTIME_DRIVER=inprocess` a
  `QUIRE_CACHE_DRIVER=memory`.
- **Dim ClamAV, Gotenberg na ffmpeg yn y Worker.** Gwrthodir `CLAMAV_URL`,
  `GOTENBERG_URL` a `FFMPEG_PATH` a osodwyd ar y Worker; gosodwch nhw ar
  worker y cydymaith yn lle hynny.
- **Dim sefydliadau â chronfa ddata benodol.** Mae rhwymiadau Hyperdrive Worker yn
  sefydlog adeg defnyddio, felly mae sefydliad â'i gronfa ddata ei hun yn cael tudalen glir
  “ddim ar gael yma”. Gwasanaethwch ef o Compose neu Vercel.

Ac un peth nad yw'n cael ei wrthod ond y mae'n rhaid ei wybod: **nid yw cyn-rendro ac
ail-gynhyrchu statig cynyddrannol yn gweithio ar Workers**, beth bynnag a ddywed
dogfennaeth y fframwaith. Mae pob llwybr yn cael ei rendro fesul cais.

Ar y targed hwn, cadwch drafodion yn fyr a pheidiwch byth â chadw un ar draws galwad rhwydwaith:
mae Hyperdrive yn ailosod cyflwr sesiwn pan fydd cysylltiad yn dychwelyd i'r pwll,
felly gosodir cyd-destun tenant fesul trafodiad.

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

1. Crëwch yr adnoddau:
   ```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
   ```
   Rhowch y ddau ID Hyperdrive yn `apps/web/wrangler.jsonc`.
2. Gosodwch y cyfrinachau, un ar y tro gyda `bun run --bun wrangler secret put <NAME>` o
   `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`. Mae gosodiadau testun plaen
   (`QUIRE_APP_ORIGIN`, `QUIRE_CONTENT_ORIGIN`, `QUIRE_PLATFORM_DOMAINS`,
   `QUIRE_DATABASE_ID`, `S3_ENDPOINT`, `S3_BUCKET`, `QUIRE_COLLAB_URL`) yn perthyn yn
   `vars`.
3. Adeiladwch a defnyddiwch o `apps/web`:
   ```sh
   NITRO_PRESET=cloudflare-module bun run build
   bun run --bun wrangler deploy
   ```
4. Defnyddiwch y Worker amser real, gyda `QUIRE_REALTIME_WORKER_SECRET` yr haen we
   a'i gyfrinach tocyn fel `QUIRE_REALTIME_TOKEN_SECRET` (mae'r haen we'n llofnodi
tocynnau amser real gyda'i `QUIRE_REALTIME_TOKEN_SECRET` ei hun, neu gyda
   `QUIRE_SECRET_KEY` pan nad yw hynny wedi'i osod; defnyddiwch felly pa un bynnag y mae'n ei ddefnyddio), a gosodwch
   `QUIRE_REALTIME_WORKER_URL` ar yr haen we i'w gyfeiriad:
   ```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. Ar gyfer gwaith ysgafn yn Cloudflare Queues, crëwch un ciw fesul ciw ysgafn a
   gosodwch y rhain ar y worker cydymaith (tocyn API gyda chaniatâd darllen ac
   ysgrifennu ar gyfer 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`, a `QUIRE_QUEUE_PREFIX` os nad `quire-` ydyw.
6. Rhedeg host y cydymaith fel yng [nghanllaw Vercel](/cy/ops/vercel/), cam 3.
   Mae mudo'n rhedeg yno cyn pob defnydd Worker.

Mae ffurfweddiad a wrthodir yn ymddangos yn `bun run --bun wrangler tail` fel “The web tier did
not start on cloudflare”, ac yna pob gosodiad i'w newid.

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