Nasa seksiyon 6 ng docs/architecture/23-ops.md ang disenyo. Pinapatakbo ng
Workers ang pinasimpleng web tier. Hindi saklaw ng layunin ang feature parity
sa Workers (PRD seksiyon 12): tinatanggihan sa pagsisimula ang hindi kayang gawin
gamit ang pangalan nito.
Katayuan sa release na ito
Nakahanda na ang configuration (apps/web/wrangler.jsonc, ang cloudflare-module
Nitro preset, Hyperdrive bridge, at mga startup check). Kailangan ng Worker ang
S3-compatible na storage para sa R2 (QUIRE_STORAGE_DRIVER=s3), realtime driver
sa iba’t ibang request (QUIRE_REALTIME_DRIVER=durable_objects o centrifugo),
shared cache (QUIRE_CACHE_DRIVER=postgres o valkey), at HTTP email provider.
Kung wala ang mga ito, tatanggi itong magsimula at ililista ng log ang setting.
Client ng realtime Worker sa apps/realtime-worker ang Durable Objects driver
(isang Durable Object bawat channel para sa fan-out, presence, at history; isa
bawat tao para sa mga disconnect); i-deploy ito sa tabi ayon sa ibaba, o gumamit
ng Centrifugo.
Mga bahagi
Bahagi
Sa Cloudflare
web
Worker na may nodejs_compat
Postgres
External, naaabot gamit ang Hyperdrive: HYPERDRIVE para sa application role at REPORT_HYPERDRIVE para sa report role sa parehong pisikal na database. Kinokopya ng web tier sa DATABASE_URL at QUIRE_REPORT_DATABASE_URL ang bawat connection string sa pagsisimula
Files
R2 gamit ang S3 API (S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com); ikinakabit ng FILES binding ang bucket
Mga background job
pg-boss sa Hyperdrive kapag dapat ipila ang trabaho kasama ng write. Kapag QUIRE_QUEUE_DRIVER=cloudflare sa kasamang worker, dumaraan naman sa Cloudflare Queues ang magaang trabaho (walang pagkakasunod na notification at webhook delivery), kaya hindi ito i-poll sa Postgres. Pareho itong pinapatakbo ng kasamang worker
Realtime
Realtime Worker na apps/realtime-worker na may Durable Objects
Kasamang container host. Hindi kayang patakbuhin ng Worker ang mga ito
Tracing
Workers observability na naka-enable sa wrangler.jsonc
Ibinibigay ng REPORT_HYPERDRIVE ang report role para sa pisikal na database na
pinangalanan ng HYPERDRIVE. Hindi nagsisilbi ang target na ito sa tenant na
naka-pin sa dagdag na pisikal na database, gaya ng inilalarawan sa ibaba.
Hindi kayang gawin ng target na ito
Tinatanggihan ito sa pagsisimula at sabay-sabay na inililista ang lahat ng problema:
Walang SMTP. Gumamit ng HTTP provider sa QUIRE_EMAIL_PROVIDER_CONFIG.
Walang lokal na disk. Kailangang tumukoy ang QUIRE_STORAGE_DRIVER sa
object storage.
Walang in-process realtime o cache. Walang memory na pinaghahatian ang
request ng Workers, kaya tinatanggihan ang QUIRE_REALTIME_DRIVER=inprocess
at QUIRE_CACHE_DRIVER=memory.
Walang ClamAV, Gotenberg, o ffmpeg sa Worker. Tinatanggihan ang
CLAMAV_URL, GOTENBERG_URL, at FFMPEG_PATH kapag itinakda sa Worker;
sa kasamang worker itakda ang mga ito.
Walang organisasyong may dedicated database. Nakatakda sa deployment ang
Hyperdrive binding ng Worker, kaya makakakita ng malinaw na “unavailable here”
page ang organisasyong may sariling database. I-serve ito mula Compose o Vercel.
May isang bagay pang hindi tinatanggihan ngunit dapat malaman: hindi gumagana
sa Workers ang prerendering at incremental static regeneration, anuman ang
sinasabi ng dokumentasyon ng framework. Sa bawat request nirere-render ang route.
Sa target na ito, panatilihing maikli ang transaction at huwag itong panatilihing
bukas habang may network call: nire-reset ng Hyperdrive ang session state kapag
bumalik sa pool ang connection kaya itinatakda ang konteksto ng tenant bawat transaction.
Pag-deploy
Gumawa ng resource:
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
Ilagay ang dalawang Hyperdrive ID sa apps/web/wrangler.jsonc.
Isa-isang itakda ang secret gamit ang bun run --bun wrangler secret put <NAME> sa
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. Itakda rin ang
ordinaryong setting (QUIRE_APP_ORIGIN, QUIRE_CONTENT_ORIGIN,
QUIRE_PLATFORM_DOMAINS, QUIRE_DATABASE_ID, S3_ENDPOINT, S3_BUCKET,
QUIRE_COLLAB_URL) sa vars.
Mag-build at mag-deploy mula sa apps/web:
NITRO_PRESET=cloudflare-module bun run buildbun run --bun wrangler deploy
I-deploy ang realtime Worker gamit ang QUIRE_REALTIME_WORKER_SECRET ng web
tier at token secret nito na QUIRE_REALTIME_TOKEN_SECRET (pinipirmahan ng
web tier ang realtime token gamit ang sarili nitong QUIRE_REALTIME_TOKEN_SECRET
o QUIRE_SECRET_KEY kung wala ang una, kaya gamitin kung ano ang ginagamit
nito). Itakda sa web tier ang address nito sa QUIRE_REALTIME_WORKER_URL:
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
Para sa magaang trabaho sa Cloudflare Queues, gumawa ng queue bawat light
queue at itakda ang mga ito sa kasamang worker (API token na may Queues read
at write):
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
Itakda ang QUIRE_QUEUE_DRIVER=cloudflare, CLOUDFLARE_ACCOUNT_ID,
CLOUDFLARE_QUEUES_TOKEN, at QUIRE_QUEUE_PREFIX kung hindi quire-.
+6. Patakbuhin ang companion host gaya ng hakbang 3 sa gabay sa Vercel.
Tumatakbo roon ang migration bago ang bawat Worker deployment.
+Makikita ang tinanggihang configuration sa bun run --bun wrangler tail bilang
+“The web tier did not start on cloudflare”, na sinusundan ng setting na dapat baguhin.
+EOF
perl -pi -e ‘s/^+//’ apps/docs-site/locales/fil/guides/ops/cloudflare.md
bun apps/docs-site/scripts/import-guide.ts fil ops/cloudflare.md