Přejít k obsahu

Webová vrstva na Vercelu

Provozujte webovou vrstvu Quire na Vercelu s doprovodným workerem.

Zobrazit jako Markdown

Architektura je popsána v části 5 dokumentu docs/architecture/23-ops.md. Vercel provozuje pouze webovou vrstvu. Vše ostatní běží na doprovodném hostiteli, kterého provozujete vy; ten je nezbytný.

Stav v této verzi

Konfigurace je připravena (apps/web/vercel.json, předvolba Nitro vercel a kontroly při spuštění). Vercel potřebuje sdílené úložiště souborů (QUIRE_STORAGE_DRIVER=s3 nebo azure), realtime ovladač fungující napříč instancemi funkcí (QUIRE_REALTIME_DRIVER=sse nebo centrifugo) a e-mailového poskytovatele přes HTTP. Bez nich webová vrstva odmítne spuštění a v protokolu pojmenuje chybějící nastavení.

Součásti

Součást Kde běží
web Vercel Functions, runtime Node: stránky, REST, MCP, LTI, přijímané webhooky
worker, scheduler, collab, content Doprovodný hostitel: Fly, Railway, ECS nebo vlastní Docker hostitel s docker/compose.yaml
Postgres Externě za transaction poolerem: Neon, Supabase nebo RDS s PgBouncerem
Soubory S3 nebo R2. Trvalý disk není k dispozici
Úlohy na pozadí Zařazují se přes pg-boss do transakce požadavku a spouští je doprovodný worker. Pokud doprovodný worker používá QUIRE_QUEUE_DRIVER=vercel, lehké úlohy (neuspořádaná oznámení a doručování webhooků) procházejí přes Vercel Queues (VERCEL_QUEUE_REGION, VERCEL_QUEUE_TOKEN), takže se kvůli nim neprohledává sdílený Postgres
Opakované úlohy Doprovodný scheduler. Není tu cesta Vercel Cron, protože cron provádějící práci uvnitř funkce by vypršel
Trasování OpenTelemetry do vašeho collectoru, OTEL_EXPORTER_OTLP_ENDPOINT

Co tento cíl neumí

Webová vrstva tato omezení kontroluje při spuštění a odmítne konfiguraci s výpisem všech problémů, místo aby selhala později při prvním neodeslaném e-mailu:

  • Bez SMTP. Vercel blokuje odchozí SMTP. Nastavte QUIRE_EMAIL_PROVIDER_CONFIG na HTTP poskytovatele (Postmark, SES, Mailgun, SendGrid nebo Resend). QUIRE_SMTP_URL se odmítá.
  • Bez místního disku. QUIRE_STORAGE_DRIVER=local se odmítá.
  • Bez sdílené paměti mezi voláními. QUIRE_REALTIME_DRIVER=inprocess se odmítá. Server-sent events jsou omezeny časovým limitem funkce; klient se znovu připojí s kurzorem, takže se žádná událost neztratí, ale presence není dostupná.
  • Počet připnutých databází tenantů je omezen přibližně na osm, protože každá vyžaduje další connection pool v prostředí, kde je nelze sdílet.

Nasazení

  1. Vytvořte projekt Vercel z repozitáře s Root Directory nastaveným na apps/web. apps/web/vercel.json nastavuje instalační a sestavovací příkazy (NITRO_PRESET=vercel) a obsluhuje /sw.js bez cache.
  2. Nastavte proměnné prostředí. Z docker/.env.example potřebujete alespoň: QUIRE_DEPLOY_TARGET=vercel, QUIRE_APP_ORIGIN, QUIRE_CONTENT_ORIGIN, QUIRE_PLATFORM_DOMAINS, QUIRE_SECRET_KEY, QUIRE_MASTER_KEY, DATABASE_URL (adresa pooleru), QUIRE_REPORT_DATABASE_URL, QUIRE_AUDIT_DATABASE_URL, QUIRE_DATABASE_ID, QUIRE_EMAIL_PROVIDER_CONFIG, QUIRE_MAIL_FROM, nastavení úložiště a QUIRE_COLLAB_URL spolu s QUIRE_COLLAB_SIGNING_KEY, které ukazují na službu collab doprovodného hostitele. QUIRE_REPORT_DATABASE_URL náleží ke stejné fyzické databázi jako DATABASE_URL. U každé další registrované databáze přidejte její vlastní připojovací URL quire_report do prostředí webu i workeru a zaregistrujte název proměnné jako env:NAME v konzoli platformy. Pokud chybí adresa reportu dané databáze, analytika se bezpečně odmítne.
  3. Na doprovodném hostiteli spusťte docker/compose.yaml bez služby web a se stejným souborem docker/.env:
    docker compose -f docker/compose.yaml up -d migrate init worker scheduler collab content
    Migrace se spouštějí tam před povýšením každého nasazení Vercelu.
  4. Proveďte nasazení. Při odmítnutí konfigurace začíná protokol funkce textem „The web tier did not start on vercel“ a vypíše všechna nastavení, která je třeba změnit.

Aktualizace

Nejprve migrujte na doprovodném hostiteli, potom povyšte nové nasazení Vercelu a nakonec obměňte workery doprovodného hostitele. Pořadí je popsáno v upgrade.md. Okamžité vrácení nasazení na Vercelu je návrat ke starší verzi kódu a v rámci jedné verze je vždy bezpečné.

Navigace

Začněte psát a hledejte…

↑↓ procházení↵ vybratEsc zavřít