Joan edukira

Cloudflare Workers-eko web-maila

Exekutatu Quireren web-maila murriztua Cloudflare Workers-en.

Ikusi Markdown gisa

Diseinua docs/architecture/23-ops.md ataleko 6. atalean dago. Workers-ek web-maila murriztua exekutatzen dute. Workers-en eginbide-parekotasuna ez dago xedean (PRD ataleko 12. puntua): helburu honek egin ezin dituenak abiaraztean ukatzen dira, arazo bakoitza izendatuz.

Egoera bertsio honetan

Konfigurazioa prest dago (apps/web/wrangler.jsonc, cloudflare-module Nitro aurrezarpena, Hyperdrive zubia eta abiarazte-egiaztapenak). Worker batek R2rako S3-rekin bateragarria den biltegiratzea behar du (QUIRE_STORAGE_DRIVER=s3), eskaeren artean dabilen denbora errealeko driver bat (QUIRE_REALTIME_DRIVER=durable_objects edo centrifugo), partekatutako cache bat (QUIRE_CACHE_DRIVER=postgres edo valkey) eta HTTP posta-hornitzaile bat. Horiek gabe, Worker-ak ez du abiatzea onartzen eta erregistroak ezarpen bakoitza izendatzen du. Durable Objects driver-a apps/realtime-worker proiektuko denbora errealeko Worker-aren bezeroa da (kanal bakoitzeko Durable Object bat hedapenerako, presentziarako eta historiarako; pertsona bakoitzeko bat deskonexioetarako); zabaldu harekin batera, jarraian azaltzen den moduan, edo erabili Centrifugo.

Osagaiak

Osagaia Cloudflare-n
web nodejs_compat gaituta duen Worker bat
Postgres Kanpokoa, Hyperdrive bidez atzitua: HYPERDRIVE aplikazio-rolerako, eta REPORT_HYPERDRIVE datu-base fisiko bereko txosten-rolerako. Web-mailak konexio-kate bakoitza DATABASE_URL eta QUIRE_REPORT_DATABASE_URL aldagaietan kopiatzen du abiaraztean
Fitxategiak R2, haren S3 APIaren bidez (S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com); FILES loturak bucket-a eransten du
Atzeko planoko lanak pg-boss Hyperdrive bidez, idazketa batekin batera ilaran jarri behar den lanetarako. Worker laguntzailean QUIRE_QUEUE_DRIVER=cloudflare ezarrita badago, lan arinak (ordenarik gabeko jakinarazpen- eta webhook-bidalketak) Cloudflare Queues bidez doaz; horrela, Postgresentzat ez dago lan horien bila ibili beharrik. Worker laguntzaileak biak exekutatzen ditu
Denbora erreala apps/realtime-worker denbora errealeko Worker-a, Durable Objects-ekin
worker, scheduler, collab, content, ClamAV, Gotenberg, ffmpeg Edukiontzi-ostalari laguntzailea. Worker batek ezin ditu exekutatu
Aztarnak Workers-en behagarritasuna, wrangler.jsonc fitxategian gaitua

REPORT_HYPERDRIVE-k HYPERDRIVE-k izendatutako datu-base fisikorako txosten-rola hornitzen du. Helburu honek ez ditu datu-base fisiko gehigarrietan finkatutako maizterrak zerbitzatzen, jarraian azaltzen den moduan.

Helburu honek egin ezin duena

Abiaraztean ukatzen dira, arazo guztiak batera zerrendatuta:

  • Ez dago SMTPrik. Erabili HTTP hornitzaile bat QUIRE_EMAIL_PROVIDER_CONFIG aldagaian.
  • Ez dago disko lokalik. QUIRE_STORAGE_DRIVER aldagaian objektu-biltegiratzea izendatu behar da.
  • Ez dago prozesu barruko denbora errealekorik edo cacherik. Worker-ek ez dute memoria partekatzen eskaeren artean; beraz, QUIRE_REALTIME_DRIVER=inprocess eta QUIRE_CACHE_DRIVER=memory ez dira onartzen.
  • Worker-ak ezin ditu ClamAV, Gotenberg edo ffmpeg exekutatu. Worker-ean ezarritako CLAMAV_URL, GOTENBERG_URL eta FFMPEG_PATH ez dira onartzen; ezarri ordez worker laguntzailean.
  • Ez dago datu-base bereizia duten erakundeentzako euskarririk. Worker-aren Hyperdrive loturak zabaltzean finkatzen dira; beraz, bere datu-basea duen erakunde bati “unavailable here” orria erakusten zaio. Zerbitzatu Compose edo Vercel erabiliz.

Gainera, ukatzen ez den arren jakin beharreko zerbait: aurreerrendatzeak eta inkrementalki sortutako orrialde estatikoak ez dute funtzionatzen Workers-en, esparruaren dokumentazioak dioena gorabehera. Ibilbide bakoitza eskaera bakoitzean errendatzen da.

Helburu honetan, mantendu transakzioak labur eta ez eutsi sareko dei batean zehar: konexio bat biltegira itzultzean, Hyperdrive-k saioaren egoera berrezartzen du; beraz, maizterraren testuingurua transakzio bakoitzean ezartzen da.

Zabaltzea

  1. Sortu baliabideak:
    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
    Jarri Hyperdrive bi IDak apps/web/wrangler.jsonc fitxategian.
  2. Ezarri sekretuak banan-banan bun run --bun wrangler secret put <NAME> erabiliz, apps/web barrutik: 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. Ezarpen arruntak (QUIRE_APP_ORIGIN, QUIRE_CONTENT_ORIGIN, QUIRE_PLATFORM_DOMAINS, QUIRE_DATABASE_ID, S3_ENDPOINT, S3_BUCKET, QUIRE_COLLAB_URL) vars atalean jartzen dira.
  3. Eraiki eta zabaldu apps/web barrutik:
    NITRO_PRESET=cloudflare-module bun run build
    bun run --bun wrangler deploy
  4. Zabaldu denbora errealeko Worker-a, web-mailaren QUIRE_REALTIME_WORKER_SECRET eta haren token-sekretua QUIRE_REALTIME_TOKEN_SECRET gisa erabiliz (web-mailak denbora errealeko tokenak sinatzen ditu bere QUIRE_REALTIME_TOKEN_SECRET erabiliz, edo QUIRE_SECRET_KEY aldagai hori ez badago; beraz, erabili erabiltzen duena), eta ezarri haren helbidea web-mailaren QUIRE_REALTIME_WORKER_URL aldagaian:
    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. Cloudflare Queues-en lan arinak egiteko, sortu ilara arin bakoitzeko ilara bat, eta ezarri hauek worker laguntzailean (irakurtzeko eta idazteko baimena duen API token batekin):
    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
    Ezarri QUIRE_QUEUE_DRIVER=cloudflare, CLOUDFLARE_ACCOUNT_ID, CLOUDFLARE_QUEUES_TOKEN, eta QUIRE_QUEUE_PREFIX balioa quire- ez bada.
  6. Exekutatu ostalari laguntzailea Vercel gidako 3. urratsean bezala. Migrazioak han exekutatzen dira Worker-a zabaldu aurretik.

Konfigurazio bat ukatzen bada, bun run --bun wrangler tail komandoaren emaitzan “The web tier did not start on cloudflare” mezua agertzen da, eta ondoren aldatu beharreko ezarpen guztiak.

Nabigazioa

Idatzi bilatzeko…

↑↓ nabigatu↵ hautatuEsc itxi