સીધા સામગ્રી પર જાઓ

Cloudflare Workers પર વેબ સ્તર

Cloudflare Workers પર ઘટાડેલા Quire વેબ સ્તરને ચલાવો.

Markdown તરીકે જુઓ

રચના docs/architecture/23-ops.md ના વિભાગ 6 માં છે. Workers ઘટાડેલું વેબ સ્તર ચલાવે છે. Workers પર તમામ સુવિધાઓ હોવી આ કાર્યક્ષેત્રમાં નથી (PRD વિભાગ 12): આ target જે કરી શકતું નથી તેનો શરૂ થતી વખતે નામ સાથે ઇનકાર થાય છે.

આ રિલીઝની સ્થિતિ

ગોઠવણી તૈયાર છે (apps/web/wrangler.jsonc, cloudflare-module Nitro preset, Hyperdrive bridge અને startup ચકાસણીઓ). Worker ને R2 માટે S3-compatible storage (QUIRE_STORAGE_DRIVER=s3), requests વચ્ચે realtime driver (QUIRE_REALTIME_DRIVER=durable_objects અથવા centrifugo), shared cache (QUIRE_CACHE_DRIVER=postgres અથવા valkey) અને HTTP email provider જોઈએ. તે વિના Worker શરૂ થવાનો ઇનકાર કરે છે અને તેના log માં દરેક setting નું નામ આવે છે. Durable Objects driver apps/realtime-worker માંના realtime Worker નો client છે (fan-out, presence અને history માટે દરેક channel દીઠ એક Durable Object; disconnects માટે વ્યક્તિ દીઠ એક); નીચે પ્રમાણે તેને સાથે deploy કરો અથવા Centrifugo વાપરો.

ઘટકો

ઘટક Cloudflare પર
web nodejs_compat ધરાવતો Worker
Postgres Hyperdrive મારફતે જોડાયેલ બાહ્ય ડેટાબેઝ: application role માટે HYPERDRIVE, એ જ ભૌતિક database પર report role માટે REPORT_HYPERDRIVE. શરૂ થાય ત્યારે web tier દરેક connection string ને DATABASE_URL અને QUIRE_REPORT_DATABASE_URL માં નકલ કરે છે
Files R2, તેની S3 API મારફતે (S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com); FILES binding bucket જોડે છે
Background jobs લખાણ સાથે જ job queue થવી જરૂરી હોય ત્યારે Hyperdrive ઉપર pg-boss. સાથી worker પર QUIRE_QUEUE_DRIVER=cloudflare હોય ત્યારે હળવી jobs (ક્રમ વિનાના notification અને webhook deliveries) Cloudflare Queues મારફતે જાય છે, તેથી Postgres ને તેમના માટે poll કરાતો નથી. સાથી worker બંને ચલાવે છે
Realtime Durable Objects સાથેનો realtime Worker, apps/realtime-worker
worker, scheduler, collab, content, ClamAV, Gotenberg, ffmpeg સાથી container host. Worker આ ચલાવી શકતો નથી
Tracing Workers observability, wrangler.jsonc માં સક્રિય

REPORT_HYPERDRIVE, HYPERDRIVE દ્વારા નામ અપાયેલા ભૌતિક ડેટાબેઝ માટે report role આપે છે. નીચે સમજાવ્યા મુજબ આ target વધારાના ભૌતિક ડેટાબેઝ પર નિશ્ચિત tenants ને સેવા આપતું નથી.

આ target શું કરી શકતું નથી

શરૂઆત વખતે જ ઇનકાર થાય છે અને બધી સમસ્યાઓ એકસાથે યાદીબદ્ધ થાય છે:

  • SMTP નથી. QUIRE_EMAIL_PROVIDER_CONFIG માં HTTP provider વાપરો.
  • સ્થાનિક disk નથી. QUIRE_STORAGE_DRIVER એ object storage દર્શાવવું જોઈએ.
  • In-process realtime કે cache નથી. Workers requests વચ્ચે memory વહેંચતા નથી, તેથી QUIRE_REALTIME_DRIVER=inprocess અને QUIRE_CACHE_DRIVER=memory નકારાય છે.
  • Worker માં ClamAV, Gotenberg કે ffmpeg નથી. Worker પર સેટ કરેલા CLAMAV_URL, GOTENBERG_URL અને FFMPEG_PATH નકારાય છે; તેના બદલે સાથી worker પર સેટ કરો.
  • સમર્પિત database ધરાવતી organisations નથી. Worker ના Hyperdrive bindings deploy વખતે જ નક્કી થાય છે, તેથી પોતાનો database ધરાવતી organisation માટે “unavailable here” પાનું દેખાય છે. તેને Compose અથવા Vercel પરથી સેવા આપો.

અને એક વાતનો ઇનકાર થતો નથી, પણ જાણવી જરૂરી છે: framework documentation કંઈ પણ કહે, Workers પર prerendering અને incremental static regeneration કામ કરતાં નથી. દરેક route દરેક request પર render થાય છે.

આ target પર transactions ટૂંકા રાખો અને network call દરમિયાન તેને ખુલ્લા ક્યારેય ન રાખો: connection pool માં પાછું જાય ત્યારે Hyperdrive session state reset કરે છે, એટલે tenant context દરેક transaction માટે સેટ થાય છે.

Deploy કરવું

  1. Resources બનાવો:
    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
    બંને Hyperdrive ids ને apps/web/wrangler.jsonc માં મૂકો.
  2. bun run --bun wrangler secret put <NAME> વડે એક પછી એક secrets સેટ કરો, 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. સાદી સેટિંગ્સ (QUIRE_APP_ORIGIN, QUIRE_CONTENT_ORIGIN, QUIRE_PLATFORM_DOMAINS, QUIRE_DATABASE_ID, S3_ENDPOINT, S3_BUCKET, QUIRE_COLLAB_URL) vars માં મૂકો.
  3. apps/web માંથી build અને deploy કરો:
    NITRO_PRESET=cloudflare-module bun run build
    bun run --bun wrangler deploy
  4. વેબ સ્તરનું QUIRE_REALTIME_WORKER_SECRET અને તેનો token secret QUIRE_REALTIME_TOKEN_SECRET તરીકે વાપરી realtime Worker deploy કરો (વેબ સ્તર પોતાના QUIRE_REALTIME_TOKEN_SECRET વડે realtime tokens સહી કરે છે, અથવા તે unset હોય તો QUIRE_SECRET_KEY વડે; તેથી તે જે વાપરે તે મૂકો), અને વેબ સ્તર પર QUIRE_REALTIME_WORKER_URL ને તેના સરનામા પર સેટ કરો:
    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 પર હળવી jobs માટે દરેક light queue માટે એક queue બનાવો અને આ સેટિંગ્સ સાથી worker પર મૂકો (Queues માટે read અને write અધિકાર ધરાવતું API token):
    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
    QUIRE_QUEUE_DRIVER=cloudflare, CLOUDFLARE_ACCOUNT_ID, CLOUDFLARE_QUEUES_TOKEN, અને QUIRE_QUEUE_PREFIX જો quire- ન હોય તો.
  6. Vercel guide ના પગલા 3 મુજબ સાથી host ચલાવો. દરેક Worker deployment પહેલાં ત્યાં migrations ચાલે છે.

નકારાયેલી ગોઠવણી bun run --bun wrangler tail માં “The web tier did not start on cloudflare” તરીકે દેખાય છે અને ત્યારબાદ બદલવાની દરેક setting આવે છે.

નેવિગેશન

શોધવા માટે લખો…

↑↓ નેવિગેટ કરો↵ પસંદ કરોEsc બંધ કરો