---
title: "Ka papa pūnaewele ma Cloudflare Workers"
description: "Holo i ka papa pūnaewele Quire i hoʻēmi ʻia ma Cloudflare Workers."
image: "https://docs.quirelms.com/og.png"
---

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

# Ka papa pūnaewele ma Cloudflare Workers

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

Aia ka hoʻolālā ma ka māhele 6 o `docs/architecture/23-ops.md`. Holo nā Workers i papa pūnaewele i hoʻēmi ʻia. ʻAʻole i loko o ka laulā ka hoʻohālike piha o nā hiʻohiʻona ma Workers (māhele 12 o ka PRD): hōʻole ʻia nā hana hiki ʻole i kēia pahuhopu i ka hoʻomaka ʻana, me ko lākou inoa.

## Kūlana o kēia mana <!--quire:status-in-this-release-->

Ua mākaukau ka hoʻonohonoho (`apps/web/wrangler.jsonc`, ka hoʻonohonoho mua Nitro `cloudflare-module`, ka alahaka Hyperdrive, a me nā nānā hoʻomaka). Pono kahi Worker i waihona kūpono me S3 no R2 (`QUIRE_STORAGE_DRIVER=s3`), mea hoʻokele manawa maoli ma waena o nā noi (`QUIRE_REALTIME_DRIVER=durable_objects` a i ʻole `centrifugo`), cache kaʻana (`QUIRE_CACHE_DRIVER=postgres` a i ʻole `valkey`), a me mea hoʻolako leka uila HTTP. Inā ʻaʻohe o lākou, hōʻole ka Worker e hoʻomaka a papa inoa kona moʻolelo i nā hoʻonohonoho i nele. He mea kūʻai ka mea hoʻokele Durable Objects o ka Worker manawa maoli ma `apps/realtime-worker` (hoʻokahi Durable Object no kēlā me kēia channel no ka hoʻouna lehulehu, noho, a me ka mōʻaukala; hoʻokahi no kēlā me kēia kanaka no ka hemo ʻana); e hoʻouka pū iā ia e like me ka wehewehe ʻana ma lalo, a i ʻole e hoʻohana iā Centrifugo.

## Nā ʻāpana <!--quire:the-pieces-->

| ʻĀpana | Ma Cloudflare |
| --- | --- |
| `web` | Worker me `nodejs_compat` |
| Postgres | Waho, hiki ma o Hyperdrive: `HYPERDRIVE` no ka kuleana polokalamu, `REPORT_HYPERDRIVE` no ka kuleana hōʻike ma ia waihona ʻikepili kino hoʻokahi. Kope ka papa pūnaewele i kēlā me kēia kaula pilina i loko o `DATABASE_URL` a me `QUIRE_REPORT_DATABASE_URL` i kona hoʻomaka ʻana |
| Nā faila | R2, ma o kona API S3 (`S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com`); hoʻohui ka binding `FILES` i ka bucket |
| Nā hana hope | pg-boss ma luna o Hyperdrive ke pono e hoʻokomo pū ʻia ka hana me ke kākau. Me `QUIRE_QUEUE_DRIVER=cloudflare` ma ka worker hoa, holo nā hana māmā (nā leka hoʻomaopopo me ka hoʻonohonoho ʻole a me nā hoʻouna webhook) ma o Cloudflare Queues, no laila ʻaʻole huli ʻia lākou ma Postgres. Holo pū ka worker hoa i nā mea ʻelua |
| Manawa maoli | Worker manawa maoli, `apps/realtime-worker`, me Durable Objects |
| `worker`, `scheduler`, `collab`, `content`, ClamAV, Gotenberg, ffmpeg | Host ipu hoa. ʻAʻole hiki i Worker ke holo iā lākou |
| Nā kaha | Nānā Workers, hoʻā ʻia ma `wrangler.jsonc` |

Hāʻawi ʻo `REPORT_HYPERDRIVE` i ke kuleana hōʻike no ka waihona ʻikepili kino i kapa ʻia e `HYPERDRIVE`. ʻAʻole lawelawe kēia pahuhopu i nā tenant i hoʻopaʻa ʻia i nā waihona ʻikepili kino hou, e like me ka wehewehe ʻana ma lalo.

## Nā mea hiki ʻole i kēia wahi <!--quire:what-this-target-cannot-do-->

Hōʻole ʻia kēia mau mea i ka hoʻomaka ʻana me nā pilikia a pau i hōʻike pū ʻia:

