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
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
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
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
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
Opprett ressursene:
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-filesbun run --bun wrangler queues create quire-jobs
Legg de to Hyperdrive-ID-ene inn i apps/web/wrangler.jsonc.
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.
Bygg og rull ut fra apps/web:
NITRO_PRESET=cloudflare-module bun run buildbun run --bun wrangler deploy
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:
cd apps/realtime-workerbun run --bun wrangler secret put QUIRE_REALTIME_WORKER_SECRETbun run --bun wrangler secret put QUIRE_REALTIME_TOKEN_SECRETbun run --bun wrangler deploy
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):
bun run --bun wrangler queues create quire-events-notificationsbun run --bun wrangler queues create quire-events-notifications-deadbun run --bun wrangler queues create quire-events-webhooksbun 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-.
Kjør følgeverten som i Vercel-veiledningen, 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.