---
title: "Webnivået på Cloudflare Workers"
description: "Kjør et redusert Quire-webnivå på Cloudflare Workers."
image: "https://docs.quirelms.com/og.png"
---

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

# Webnivået på Cloudflare Workers

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

Utformingen er `docs/architecture/23-ops.md` seksjon 6. Workers kjører et redusert webnivå. Funksjonsparitet på Workers er utenfor omfang (PRD seksjon 12): det dette målet ikke kan nektes når det starter, ved navn.

## Status i denne utgivelsen <!--quire:status-in-this-release-->

Konfigurasjonen er på plass (`apps/web/wrangler.jsonc`, `cloudflare-module`-Nitro-forhåndsinnstillingen, Hyperdrive-broen og oppstartssjekkene). En Worker trenger S3-kompatibel lagring for R2 (`QUIRE_STORAGE_DRIVER=s3`), en sanntidsdriver på tvers av forespørsler (`QUIRE_REALTIME_DRIVER=durable_objects` eller `centrifugo`), et delt mellomlager (`QUIRE_CACHE_DRIVER=postgres` eller `valkey`) og en HTTP-e-postleverandør. Uten dem nekter Workeren å starte og loggen dens navngir hver innstilling. Durable Objects-driveren er en klient av sanntids-Workeren i `apps/realtime-worker` (ett Durable Object per kanal for utvifting, tilstedeværelse og historikk, ett per person for frakoblinger); rull den ut ved siden av, som nedenfor, eller bruk Centrifugo.

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

| Del | På Cloudflare |
| --- | --- |
| `web` | En Worker med `nodejs_compat` |
| Postgres | Ekstern, nådd gjennom Hyperdrive: `HYPERDRIVE` for applikasjonsrollen, `REPORT_HYPERDRIVE` for rapportrollen på den samme fysiske databasen. Webnivået kopierer hver tilkoblingsstreng inn i `DATABASE_URL` og `QUIRE_REPORT_DATABASE_URL` når det starter |
| Filer | R2, gjennom S3-API-et dens (`S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com`); `FILES`-bindingen fester bøtten |
| Bakgrunnsjobber | pg-boss over Hyperdrive når jobben må køes med en skriving. Med `QUIRE_QUEUE_DRIVER=cloudflare` på følgearbeideren går de lette jobbene (uordnede varsler og webhook-leveringer) gjennom Cloudflare Queues i stedet, slik at Postgres ikke spørres for dem. Følgearbeideren kjører begge |
| Sanntid | Sanntids-Workeren, `apps/realtime-worker`, med Durable Objects |
| `worker`, `scheduler`, `collab`, `content`, ClamAV, Gotenberg, ffmpeg | En følgecontainervert. En Worker kan ikke kjøre dem |
| Sporing | Workers-observerbarhet, aktivert i `wrangler.jsonc` |

`REPORT_HYPERDRIVE` leverer rapportrollen for den fysiske databasen navngitt av `HYPERDRIVE`. Dette målet betjener ikke tenanter festet til flere fysiske databaser, som beskrevet nedenfor.

## Hva dette målet ikke kan <!--quire:what-this-target-cannot-do-->

Nektes ved start, med alle problemer listet med én gang:

- **Ingen SMTP.** Bruk en HTTP-leverandør i `QUIRE_EMAIL_PROVIDER_CONFIG`.
- **Ingen lokal plate.** `QUIRE_STORAGE_DRIVER` må navngi objektlagring.
- **Ingen sanntid eller mellomlager i prosessen.** Workers deler intet minne mellom forespørsler, så `QUIRE_REALTIME_DRIVER=inprocess` og `QUIRE_CACHE_DRIVER=memory` avvises.
- **Ingen ClamAV, Gotenberg eller ffmpeg i Workeren.** `CLAMAV_URL`, `GOTENBERG_URL` og `FFMPEG_PATH` satt på Workeren avvises; sett dem på følgearbeideren i stedet.
- **Ingen organisasjoner med dedikert database.** En Workers Hyperdrive-bindinger er faste ved utrullingstid, så en organisasjon med sin egen database får en tydelig «utilgjengelig her»-side. Betjen den fra Compose eller Vercel.

Og én ting som ikke nektes men må vites: **forhåndsrendring og inkrementell statisk regenerering virker ikke på Workers**, uansett hva rammeverkdokumentasjonen sier. Hver rute rendres per forespørsel.

På dette målet hold transaksjoner korte og hold aldri en på tvers av et nettverkskall: Hyperdrive nullstiller økttilstand når en tilkobling returnerer til poolen, så tenantkonteksten settes per transaksjon.

## Rulle ut <!--quire:deploying-->

1. Opprett ressursene:
   ```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
   ```
   Legg de to Hyperdrive-ID-ene inn i `apps/web/wrangler.jsonc`.
2. Sett hemmelighetene, én om gangen med `bun run --bun wrangler secret put <NAME>` fra `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`. Rene innstillinger (`QUIRE_APP_ORIGIN`, `QUIRE_CONTENT_ORIGIN`, `QUIRE_PLATFORM_DOMAINS`, `QUIRE_DATABASE_ID`, `S3_ENDPOINT`, `S3_BUCKET`, `QUIRE_COLLAB_URL`) går i `vars`.
3. Bygg og rull ut fra `apps/web`:
   ```sh
   NITRO_PRESET=cloudflare-module bun run build
   bun run --bun wrangler deploy
   ```
4. Rull ut sanntids-Workeren, med webnivåets `QUIRE_REALTIME_WORKER_SECRET` og tokenhemmeligheten dens som `QUIRE_REALTIME_TOKEN_SECRET` (webnivået signerer sanntidstokens med sin egen `QUIRE_REALTIME_TOKEN_SECRET`, eller med `QUIRE_SECRET_KEY` når den er usatt, så bruk den det bruker), og sett `QUIRE_REALTIME_WORKER_URL` på webnivået til adressen dens:
   ```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. For lette jobber på Cloudflare Queues, opprett én kø per lett kø og sett disse på følgearbeideren (et API-token med Queues-lesing og -skriving):
   ```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`, og `QUIRE_QUEUE_PREFIX` hvis ikke `quire-`.
6. Kjør følgeverten som i [Vercel-veiledningen](/nb/ops/vercel/), steg 3. Migreringer kjøres der, før hver Worker-utrulling.

En avvist konfigurasjon vises i `bun run --bun wrangler tail` som «The web tier did not start on cloudflare», etterfulgt av hver innstilling som må endres.

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