Lewati ke konten

Web tier di Vercel

Jalankan web tier Quire di Vercel dengan worker pendamping.

Desainnya ada di docs/architecture/23-ops.md, bagian 5. Vercel hanya menjalankan web tier. Semua bagian lain berjalan di host pendamping yang Anda operasikan; host ini wajib tersedia.

Status rilis ini

Konfigurasi sudah tersedia (apps/web/vercel.json, preset Nitro vercel, dan pemeriksaan saat mulai). Vercel memerlukan penyimpanan berkas bersama (QUIRE_STORAGE_DRIVER=s3 atau azure), driver realtime yang bekerja lintas instans fungsi (QUIRE_REALTIME_DRIVER=sse atau centrifugo), dan penyedia email HTTP. Tanpanya, web tier menolak mulai dan log menyebut setiap pengaturan yang belum tersedia.

Komponen

Komponen Tempat berjalan
web Vercel Functions, runtime Node: halaman, REST, MCP, LTI, webhook masuk
worker, scheduler, collab, content Host pendamping: Fly, Railway, ECS, atau host Docker Anda dengan docker/compose.yaml
Postgres Eksternal, di balik pooler transaksi: Neon, Supabase, atau RDS dengan PgBouncer
Berkas S3 atau R2. Tidak ada disk persisten
Pekerjaan latar belakang Dimasukkan ke antrean pg-boss dalam transaksi permintaan, lalu dijalankan worker pendamping. Jika worker pendamping menggunakan QUIRE_QUEUE_DRIVER=vercel, pekerjaan ringan (notifikasi tanpa urutan dan pengiriman webhook) melewati Vercel Queues (VERCEL_QUEUE_REGION, VERCEL_QUEUE_TOKEN), sehingga Postgres yang dipool tidak disurvei untuk pekerjaan tersebut
Pekerjaan berulang Scheduler pendamping. Tidak ada route Vercel Cron karena cron yang bekerja di dalam fungsi akan kehabisan waktu
Pelacakan OpenTelemetry menuju collector Anda, OTEL_EXPORTER_OTLP_ENDPOINT

Hal yang tidak dapat dilakukan target ini

Web tier memeriksa hal berikut saat mulai dan menolak konfigurasi sambil menyebut semua masalah, alih-alih baru gagal saat email pertama tidak terkirim:

  • Tidak ada SMTP. Vercel memblokir SMTP keluar. Atur QUIRE_EMAIL_PROVIDER_CONFIG ke penyedia HTTP (Postmark, SES, Mailgun, SendGrid, atau Resend). QUIRE_SMTP_URL ditolak.
  • Tidak ada disk lokal. QUIRE_STORAGE_DRIVER=local ditolak.
  • Tidak ada memori bersama antar-pemanggilan. QUIRE_REALTIME_DRIVER=inprocess ditolak. Server-sent events dibatasi oleh timeout fungsi; klien tersambung ulang menggunakan cursor sehingga tidak ada peristiwa hilang, tetapi informasi kehadiran tidak tersedia.
  • Jumlah basis data tenant tetap terbatas sekitar delapan, karena setiap basis data menambah pool koneksi di lingkungan yang tidak dapat berbagi pool.

Deployment

  1. Buat proyek Vercel dari repositori dengan Root Directory apps/web. apps/web/vercel.json menetapkan perintah instalasi dan build (NITRO_PRESET=vercel) serta menyajikan /sw.js tanpa cache.
  2. Atur variabel lingkungan. Dari docker/.env.example, setidaknya: QUIRE_DEPLOY_TARGET=vercel, QUIRE_APP_ORIGIN, QUIRE_CONTENT_ORIGIN, QUIRE_PLATFORM_DOMAINS, QUIRE_SECRET_KEY, QUIRE_MASTER_KEY, DATABASE_URL (alamat pooler), QUIRE_REPORT_DATABASE_URL, QUIRE_AUDIT_DATABASE_URL, QUIRE_DATABASE_ID, QUIRE_EMAIL_PROVIDER_CONFIG, QUIRE_MAIL_FROM, pengaturan penyimpanan, serta QUIRE_COLLAB_URL dan QUIRE_COLLAB_SIGNING_KEY yang menunjuk ke layanan collab host pendamping. QUIRE_REPORT_DATABASE_URL harus milik basis data fisik yang ditentukan DATABASE_URL. Untuk setiap basis data terdaftar tambahan, tambahkan URL koneksi quire_report miliknya ke lingkungan web dan worker, lalu daftarkan nama variabel lingkungannya sebagai env:NAME di konsol platform. Analytics berhenti dengan aman jika URL laporan basis data itu tidak tersedia.
  3. Di host pendamping, jalankan docker/compose.yaml tanpa layanan web dan gunakan docker/.env yang sama:
    docker compose -f docker/compose.yaml up -d migrate init worker scheduler collab content
    Migration dijalankan di sana sebelum setiap deployment Vercel diaktifkan.
  4. Deploy. Jika konfigurasi ditolak, log fungsi diawali “The web tier did not start on vercel” dan mencantumkan setiap pengaturan yang perlu diubah.

Peningkatan

Jalankan migration dari host pendamping terlebih dahulu, lalu aktifkan deployment Vercel baru, kemudian gilir worker host pendamping: urutannya dijelaskan di upgrade.md. Rollback instan Vercel adalah rollback kode dan selalu aman dalam satu rilis.

Navigasi

Ketik untuk mencari…

↑↓ navigasi↵ pilihEsc tutup