- **ʻAʻohe SMTP.** E hoʻohana i mea hoʻolako HTTP ma `QUIRE_EMAIL_PROVIDER_CONFIG`.
- **ʻAʻohe disk kūloko.** Pono ʻo `QUIRE_STORAGE_DRIVER` e kuhikuhi i waihona mea.
- **ʻAʻohe manawa maoli a cache i loko o ke kaʻina.** ʻAʻole kaʻana nā Workers i hoʻomanaʻo ma waena o nā noi, no laila hōʻole ʻia `QUIRE_REALTIME_DRIVER=inprocess` a me `QUIRE_CACHE_DRIVER=memory`.
- **ʻAʻohe ClamAV, Gotenberg, a i ʻole ffmpeg ma ka Worker.** Hōʻole ʻia `CLAMAV_URL`, `GOTENBERG_URL`, a me `FFMPEG_PATH` ke hoʻonoho ʻia ma ka Worker; e hoʻonoho iā lākou ma ka worker hoa.
- **ʻAʻohe hui me nā waihona ʻikepili hoʻolaʻa.** Paʻa nā binding Hyperdrive o kahi Worker i ka wā hoʻouka; no laila loaʻa i kahi hui me kona waihona ponoʻī ʻaoʻao maopopo e ʻōlelo ana «ʻaʻole loaʻa ma ʻaneʻi». E lawelawe iā ia mai Compose a i ʻole Vercel.

Hoʻokahi mea ʻaʻole i hōʻole ʻia akā pono e ʻike: **ʻaʻole holo ka hana mua a me ka hana hou ʻana i nā ʻaoʻao paʻa ma Workers**, me ka nānā ʻole i ka ʻōlelo a ka palapala framework. Hana ʻia kēlā me kēia ala i kēlā me kēia noi.

Ma kēia pahuhopu, e hoʻopōkole i nā hana ʻikepili a mai mālama iā lākou ma waena o kahi kāhea pūnaewele: hoʻoponopono hou ʻo Hyperdrive i ke kūlana kau ke hoʻi ka pilina i ka pool, no laila hoʻonoho ʻia ka pōʻaiapili tenant no kēlā me kēia hana.

## Hoʻouka hana <!--quire:deploying-->

1. E hana i nā kumuwaiwai:
   ```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
   ```
   E hoʻokomo i nā ID Hyperdrive ʻelua i `apps/web/wrangler.jsonc`.
2. E hoʻonoho i nā ʻōlelo huna, hoʻokahi i kēlā manawa me `bun run --bun wrangler secret put <NAME>` mai `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`. Hele nā hoʻonohonoho maʻamau (`QUIRE_APP_ORIGIN`, `QUIRE_CONTENT_ORIGIN`, `QUIRE_PLATFORM_DOMAINS`, `QUIRE_DATABASE_ID`, `S3_ENDPOINT`, `S3_BUCKET`, `QUIRE_COLLAB_URL`) i loko o `vars`.
3. Kūkulu a hoʻouka mai `apps/web`:
   ```sh
   NITRO_PRESET=cloudflare-module bun run build
   bun run --bun wrangler deploy
   ```
4. E hoʻouka i ka Worker manawa maoli me ka `QUIRE_REALTIME_WORKER_SECRET` o ka papa pūnaewele a me kāna ʻōlelo huna token ma ke ʻano he `QUIRE_REALTIME_TOKEN_SECRET` (kau inoa ka papa pūnaewele i nā token manawa maoli me kona `QUIRE_REALTIME_TOKEN_SECRET` ponoʻī, a i ʻole me `QUIRE_SECRET_KEY` inā ʻaʻole ia i hoʻonoho ʻia; e hoʻohana i ka mea e hoʻohana ʻia nei), a hoʻonoho iā `QUIRE_REALTIME_WORKER_URL` ma ka papa pūnaewele i kona helu wahi:
   ```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. No nā hana māmā ma Cloudflare Queues, e hana i queue no kēlā me kēia queue māmā a hoʻonoho iā lākou ma ka worker hoa (pono kahi token API me nā ʻae heluhelu a kākau no 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
   ```
   E hoʻonoho iā `QUIRE_QUEUE_DRIVER=cloudflare`, `CLOUDFLARE_ACCOUNT_ID`,
   `CLOUDFLARE_QUEUES_TOKEN`, a me `QUIRE_QUEUE_PREFIX` inā ʻaʻole `quire-`.
6. Holo i ka host hoa e like me ka ʻanuʻu 3 o ke [alakaʻi Vercel](/haw/ops/vercel/).
   Holo nā neʻe ʻikepili ma laila ma mua o kēlā me kēia hoʻouka Worker.

Hōʻike ʻia kahi hoʻonohonoho i hōʻole ʻia ma `bun run --bun wrangler tail` me ka memo «The web tier did not start on cloudflare», a me nā hoʻonohonoho e hoʻololi ai.

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