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
Buat proyek Vercel dari repositori dengan Root Directoryapps/web. apps/web/vercel.json menetapkan perintah instalasi dan build (NITRO_PRESET=vercel) serta menyajikan /sw.js tanpa cache.
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.
Di host pendamping, jalankan docker/compose.yaml tanpa layanan web dan gunakan docker/.env yang sama:
Migration dijalankan di sana sebelum setiap deployment Vercel diaktifkan.
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.