Lele i ka ʻike

Ka papa pūnaewele ma Cloudflare Workers

Holo i ka papa pūnaewele Quire i hoʻēmi ʻia ma Cloudflare Workers.

Nānā ma ke ʻano Markdown

Aia ka hoʻolālā ma ka māhele 6 o docs/architecture/23-ops.md. Holo nā Workers i papa pūnaewele i hoʻēmi ʻia. ʻAʻole i loko o ka laulā ka hoʻohālike piha o nā hiʻohiʻona ma Workers (māhele 12 o ka PRD): hōʻole ʻia nā hana hiki ʻole i kēia pahuhopu i ka hoʻomaka ʻana, me ko lākou inoa.

Kūlana o kēia mana

Ua mākaukau ka hoʻonohonoho (apps/web/wrangler.jsonc, ka hoʻonohonoho mua Nitro cloudflare-module, ka alahaka Hyperdrive, a me nā nānā hoʻomaka). Pono kahi Worker i waihona kūpono me S3 no R2 (QUIRE_STORAGE_DRIVER=s3), mea hoʻokele manawa maoli ma waena o nā noi (QUIRE_REALTIME_DRIVER=durable_objects a i ʻole centrifugo), cache kaʻana (QUIRE_CACHE_DRIVER=postgres a i ʻole valkey), a me mea hoʻolako leka uila HTTP. Inā ʻaʻohe o lākou, hōʻole ka Worker e hoʻomaka a papa inoa kona moʻolelo i nā hoʻonohonoho i nele. He mea kūʻai ka mea hoʻokele Durable Objects o ka Worker manawa maoli ma apps/realtime-worker (hoʻokahi Durable Object no kēlā me kēia channel no ka hoʻouna lehulehu, noho, a me ka mōʻaukala; hoʻokahi no kēlā me kēia kanaka no ka hemo ʻana); e hoʻouka pū iā ia e like me ka wehewehe ʻana ma lalo, a i ʻole e hoʻohana iā Centrifugo.

Nā ʻāpana

ʻĀpana Ma Cloudflare
web Worker me nodejs_compat
Postgres Waho, hiki ma o Hyperdrive: HYPERDRIVE no ka kuleana polokalamu, REPORT_HYPERDRIVE no ka kuleana hōʻike ma ia waihona ʻikepili kino hoʻokahi. Kope ka papa pūnaewele i kēlā me kēia kaula pilina i loko o DATABASE_URL a me QUIRE_REPORT_DATABASE_URL i kona hoʻomaka ʻana
Nā faila R2, ma o kona API S3 (S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com); hoʻohui ka binding FILES i ka bucket
Nā hana hope pg-boss ma luna o Hyperdrive ke pono e hoʻokomo pū ʻia ka hana me ke kākau. Me QUIRE_QUEUE_DRIVER=cloudflare ma ka worker hoa, holo nā hana māmā (nā leka hoʻomaopopo me ka hoʻonohonoho ʻole a me nā hoʻouna webhook) ma o Cloudflare Queues, no laila ʻaʻole huli ʻia lākou ma Postgres. Holo pū ka worker hoa i nā mea ʻelua
Manawa maoli Worker manawa maoli, apps/realtime-worker, me Durable Objects
worker, scheduler, collab, content, ClamAV, Gotenberg, ffmpeg Host ipu hoa. ʻAʻole hiki i Worker ke holo iā lākou
Nā kaha Nānā Workers, hoʻā ʻia ma wrangler.jsonc

Hāʻawi ʻo REPORT_HYPERDRIVE i ke kuleana hōʻike no ka waihona ʻikepili kino i kapa ʻia e HYPERDRIVE. ʻAʻole lawelawe kēia pahuhopu i nā tenant i hoʻopaʻa ʻia i nā waihona ʻikepili kino hou, e like me ka wehewehe ʻana ma lalo.

Nā mea hiki ʻole i kēia wahi

