---
title: "Tinklo sluoksnis Cloudflare Workers"
description: "Vykdykite sutrumpintą Quire tinklo sluoksnį Cloudflare Workers."
image: "https://docs.quirelms.com/og.png"
---

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

# Tinklo sluoksnis Cloudflare Workers

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

Projekto aprašas yra `docs/architecture/23-ops.md` 6 skyrius. Workers vykdo
sutrumpintą tinklo sluoksnį. Funkcijų lygiavertiškumas Workers nepatenka į
apimtį (PRD 12 skyrius): ko šis tikslas negali daryti, atmetama jam
paleidžiant, pavadinimu.

## Šios versijos būsena <!--quire:status-in-this-release-->

Konfigūracija yra vietoje (`apps/web/wrangler.jsonc`, `cloudflare-module`
Nitro nustatymas, Hyperdrive tiltas ir paleidimo patikros). Worker reikia su
S3 suderintos saugyklos R2 (`QUIRE_STORAGE_DRIVER=s3`), realiojo laiko
variklio tarp užklausų (`QUIRE_REALTIME_DRIVER=durable_objects` arba
`centrifugo`), bendrinamo podėlio (`QUIRE_CACHE_DRIVER=postgres` arba
`valkey`) ir HTTP el. pašto teikėjo. Be jų Worker atsisako paleisti, o jo
žurnale išvardijamas kiekvienas nustatymas. Durable Objects variklis yra
realiojo laiko Worker klientas `apps/realtime-worker` kataloge (vienas
Durable Object kanalui skirstymui, buvimui ir istorijai, vienas žmogui
atsijungimams); jį paleiskite šalia, kaip aprašyta toliau, arba naudokite
Centrifugo.

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

| Dalis | Cloudflare |
| --- | --- |
| `web` | Worker su `nodejs_compat` |
| Postgres | Išorinis, pasiekiamas per Hyperdrive: `HYPERDRIVE` programų vaidmeniui, `REPORT_HYPERDRIVE` ataskaitų vaidmeniui toje pačioje fizinėje duomenų bazėje. Tinklo sluoksnis paleisdamas nukopuoja kiekvieną ryšio eilutę į `DATABASE_URL` ir `QUIRE_REPORT_DATABASE_URL` |
| Failai | R2 per jo S3 API (`S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com`); `FILES` susiejimas pritvirtina kibirą |
| Fono užduotys | pg-boss per Hyperdrive, kai užduotį reikia į eilę dėti rašymu. Kai lydinčiam darbininkui nustatytas `QUIRE_QUEUE_DRIVER=cloudflare`, lengvos užduotys (netvarkingos pranešimų ir „webhook“ pristatymai) vietoj to eina per Cloudflare Queues, todėl joms nereikia nuolat tikrinti Postgres. Lydimasis darbininkas vykdo abu |
| Realusis laikas | Realiojo laiko Worker `apps/realtime-worker` su Durable Objects |
| `worker`, `scheduler`, `collab`, `content`, ClamAV, Gotenberg, ffmpeg | Lydimoji konteinerių sistema. Worker jų paleisti negali |
| Pėdsakų sekimas | Workers observability, įjungta `wrangler.jsonc` |

`REPORT_HYPERDRIVE` tiekia ataskaitų vaidmenį fizinei duomenų bazei, kurią
nurodo `HYPERDRIVE`. Šis tikslas netarnauja nuomininkams, pririštiems prie
papildomų fizinių duomenų bazių, kaip aprašyta toliau.

## Ko šis tikslas negali daryti <!--quire:what-this-target-cannot-do-->

Atmetama paleidžiant, su kiekviena problema išvardinta iš karto:

- **Nėra SMTP.** Naudokite HTTP teikėją `QUIRE_EMAIL_PROVIDER_CONFIG`.
- **Nėra vietinio disko.** `QUIRE_STORAGE_DRIVER` turi nurodyti objektų
  saugyklą.
- **Nėra proceso vidinio realiojo laiko arba podėlio.** Workers tarp užklausų
  nedalijasi atmintimi, todėl `QUIRE_REALTIME_DRIVER=inprocess` ir
  `QUIRE_CACHE_DRIVER=memory` atmetami.
- **Nėra ClamAV, Gotenberg arba ffmpeg Worker viduje.** `CLAMAV_URL`,
  `GOTENBERG_URL` ir `FFMPEG_PATH`, nustatyti Worker, atmetami; nustatykite
  juos lydinčiam darbininkui.
- **Nėra atskirų duomenų bazių turinčių organizacijų.** Worker Hyperdrive
  susiejimai fiksuojami diegimo metu, todėl organizacija su savo duomenų
  baze gauna aiškų puslapį "unavailable here". Tarnaukite jai iš Compose
  arba Vercel.

Ir dar vienas dalykas, kuris neatmetamas, bet turi būti žinomas:
**išankstinis generavimas ir laipsniškas statinis atnaujinimas Workers
neveikia**, kad ir ką sakytų framework dokumentacija. Kiekvienas maršrutas
generuojamas kiekvienai užklausai.

Šiame tiksle laikykite transakcijas trumpas ir niekada nelaikykite jų per
tinklo užklausą: Hyperdrive iš naujo nustato seanso būseną, kai ryšys
grįžta į baseiną, todėl nuomininko kontekstas nustatomas kiekvienai
transakcijai.

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

1. Sukurkite išteklius:
   ```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
   ```
   Įdėkite tuos du Hyperdrive ID į `apps/web/wrangler.jsonc`.
2. Nustatykite paslaptis, po vieną su `bun run --bun wrangler secret put <NAME>` iš
   `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`. Paprasti
   nustatymai (`QUIRE_APP_ORIGIN`, `QUIRE_CONTENT_ORIGIN`,
   `QUIRE_PLATFORM_DOMAINS`, `QUIRE_DATABASE_ID`, `S3_ENDPOINT`, `S3_BUCKET`,
   `QUIRE_COLLAB_URL`) rašomi į `vars`.
3. Pastatykite ir paleiskite diegimą iš `apps/web`:
   ```sh
   NITRO_PRESET=cloudflare-module bun run build
   bun run --bun wrangler deploy
   ```
4. Paleiskite realiojo laiko Worker su tinklo sluoksnio
   `QUIRE_REALTIME_WORKER_SECRET` ir jo žetono paslaptimi kaip
   `QUIRE_REALTIME_TOKEN_SECRET` (tinklo sluoksnis pasirašo realiojo laiko
   žetonus savo `QUIRE_REALTIME_TOKEN_SECRET` arba `QUIRE_SECRET_KEY`, kai
   to nėra nustatyta, todėl naudokite tą, kurį jis naudoja), ir nustatykite
   tinklo sluoksnyje `QUIRE_REALTIME_WORKER_URL` į jo 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. Lengvoms užduotims per Cloudflare Queues sukurkite po vieną eilę kiekvienai
   lengvai eilei ir nustatykite tai lydinčiam darbininkui (API žetonas su
   Queues skaitymo ir rašymo teisėmis):
   ```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` ir `QUIRE_QUEUE_PREFIX`, jei tai ne `quire-`.
6. Paleiskite lydinčią sistemą pagal [Vercel vadovą](/lt/ops/vercel/), 3 žingsnį.
   Migracijos ten vykdomos prieš kiekvieną Worker diegimą.

Atmetta konfigūracija `bun run --bun wrangler tail` rodoma kaip "The web tier did not
start on cloudflare", po to sekant kiekvienu nustatymu, kurį reikia pakeisti.

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