Saltate à u cuntenutu

U nivellu web nant'à Cloudflare Workers

Eseguite un nivellu web riduttu di Quire nant'à Cloudflare Workers.

Vede cum’è Markdown

U disignu hè in a sezzione 6 di docs/architecture/23-ops.md. Workers esegue un nivellu web riduttu. A parità di funzioni nant’à Workers ùn face micca parte di u scopu (PRD sezzione 12): ciò ch’ellu ùn pò fà stu target hè ricusatu à l’avviu, per nome.

Statu in sta versione

A cunfigurazione hè pronta (apps/web/wrangler.jsonc, u preset Nitro cloudflare-module, u ponte Hyperdrive è i cuntrolli à l’avviu). Un Worker hà bisognu d’un almacenamentu cumpatibile cù S3 per R2 (QUIRE_STORAGE_DRIVER=s3), d’un driver in tempu reale trà dumande (QUIRE_REALTIME_DRIVER=durable_objects o centrifugo), d’una cache spartuta (QUIRE_CACHE_DRIVER=postgres o valkey) è d’un fornitore di posta HTTP. Senza elli, u Worker ricusa d’avvià è u so registru nomina ogni paràmetru. U driver Durable Objects hè un cliente di u Worker in tempu reale in apps/realtime-worker (un Durable Object per canale per a distribuzione, a presenza è a storia, unu per persona per e disconnessioni); distribuite lu accantu cum’è quì sottu, o aduprate Centrifugo.

I cumpunenti

Cumpunente Nant’à Cloudflare
web Un Worker cù nodejs_compat
Postgres Esternu, accessu via Hyperdrive: HYPERDRIVE per u rollu di l’applicazione, REPORT_HYPERDRIVE per u rollu di rapportu nantu à a stessa basa fisica. U nivellu web copia ogni stringa di cunnessione in DATABASE_URL è QUIRE_REPORT_DATABASE_URL à l’avviu
Schedarii R2, via a so API S3 (S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com); u binding FILES attacca u bucket
Travaglii in sfondu pg-boss sopra Hyperdrive quandu u travagliu deve esse accodatu cù una scrittura. Cù QUIRE_QUEUE_DRIVER=cloudflare nant’à u worker cumpagnu, i travaglii ligeri (cunsigne è cunsegne webhook senza ordine) passanu invece per Cloudflare Queues, dunque Postgres ùn hè micca interrugatu per elli. U worker cumpagnu esegue i dui
In tempu reale U Worker in tempu reale, apps/realtime-worker, cù Durable Objects
worker, scheduler, collab, content, ClamAV, Gotenberg, ffmpeg Un host di cuntainer cumpagnu. Un Worker ùn li pò eseguisce
Tracciamentu Osservabilità Workers, attivata in wrangler.jsonc

REPORT_HYPERDRIVE furnisce u rollu di rapportu per a basa fisica indicata da HYPERDRIVE. Stu target ùn serve tenant fissati à altre basi fisiche, cum’è discrittu quì sottu.

Ciò ch’ellu ùn pò fà stu target

Ricusatu à l’avviu, cù tutti i prublemi elencati inseme:

  • Nisun SMTP. Aduprate un fornitore HTTP in QUIRE_EMAIL_PROVIDER_CONFIG.
  • Nisun discu lucale. QUIRE_STORAGE_DRIVER deve indicà un almacenamentu d’ogetti.
  • Nisuna cache o funzione in tempu reale in prucessu. Workers ùn spartenu micca memoria trà dumande, dunque QUIRE_REALTIME_DRIVER=inprocess è QUIRE_CACHE_DRIVER=memory sò ricusati.
  • Nisun ClamAV, Gotenberg o ffmpeg in u Worker. CLAMAV_URL, GOTENBERG_URL è FFMPEG_PATH stabiliti nant’à u Worker sò ricusati; stabiliteli nant’à u worker cumpagnu invece.
  • Nisuna urganizazione cù basa di dati dedicata. I binding Hyperdrive d’un Worker sò fissati à a distribuzione, dunque un’urganizazione cù a so propria basa vede una pagina chjara «micca dispunibule quì». Servitela da Compose o Vercel.

È una cosa chì ùn hè micca ricusata ma ci vole à sapela: a previsualizazione anticipata è rigenerazione statica incrementale ùn funzionanu micca nant’à Workers, qualunque sia a ducumentazione di u framework. Ogni strada hè resa per dumanda.

Nant’à stu target, tenite e transazzioni corte è ùn ne mantenite mai una durante una chjama à a rete: Hyperdrive ristabilisce u statu di sessione quandu una cunnessione torna à u pool, dunque u cuntestu di tenant hè stabilitu per ogni transazzione.

Distribuzione

  1. Create e risorse:
    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
    Mettite i dui ID Hyperdrive in apps/web/wrangler.jsonc.
  2. Stabilite i sicreti, unu à volta cù bun run --bun wrangler secret put <NAME> da 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. I paràmetri nurmali (QUIRE_APP_ORIGIN, QUIRE_CONTENT_ORIGIN, QUIRE_PLATFORM_DOMAINS, QUIRE_DATABASE_ID, S3_ENDPOINT, S3_BUCKET, QUIRE_COLLAB_URL) vanu in vars.
  3. Custruite è distribuite da apps/web:
    NITRO_PRESET=cloudflare-module bun run build
    bun run --bun wrangler deploy
  4. Distribuite u Worker in tempu reale, cù QUIRE_REALTIME_WORKER_SECRET di u nivellu web è u so sicretu di gettone cum’è QUIRE_REALTIME_TOKEN_SECRET (u nivellu web firma gettoni in tempu reale cù u so propiu QUIRE_REALTIME_TOKEN_SECRET, o cù QUIRE_SECRET_KEY quandu ùn hè micca stabilitu; aduprate dunque quellu chì usa), è stabilite QUIRE_REALTIME_WORKER_URL nant’à u nivellu web à u so indirizzu:
    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. Per i travaglii ligeri in Cloudflare Queues, create una fila per ogni fila ligera è stabilite i paràmetri annantu à u worker cumpagnu (un gettone API cù permessi di lettura è scrittura per 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
    QUIRE_QUEUE_DRIVER=cloudflare, CLOUDFLARE_ACCOUNT_ID, CLOUDFLARE_QUEUES_TOKEN, è QUIRE_QUEUE_PREFIX s’ellu ùn hè micca quire-.
  6. Eseguite l’host cumpagnu cum’è discrittu in a guida Vercel, passu 3. E migrazioni si facenu quì, prima di ogni distribuzione Worker.

Una cunfigurazione ricusata apparisce in bun run --bun wrangler tail cum’è «The web tier did not start on cloudflare», seguitatu da ogni paràmetru da cambià.

Navigazione

Scrivite per circà…

↑↓ per navigà↵ per selezziunàEsc per chjude