Hōʻole ʻia kēia mau mea i ka hoʻomaka ʻana me nā pilikia a pau i hōʻike pū ʻia:

  • ʻAʻohe SMTP. E hoʻohana i mea hoʻolako HTTP ma QUIRE_EMAIL_PROVIDER_CONFIG.
  • ʻAʻohe disk kūloko. Pono ʻo QUIRE_STORAGE_DRIVER e kuhikuhi i waihona mea.
  • ʻAʻohe manawa maoli a cache i loko o ke kaʻina. ʻAʻole kaʻana nā Workers i hoʻomanaʻo ma waena o nā noi, no laila hōʻole ʻia QUIRE_REALTIME_DRIVER=inprocess a me QUIRE_CACHE_DRIVER=memory.
  • ʻAʻohe ClamAV, Gotenberg, a i ʻole ffmpeg ma ka Worker. Hōʻole ʻia CLAMAV_URL, GOTENBERG_URL, a me FFMPEG_PATH ke hoʻonoho ʻia ma ka Worker; e hoʻonoho iā lākou ma ka worker hoa.
  • ʻAʻohe hui me nā waihona ʻikepili hoʻolaʻa. Paʻa nā binding Hyperdrive o kahi Worker i ka wā hoʻouka; no laila loaʻa i kahi hui me kona waihona ponoʻī ʻaoʻao maopopo e ʻōlelo ana «ʻaʻole loaʻa ma ʻaneʻi». E lawelawe iā ia mai Compose a i ʻole Vercel.

Hoʻokahi mea ʻaʻole i hōʻole ʻia akā pono e ʻike: ʻaʻole holo ka hana mua a me ka hana hou ʻana i nā ʻaoʻao paʻa ma Workers, me ka nānā ʻole i ka ʻōlelo a ka palapala framework. Hana ʻia kēlā me kēia ala i kēlā me kēia noi.

Ma kēia pahuhopu, e hoʻopōkole i nā hana ʻikepili a mai mālama iā lākou ma waena o kahi kāhea pūnaewele: hoʻoponopono hou ʻo Hyperdrive i ke kūlana kau ke hoʻi ka pilina i ka pool, no laila hoʻonoho ʻia ka pōʻaiapili tenant no kēlā me kēia hana.

Hoʻouka hana

  1. E hana i nā kumuwaiwai:
    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
    E hoʻokomo i nā ID Hyperdrive ʻelua i apps/web/wrangler.jsonc.
  2. E hoʻonoho i nā ʻōlelo huna, hoʻokahi i kēlā manawa me bun run --bun wrangler secret put <NAME> mai 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. Hele nā hoʻonohonoho maʻamau (QUIRE_APP_ORIGIN, QUIRE_CONTENT_ORIGIN, QUIRE_PLATFORM_DOMAINS, QUIRE_DATABASE_ID, S3_ENDPOINT, S3_BUCKET, QUIRE_COLLAB_URL) i loko o vars.
  3. Kūkulu a hoʻouka mai apps/web:
    NITRO_PRESET=cloudflare-module bun run build
    bun run --bun wrangler deploy
  4. E hoʻouka i ka Worker manawa maoli me ka QUIRE_REALTIME_WORKER_SECRET o ka papa pūnaewele a me kāna ʻōlelo huna token ma ke ʻano he QUIRE_REALTIME_TOKEN_SECRET (kau inoa ka papa pūnaewele i nā token manawa maoli me kona QUIRE_REALTIME_TOKEN_SECRET ponoʻī, a i ʻole me QUIRE_SECRET_KEY inā ʻaʻole ia i hoʻonoho ʻia; e hoʻohana i ka mea e hoʻohana ʻia nei), a hoʻonoho iā QUIRE_REALTIME_WORKER_URL ma ka papa pūnaewele i kona helu wahi:
    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. No nā hana māmā ma Cloudflare Queues, e hana i queue no kēlā me kēia queue māmā a hoʻonoho iā lākou ma ka worker hoa (pono kahi token API me nā ʻae heluhelu a kākau no 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
    E hoʻonoho iā QUIRE_QUEUE_DRIVER=cloudflare, CLOUDFLARE_ACCOUNT_ID, CLOUDFLARE_QUEUES_TOKEN, a me QUIRE_QUEUE_PREFIX inā ʻaʻole quire-.
  6. Holo i ka host hoa e like me ka ʻanuʻu 3 o ke alakaʻi Vercel. Holo nā neʻe ʻikepili ma laila ma mua o kēlā me kēia hoʻouka Worker.

Hōʻike ʻia kahi hoʻonohonoho i hōʻole ʻia ma bun run --bun wrangler tail me ka memo «The web tier did not start on cloudflare», a me nā hoʻonohonoho e hoʻololi ai.

Hoʻokele

E kikokiko e ʻimi…

↑↓ hoʻokele↵ kohoEsc pani