La dezajno troviĝas en sekcio 6 de docs/architecture/23-ops.md. Workers rulas reduktitan
retan tavolon. Funkcia egaleco ĉe Workers estas ekster la amplekso (PRD sekcio 12): tio,
kion ĉi tiu celo ne povas fari, estas rifuzata ĉe starto kaj nomata.
Stato en ĉi tiu eldono
La agordo jam ekzistas (apps/web/wrangler.jsonc, Nitro-antaŭagordo
cloudflare-module, Hyperdrive-ponto kaj startkontroloj). Worker bezonas S3-kongruan stokadon por R2
(QUIRE_STORAGE_DRIVER=s3), realtempan pelilon tra petoj
(QUIRE_REALTIME_DRIVER=durable_objects aŭ centrifugo), komunan kaŝmemoron
(QUIRE_CACHE_DRIVER=postgres aŭ valkey) kaj HTTP-retpoŝtprovizanton.
Sen ili Worker rifuzas starti kaj ĝia protokolo nomas ĉiun agordon.
Pelilo Durable Objects estas kliento de realtempa Worker en
apps/realtime-worker (unu Durable Object por kanalo por disa sendado, ĉeesto
kaj historio, unu por persono por malkonektoj); disfaldigu ĝin kune, kiel sube,
aŭ uzu Centrifugo.
La partoj
Parto
Ĉe Cloudflare
web
Worker kun nodejs_compat
Postgres
Ekstera, atingata per Hyperdrive: HYPERDRIVE por la aplikaĵa rolo, REPORT_HYPERDRIVE por la raportrola konekto al la sama fizika datumbazo. La reta tavolo kopias ĉiun konektotringon al DATABASE_URL kaj QUIRE_REPORT_DATABASE_URL ĉe starto
Dosieroj
R2 per ĝia S3-API (S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com); binding FILES ligas la bucket
Fonaj taskoj
pg-boss tra Hyperdrive kiam tasko devas esti envicigita per skribo. Kun QUIRE_QUEUE_DRIVER=cloudflare ĉe akompana worker, malpezaj taskoj (senorda livero de sciigoj kaj webhooks) anstataŭe trairas Cloudflare Queues, do ili ne pridemandiĝas de Postgres. La akompana worker rulas ambaŭ
Reala tempo
La realtempa Worker apps/realtime-worker kun Durable Objects
Akompana ujo-gastiganto. Worker ne povas ruli ilin
Spuradon
Observado de Workers, ŝaltita en wrangler.jsonc
REPORT_HYPERDRIVE provizas la raportrolon por la fizika datumbazo nomita per
HYPERDRIVE. Ĉi tiu celo ne servas luantojn ligitajn al pliaj
fizikaj datumbazoj, kiel priskribite sube.
Kion ĉi tiu celo ne povas fari
Rifuzata ĉe starto, kun ĉiuj problemoj listigitaj samtempe:
Neniu SMTP. Uzu HTTP-provizanton en QUIRE_EMAIL_PROVIDER_CONFIG.
Neniu loka disko.QUIRE_STORAGE_DRIVER devas nomi objektan stokadon.
Neniu enloka realtempigo aŭ kaŝmemoro. Workers ne kunhavas memoron inter
petoj, do QUIRE_REALTIME_DRIVER=inprocess kaj
QUIRE_CACHE_DRIVER=memory estas rifuzataj.
Neniu ClamAV, Gotenberg aŭ ffmpeg en Worker.CLAMAV_URL,
GOTENBERG_URL kaj FFMPEG_PATH agorditaj ĉe Worker estas rifuzataj; agordu ilin
ĉe akompana worker.
Neniuj organizaĵoj kun dediĉitaj datumbazoj. La Hyperdrive-ligoj de Worker estas
fiksitaj ĉe disfaldo, do organizaĵo kun propra datumbazo ricevas klaran
paĝon “ne disponeblas ĉi tie”. Servu ĝin de Compose aŭ Vercel.
Estas ankaŭ unu afero ne rifuzata sed grava: antaŭrenderigo kaj
inkrementa statika regenerado ne funkcias ĉe Workers, malgraŭ tio, kion diras
la kadra dokumentaro. Ĉiu vojo estas renderata por ĉiu peto.
Ĉe ĉi tiu celo tenu transakciojn mallongaj kaj neniam malfermu unu dum reta
voko: Hyperdrive restarigas sesian staton kiam konekto revenas al la lageto,
do luanta kunteksto estas agordata por ĉiu transakcio.
Disfaldi
Kreu la rimedojn:
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
Metu la du Hyperdrive-ID-ojn en apps/web/wrangler.jsonc.
Agordu la sekretojn unuope per bun run --bun wrangler secret put <NAME> el
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. Simplaj agordoj
(QUIRE_APP_ORIGIN, QUIRE_CONTENT_ORIGIN, QUIRE_PLATFORM_DOMAINS,
QUIRE_DATABASE_ID, S3_ENDPOINT, S3_BUCKET, QUIRE_COLLAB_URL) apartenas en
vars.
Konstruu kaj disfaldigu el apps/web:
NITRO_PRESET=cloudflare-module bun run buildbun run --bun wrangler deploy
Disfaldigu la realtempan Worker kun la QUIRE_REALTIME_WORKER_SECRET de la reta tavolo
kaj ĝia ĵetona sekreto kiel QUIRE_REALTIME_TOKEN_SECRET (la reta tavolo subskribas
realtempajn ĵetonojn per propra QUIRE_REALTIME_TOKEN_SECRET aŭ per
QUIRE_SECRET_KEY, se la unua ne estas agordita; uzu tiun efektive uzatan), kaj agordu
QUIRE_REALTIME_WORKER_URL ĉe la reta tavolo al ĝia adreso:
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
Por malpezaj taskoj per Cloudflare Queues, kreu atendovicon por ĉiu malpeza atendovico kaj
agordu ĉi tion ĉe akompana worker (API-ĵetono kun legado kaj
skribado de 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
Agordu QUIRE_QUEUE_DRIVER=cloudflare, CLOUDFLARE_ACCOUNT_ID,
CLOUDFLARE_QUEUES_TOKEN kaj QUIRE_QUEUE_PREFIX se ĝi ne estas quire-.
Rulu akompanan gastiganton kiel ĉe la Vercel-gvidilo, paŝo 3.
Migradoj ruliĝas tie antaŭ ĉiu Worker-disfaldo.
Rifuzita agordo aperas ĉe bun run --bun wrangler tail kiel “The web tier did
not start on cloudflare”, sekvata de ĉiu ŝanĝenda agordo.