Architektura je popsána v části 6 dokumentu docs/architecture/23-ops.md. Workers provozují omezenou webovou vrstvu. Plná parita funkcí na Workers není cílem (PRD, část 12): co tento cíl neumí, se při spuštění odmítne a pojmenuje.
Stav v této verzi
Konfigurace je připravena (apps/web/wrangler.jsonc, předvolba Nitro cloudflare-module, bridge Hyperdrive a kontroly při spuštění). Worker potřebuje úložiště kompatibilní se S3 pro R2 (QUIRE_STORAGE_DRIVER=s3), realtime ovladač pro požadavky (QUIRE_REALTIME_DRIVER=durable_objects nebo centrifugo), sdílenou cache (QUIRE_CACHE_DRIVER=postgres nebo valkey) a e-mailového poskytovatele přes HTTP. Bez nich Worker odmítne spuštění a v protokolu pojmenuje všechna chybějící nastavení. Ovladač Durable Objects je klientem realtime Workeru v apps/realtime-worker (jeden Durable Object na kanál zajišťuje fan-out, presence a historii; jeden na uživatele obsluhuje odpojení). Nasaďte ho souběžně podle pokynů níže, nebo použijte Centrifugo.
Součásti
Součást
Na Cloudflare
web
Worker s nodejs_compat
Postgres
Externě, dostupný přes Hyperdrive: HYPERDRIVE pro aplikační roli, REPORT_HYPERDRIVE pro reportovací roli ve stejné fyzické databázi. Při spuštění webová vrstva zkopíruje každý připojovací řetězec do DATABASE_URL a QUIRE_REPORT_DATABASE_URL
Soubory
R2 přes jeho API S3 (S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com); vazba FILES připojuje bucket
Úlohy na pozadí
pg-boss přes Hyperdrive, když je třeba úlohu zařadit současně se zápisem. Pokud doprovodný worker používá QUIRE_QUEUE_DRIVER=cloudflare, lehké úlohy (neuspořádaná oznámení a doručování webhooků) se místo toho posílají přes Cloudflare Queues, takže se kvůli nim neprohledává Postgres. Doprovodný worker spouští oba typy
Realtime
Realtime Worker apps/realtime-worker s Durable Objects
Doprovodný hostitel kontejnerů. Worker je spustit neumí
Trasování
Workers observability zapnutá v wrangler.jsonc
REPORT_HYPERDRIVE poskytuje reportovací roli pro fyzickou databázi označenou HYPERDRIVE. Tento cíl neobsluhuje tenanty připnuté k dalším fyzickým databázím, jak je popsáno níže.
Co tento cíl neumí
Při spuštění odmítne všechny problémy najednou:
Bez SMTP. Použijte HTTP poskytovatele v QUIRE_EMAIL_PROVIDER_CONFIG.
Bez místního disku.QUIRE_STORAGE_DRIVER musí označovat objektové úložiště.
Bez realtime nebo cache v procesu. Workers nesdílejí paměť mezi požadavky, proto se odmítají QUIRE_REALTIME_DRIVER=inprocess a QUIRE_CACHE_DRIVER=memory.
Worker neumí ClamAV, Gotenberg ani ffmpeg. Pokud jsou v Workeru nastavené CLAMAV_URL, GOTENBERG_URL nebo FFMPEG_PATH, konfigurace se odmítne; nastavte je na doprovodném workeru.
Žádné organizace s vyhrazenou databází. Vazby Hyperdrive Workeru jsou pevně dané při nasazení, takže organizace s vlastní databází dostane jasnou stránku „zde nedostupné“. Provozujte ji na Compose nebo Vercelu.
Ještě jedna věc se neodmítá, ale je důležité o ní vědět: prerenderování a přírůstkové generování statických stránek na Workers nefungují, bez ohledu na dokumentaci frameworku. Každá cesta se vykresluje při každém požadavku.
Transakce v tomto cíli udržujte krátké a nikdy je neotevírejte přes síťové volání: Hyperdrive při vrácení připojení do poolu resetuje stav relace, proto se kontext tenanta nastavuje v každé transakci.
Nasazení
Vytvořte prostředky:
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
Vložte obě ID Hyperdrive do apps/web/wrangler.jsonc.
Jednotlivě nastavte tajné údaje příkazem bun run --bun wrangler secret put <NAME> ze složky 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. Obyčejná nastavení (QUIRE_APP_ORIGIN, QUIRE_CONTENT_ORIGIN, QUIRE_PLATFORM_DOMAINS, QUIRE_DATABASE_ID, S3_ENDPOINT, S3_BUCKET, QUIRE_COLLAB_URL) patří do vars.
Sestavte a nasaďte z apps/web:
NITRO_PRESET=cloudflare-module bun run buildbun run --bun wrangler deploy
Nasaďte realtime Worker s hodnotou QUIRE_REALTIME_WORKER_SECRET z webové vrstvy a jeho tokenovým tajným klíčem v QUIRE_REALTIME_TOKEN_SECRET. Webová vrstva podepisuje realtime tokeny vlastním QUIRE_REALTIME_TOKEN_SECRET, případně QUIRE_SECRET_KEY, pokud první proměnná není nastavená; použijte tedy stejnou hodnotu jako ona. Na webové vrstvě nastavte QUIRE_REALTIME_WORKER_URL na adresu Workeru:
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
Pro lehké úlohy v Cloudflare Queues vytvořte frontu pro každou lehkou frontu a nastavte ji na doprovodném workeru (token API s oprávněním číst a zapisovat fronty):
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
Nastavte QUIRE_QUEUE_DRIVER=cloudflare, CLOUDFLARE_ACCOUNT_ID, CLOUDFLARE_QUEUES_TOKEN a QUIRE_QUEUE_PREFIX, pokud nepoužíváte quire-.
Doprovodného hostitele spusťte podle 3. kroku příručky k Vercelu. Migrace se tam spouštějí před každým nasazením Workeru.
Odmítnutá konfigurace se v bun run --bun wrangler tail zobrazí jako „The web tier did not start on cloudflare“ a vypíše všechna nastavení, která je třeba změnit.