Slaan oor na inhoud

Die webvlak op Cloudflare Workers

Bedryf ’n verkleinde Quire-webvlak op Cloudflare Workers.

Bekyk as Markdown

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
worker, scheduler, collab, content, ClamAV, Gotenberg, ffmpeg ’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

  1. 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-files
    bun run --bun wrangler queues create quire-jobs
    Plaas die twee Hyperdrive-ID’s in apps/web/wrangler.jsonc.
  2. 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.
  3. Bou en ontplooi vanaf apps/web:
    NITRO_PRESET=cloudflare-module bun run build
    bun run --bun wrangler deploy
  4. 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-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. 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-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
    Stel QUIRE_QUEUE_DRIVER=cloudflare, CLOUDFLARE_ACCOUNT_ID, CLOUDFLARE_QUEUES_TOKEN en QUIRE_QUEUE_PREFIX in as dit nie quire- is nie.
  6. 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.

Navigasie

Tik om te soek…

↑↓ navigeer↵ kiesEsc sluit