Die ontwerp staan in afdeling 6 van docs/architecture/23-ops.md. Workers bedryf ’n verkleinde webvlak. Gelykheid van kenmerke op Workers val buite omvang (PRD afdeling 12): wat hierdie teiken nie kan doen nie, word met die naam geweier wanneer dit begin.
Status in hierdie vrystelling
Die konfigurasie is in plek (apps/web/wrangler.jsonc, die cloudflare-module Nitro-voorinstelling, die Hyperdrive-brug en opstartkontroles). ’n Worker benodig S3-versoenbare berging vir R2 (QUIRE_STORAGE_DRIVER=s3), ’n intydse aandrywer oor versoeke (QUIRE_REALTIME_DRIVER=durable_objects of centrifugo), ’n gedeelde kas (QUIRE_CACHE_DRIVER=postgres of valkey) en ’n HTTP-e-posverskaffer. Sonder hulle weier die Worker om te begin en sy log noem elke instelling. Die Durable Objects-aandrywer is ’n kliënt van die intydse Worker in apps/realtime-worker (een Durable Object per kanaal vir verspreiding, teenwoordigheid en geskiedenis, een per persoon vir ontkoppelings); ontplooi dit saam soos hieronder, of gebruik Centrifugo.
Die dele
Deel
Op Cloudflare
web
’n Worker met nodejs_compat
Postgres
Ekstern via Hyperdrive: HYPERDRIVE vir die toepassingrol, REPORT_HYPERDRIVE vir verslagrol op dieselfde fisiese databasis. Die webvlak kopieer elke verbindingsstring na DATABASE_URL en QUIRE_REPORT_DATABASE_URL wanneer dit begin
Lêers
R2 via sy S3-API (S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com); die FILES-binding koppel die emmer
Agtergrondtake
pg-boss oor Hyperdrive wanneer ’n taak met ’n skryfbewerking in die tou geplaas moet word. Met QUIRE_QUEUE_DRIVER=cloudflare op die meegaande werker gaan die ligte take (ongeordende kennisgewings en webhook-aflewerings) eerder deur Cloudflare Queues, sodat Postgres nie daarvoor gepols word nie. Die meegaande werker loop albei
Intyds
Die intydse Worker, apps/realtime-worker, met Durable Objects
’n Meegaande houergasheer. ’n Worker kan hulle nie loop nie
Nasporing
Workers-waarneming, aangeskakel in wrangler.jsonc
REPORT_HYPERDRIVE verskaf die verslagrol vir die fisiese databasis wat deur HYPERDRIVE benoem word. Hierdie teiken bedien nie tenants wat aan bykomende fisiese databasisse gepen is nie, soos hieronder beskryf.
Wat hierdie teiken nie kan doen nie
By opstart geweier, met elke probleem tegelyk gelys:
Geen SMTP nie. Gebruik ’n HTTP-verskaffer in QUIRE_EMAIL_PROVIDER_CONFIG.
Geen plaaslike skyf nie.QUIRE_STORAGE_DRIVER moet objekberging benoem.
Geen intydse diens of kas in die proses nie. Workers deel geen geheue tussen versoeke nie, dus word QUIRE_REALTIME_DRIVER=inprocess en QUIRE_CACHE_DRIVER=memory geweier.
Geen ClamAV, Gotenberg of ffmpeg in die Worker nie.CLAMAV_URL, GOTENBERG_URL en FFMPEG_PATH wat op die Worker gestel is, word geweier; stel hulle eerder op die meegaande werker.
Geen organisasies met toegewyde databasisse nie. ’n Worker se Hyperdrive-bindings is tydens ontplooiing vasgestel, dus kry ’n organisasie met sy eie databasis ’n duidelike bladsy “hier nie beskikbaar nie”. Bedien dit vanuit Compose of Vercel.
Een ding word nie geweier nie maar moet bekend wees: voorafweergawe en inkrementele statiese hergenerering werk nie op Workers nie, ongeag wat die raamwerkdokumentasie sê. Elke roete word per versoek weergegee.
Hou transaksies op hierdie teiken kort en moenie hulle oor ’n netwerkoproep hou nie: Hyperdrive herstel sessietoestand wanneer ’n verbinding na die poel terugkeer, dus word tenantkonteks per transaksie ingestel.
Ontplooi
Skep die hulpbronne:
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
Plaas die twee Hyperdrive-ID’s in apps/web/wrangler.jsonc.
Stel die geheime een vir een in met bun run --bun wrangler secret put <NAME> vanaf 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. Gewone instellings (QUIRE_APP_ORIGIN, QUIRE_CONTENT_ORIGIN, QUIRE_PLATFORM_DOMAINS, QUIRE_DATABASE_ID, S3_ENDPOINT, S3_BUCKET, QUIRE_COLLAB_URL) gaan in vars.
Bou en ontplooi vanaf apps/web:
NITRO_PRESET=cloudflare-module bun run buildbun run --bun wrangler deploy
Ontplooi die intydse Worker met die webvlak se QUIRE_REALTIME_WORKER_SECRET en sy tekensekret as QUIRE_REALTIME_TOKEN_SECRET (die webvlak teken intydse tekens met sy eie QUIRE_REALTIME_TOKEN_SECRET, of met QUIRE_SECRET_KEY as dit nie gestel is nie; gebruik dus wat dit ook al gebruik), en stel QUIRE_REALTIME_WORKER_URL op die webvlak se adres:
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
Vir ligte take op Cloudflare Queues, skep een tou per ligte tou en stel dit op die meegaande werker in (’n API-teken met lees- en skryftoegang vir Queues):
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
Stel QUIRE_QUEUE_DRIVER=cloudflare, CLOUDFLARE_ACCOUNT_ID, CLOUDFLARE_QUEUES_TOKEN en QUIRE_QUEUE_PREFIX in as dit nie quire- is nie.
Begin die meegaande gasheer soos in stap 3 van die Vercel-gids. Migrasies loop daar voor elke Worker-ontplooiing.
’n Geweierde konfigurasie verskyn in bun run --bun wrangler tail as “The web tier did not start on cloudflare”, gevolg deur elke instelling om te verander.