Nei de ynhâld gean

De web tier op Cloudflare Workers

Draai in beheinde web tier fan Quire op Cloudflare Workers.

As Markdown besjen

It ûntwerp stiet yn docs/architecture/23-ops.md seksje 6. Workers draaie in beheinde web tier. Gelykweardigens fan funksjes op Workers falt bûten de omfang (PRD seksje 12): wat dizze target net kin, wurdt by it starten mei de namme neamd wegere.

Steat yn dizze release

De konfiguraasje is oanwêzich (apps/web/wrangler.jsonc, de Nitro-preset cloudflare-module, de Hyperdrive-brêge en startkontrôles). In Worker hat S3-kompatibele opslach foar R2 nedich (QUIRE_STORAGE_DRIVER=s3), in realtime-driver foar ferskate fersiken (QUIRE_REALTIME_DRIVER=durable_objects of centrifugo), in dielde cache (QUIRE_CACHE_DRIVER=postgres of valkey) en in HTTP-e-mailprovider. Sûnder dy ynstellingen wegeret de Worker te begjinnen en neamt it logboek elk probleem. De Durable Objects-driver is in client fan de realtime Worker yn apps/realtime-worker (ien Durable Object per kanaal foar fan-out, oanwêzigens en skiednis, ien per persoan foar ferbinings dy’t fuortfalle); set dy njonken de web tier yn, lykas hjirûnder, of brûk Centrifugo.

De ûnderdielen

Underdiel Op Cloudflare
web In Worker mei nodejs_compat
Postgres Ekstern fia Hyperdrive: HYPERDRIVE foar applikaasjerol, REPORT_HYPERDRIVE foar rapportrol op deselde fysike database. By it starten kopiearret de web tier elke ferbiningsrige nei DATABASE_URL en QUIRE_REPORT_DATABASE_URL
Bestannen R2 fia de S3 API (S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com); de FILES-binding keppelt de bucket
Eftergrûntaken pg-boss fia Hyperdrive as in taak tegearre mei in skriuwaksje op de wachtrige moat. Mei QUIRE_QUEUE_DRIVER=cloudflare op de begeliedende worker geane lichte taken (net-oardere meidielingen en webhookleveringen) fia Cloudflare Queues, sadat Postgres dêr net foar poallet wurdt. De begeliedende worker draait beide
Realtime De realtime Worker, apps/realtime-worker, mei Durable Objects
worker, scheduler, collab, content, ClamAV, Gotenberg, ffmpeg In begeliedende containerhost. In Worker kin se net útfiere
Tracing Workers-observability, ynskeakele yn wrangler.jsonc

REPORT_HYPERDRIVE leveret de rapportrol foar de fysike database dy’t HYPERDRIVE neamt. Dizze target betsjinnet gjin tenants dy’t oan ekstra fysike databases fêstset binne, sa’t hjirûnder beskreaun wurdt.

Wat dizze target net kin

Wurdt by it starten wegere, mei alle problemen tagelyk neamd:

  • Gjin SMTP. Brûk in HTTP-provider yn QUIRE_EMAIL_PROVIDER_CONFIG.
  • Gjin lokale skiif. QUIRE_STORAGE_DRIVER moat objektopslach oanjaan.
  • Gjin realtime of cache yn it proses. Workers diele gjin ûnthâld tusken fersiken, dus QUIRE_REALTIME_DRIVER=inprocess en QUIRE_CACHE_DRIVER=memory wurde wegere.
  • Gjin ClamAV, Gotenberg of ffmpeg yn de Worker. CLAMAV_URL, GOTENBERG_URL en FFMPEG_PATH ynsteld op de Worker wurde wegere; set se yn op de begeliedende worker.
  • Gjin organisaasjes mei tawijde databases. Hyperdrive-bindings fan in Worker steane fêst by ynset, dus krijt in organisaasje mei eigen database in dúdlike side “hjir net beskikber”. Betsjinje dy fan Compose of Vercel ôf.

En ien ding dat net wegere wurdt, mar datst witte moatst: prerenderjen en inkrementele statyske fernijing wurkje net op Workers, wat de raamwurkdokumintaasje ek seit. Elke rûte wurdt per fersyk renderd.

Hâld op dizze target transaksjes koart en lit se nea oer in netwurkoprop hinne iepen stean: Hyperdrive set sesjesteat werom as in ferbining nei de pool giet, dus tenant-kontekst wurdt per transaksje ynsteld.

Ynsette

  1. Meitsje de boarnen oan:
    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
    Set de twa Hyperdrive-ID’s yn apps/web/wrangler.jsonc.
  2. Stel de geheimen ien foar ien yn mei bun run --bun wrangler secret put <NAME> út 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. Gewoane ynstellingen (QUIRE_APP_ORIGIN, QUIRE_CONTENT_ORIGIN, QUIRE_PLATFORM_DOMAINS, QUIRE_DATABASE_ID, S3_ENDPOINT, S3_BUCKET, QUIRE_COLLAB_URL) komme yn vars.
  3. Bou en set yn út apps/web:
    NITRO_PRESET=cloudflare-module bun run build
    bun run --bun wrangler deploy
  4. Set de realtime Worker yn mei de QUIRE_REALTIME_WORKER_SECRET fan de web tier en syn tokengeheim as QUIRE_REALTIME_TOKEN_SECRET (de web tier ûndertekenet realtimetokens mei eigen QUIRE_REALTIME_TOKEN_SECRET, of mei QUIRE_SECRET_KEY as dy net ynsteld is; brûk dus deselde wearde as dy brûkt wurdt). Set QUIRE_REALTIME_WORKER_URL op de web tier nei syn 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. Om lichte taken fia Cloudflare Queues út te fieren, meitsje ien queue per lichte taak en set de folgjende yn op de begeliedende worker (in API-token mei lêzen en skriuwen fan 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 yn as it net quire- is.
  6. Draai de begeliedende host lykas yn stap 3 fan de Vercel-hantlieding. Migrations rinne dêr foar elke Worker-ynset.

By wegere konfiguraasje lit bun run --bun wrangler tail sjen: “The web tier did not start on cloudflare”, folge troch elke ynstelling dy’t feroare wurde moat.

Navigaasje

Typ om te sykjen…

↑↓ navigearje↵ selektearjeEsc slute