---
title: "La reta tavolo ĉe Cloudflare Workers"
description: "Ruli reduktitan retan tavolon de Quire ĉe Cloudflare Workers."
image: "https://docs.quirelms.com/og.png"
---

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

# La reta tavolo ĉe Cloudflare Workers

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

La dezajno troviĝas en sekcio 6 de `docs/architecture/23-ops.md`. Workers rulas reduktitan
retan tavolon. Funkcia egaleco ĉe Workers estas ekster la amplekso (PRD sekcio 12): tio,
kion ĉi tiu celo ne povas fari, estas rifuzata ĉe starto kaj nomata.

## Stato en ĉi tiu eldono <!--quire:status-in-this-release-->

La agordo jam ekzistas (`apps/web/wrangler.jsonc`, Nitro-antaŭagordo
`cloudflare-module`, Hyperdrive-ponto kaj startkontroloj). Worker bezonas S3-kongruan stokadon por R2
(`QUIRE_STORAGE_DRIVER=s3`), realtempan pelilon tra petoj
(`QUIRE_REALTIME_DRIVER=durable_objects` aŭ `centrifugo`), komunan kaŝmemoron
(`QUIRE_CACHE_DRIVER=postgres` aŭ `valkey`) kaj HTTP-retpoŝtprovizanton.
Sen ili Worker rifuzas starti kaj ĝia protokolo nomas ĉiun agordon.
Pelilo Durable Objects estas kliento de realtempa Worker en
`apps/realtime-worker` (unu Durable Object por kanalo por disa sendado, ĉeesto
kaj historio, unu por persono por malkonektoj); disfaldigu ĝin kune, kiel sube,
aŭ uzu Centrifugo.

## La partoj <!--quire:the-pieces-->

| Parto | Ĉe Cloudflare |
| --- | --- |
| `web` | Worker kun `nodejs_compat` |
| Postgres | Ekstera, atingata per Hyperdrive: `HYPERDRIVE` por la aplikaĵa rolo, `REPORT_HYPERDRIVE` por la raportrola konekto al la sama fizika datumbazo. La reta tavolo kopias ĉiun konektotringon al `DATABASE_URL` kaj `QUIRE_REPORT_DATABASE_URL` ĉe starto |
| Dosieroj | R2 per ĝia S3-API (`S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com`); binding `FILES` ligas la bucket |
| Fonaj taskoj | pg-boss tra Hyperdrive kiam tasko devas esti envicigita per skribo. Kun `QUIRE_QUEUE_DRIVER=cloudflare` ĉe akompana worker, malpezaj taskoj (senorda livero de sciigoj kaj webhooks) anstataŭe trairas Cloudflare Queues, do ili ne pridemandiĝas de Postgres. La akompana worker rulas ambaŭ |
| Reala tempo | La realtempa Worker `apps/realtime-worker` kun Durable Objects |
| `worker`, `scheduler`, `collab`, `content`, ClamAV, Gotenberg, ffmpeg | Akompana ujo-gastiganto. Worker ne povas ruli ilin |
| Spuradon | Observado de Workers, ŝaltita en `wrangler.jsonc` |

`REPORT_HYPERDRIVE` provizas la raportrolon por la fizika datumbazo nomita per
`HYPERDRIVE`. Ĉi tiu celo ne servas luantojn ligitajn al pliaj
fizikaj datumbazoj, kiel priskribite sube.

## Kion ĉi tiu celo ne povas fari <!--quire:what-this-target-cannot-do-->

Rifuzata ĉe starto, kun ĉiuj problemoj listigitaj samtempe:

- **Neniu SMTP.** Uzu HTTP-provizanton en `QUIRE_EMAIL_PROVIDER_CONFIG`.
- **Neniu loka disko.** `QUIRE_STORAGE_DRIVER` devas nomi objektan stokadon.
- **Neniu enloka realtempigo aŭ kaŝmemoro.** Workers ne kunhavas memoron inter
  petoj, do `QUIRE_REALTIME_DRIVER=inprocess` kaj
  `QUIRE_CACHE_DRIVER=memory` estas rifuzataj.
- **Neniu ClamAV, Gotenberg aŭ ffmpeg en Worker.** `CLAMAV_URL`,
  `GOTENBERG_URL` kaj `FFMPEG_PATH` agorditaj ĉe Worker estas rifuzataj; agordu ilin
  ĉe akompana worker.
- **Neniuj organizaĵoj kun dediĉitaj datumbazoj.** La Hyperdrive-ligoj de Worker estas
  fiksitaj ĉe disfaldo, do organizaĵo kun propra datumbazo ricevas klaran
  paĝon "ne disponeblas ĉi tie". Servu ĝin de Compose aŭ Vercel.

Estas ankaŭ unu afero ne rifuzata sed grava: **antaŭrenderigo kaj
inkrementa statika regenerado ne funkcias ĉe Workers**, malgraŭ tio, kion diras
la kadra dokumentaro. Ĉiu vojo estas renderata por ĉiu peto.

Ĉe ĉi tiu celo tenu transakciojn mallongaj kaj neniam malfermu unu dum reta
voko: Hyperdrive restarigas sesian staton kiam konekto revenas al la lageto,
do luanta kunteksto estas agordata por ĉiu transakcio.

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

1. Kreu la rimedojn:
   ```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
   ```
   Metu la du Hyperdrive-ID-ojn en `apps/web/wrangler.jsonc`.
2. Agordu la sekretojn unuope per `bun run --bun wrangler secret put <NAME>` el
   `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`. Simplaj agordoj
   (`QUIRE_APP_ORIGIN`, `QUIRE_CONTENT_ORIGIN`, `QUIRE_PLATFORM_DOMAINS`,
   `QUIRE_DATABASE_ID`, `S3_ENDPOINT`, `S3_BUCKET`, `QUIRE_COLLAB_URL`) apartenas en
   `vars`.
3. Konstruu kaj disfaldigu el `apps/web`:
   ```sh
   NITRO_PRESET=cloudflare-module bun run build
   bun run --bun wrangler deploy
   ```
4. Disfaldigu la realtempan Worker kun la `QUIRE_REALTIME_WORKER_SECRET` de la reta tavolo
   kaj ĝia ĵetona sekreto kiel `QUIRE_REALTIME_TOKEN_SECRET` (la reta tavolo subskribas
   realtempajn ĵetonojn per propra `QUIRE_REALTIME_TOKEN_SECRET` aŭ per
   `QUIRE_SECRET_KEY`, se la unua ne estas agordita; uzu tiun efektive uzatan), kaj agordu
   `QUIRE_REALTIME_WORKER_URL` ĉe la reta tavolo al ĝia adreso:
   ```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. Por malpezaj taskoj per Cloudflare Queues, kreu atendovicon por ĉiu malpeza atendovico kaj
   agordu ĉi tion ĉe akompana worker (API-ĵetono kun legado kaj
   skribado de 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
   ```
   Agordu `QUIRE_QUEUE_DRIVER=cloudflare`, `CLOUDFLARE_ACCOUNT_ID`,
   `CLOUDFLARE_QUEUES_TOKEN` kaj `QUIRE_QUEUE_PREFIX` se ĝi ne estas `quire-`.
6. Rulu akompanan gastiganton kiel ĉe la [Vercel-gvidilo](/eo/ops/vercel/), paŝo 3.
   Migradoj ruliĝas tie antaŭ ĉiu Worker-disfaldo.

Rifuzita agordo aperas ĉe `bun run --bun wrangler tail` kiel "The web tier did
not start on cloudflare", sekvata de ĉiu ŝanĝenda agordo.

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