---
title: "Vercel-এ web tier"
description: "সহযোগী worker-সহ Quire web tier Vercel-এ চালান।"
image: "https://docs.quirelms.com/og.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://docs.quirelms.com/bn/llms.txt
> Use this file to discover all available pages before exploring further.

# Vercel-এ web tier

<span id="the-web-tier-on-vercel"></span>

স্থাপত্যের বিবরণ `docs/architecture/23-ops.md`-এর section 5-এ। Vercel শুধু web tier চালায়। বাকি সব আপনার পরিচালিত companion host-এ চলে, এটি ঐচ্ছিক নয়।

## এই release-এর অবস্থা <!--quire:status-in-this-release-->

Configuration প্রস্তুত আছে (`apps/web/vercel.json`, `vercel` Nitro preset ও startup check)। Vercel-এর জন্য shared file storage (`QUIRE_STORAGE_DRIVER=s3` অথবা `azure`), function instance জুড়ে কাজ করে এমন realtime driver (`QUIRE_REALTIME_DRIVER=sse` অথবা `centrifugo`) এবং HTTP email provider দরকার। এগুলো না থাকলে web tier চালু হতে অস্বীকার করে এবং log-এ প্রতিটি অনুপস্থিত setting-এর নাম দেয়।

## উপাদান <!--quire:the-pieces-->

| উপাদান | কোথায় চলে |
| --- | --- |
| `web` | Vercel Functions, Bun runtime: page, REST, MCP, LTI, প্রাপ্ত webhook |
| `worker`, `scheduler`, `collab`, `content` | companion host: Fly, Railway, ECS অথবা `docker/compose.yaml`-সহ আপনার Docker host |
| Postgres | বাহ্যিক, transaction pooler-এর পেছনে: Neon, Supabase অথবা PgBouncer-সহ RDS |
| Files | S3 অথবা R2। স্থায়ী disk নেই |
| Background job | request-এর transaction-এর ভেতরে pg-boss-এ enqueue হয়, companion worker-এ চলে। Companion worker-এ `QUIRE_QUEUE_DRIVER=vercel` হলে হালকা job (ক্রমবিহীন notification ও webhook delivery) Vercel Queues (`VERCEL_QUEUE_REGION`, `VERCEL_QUEUE_TOKEN`) দিয়ে যায়, ফলে সেগুলোর জন্য pooled Postgres poll করা হয় না |
| পুনরাবৃত্ত কাজ | companion scheduler। Vercel Cron route নেই, কারণ function-এর ভেতরে কাজ করা cron timeout হয়ে যায় |
| Trace | আপনার collector-এ OpenTelemetry, `OTEL_EXPORTER_OTLP_ENDPOINT` |

## এই target-এ যা করা যায় না <!--quire:what-this-target-cannot-do-->

চালুর সময় web tier এগুলো পরীক্ষা করে এবং পরে প্রথম email পাঠাতে ব্যর্থ হওয়ার বদলে প্রতিটি সমস্যা উল্লেখ করে শুরু হতে অস্বীকার করে:

- **SMTP নেই।** Vercel outbound SMTP আটকায়। `QUIRE_EMAIL_PROVIDER_CONFIG`-এ HTTP provider দিন (Postmark, SES, Mailgun, SendGrid অথবা Resend)। `QUIRE_SMTP_URL` প্রত্যাখ্যাত হয়।
- **Local disk নেই।** `QUIRE_STORAGE_DRIVER=local` প্রত্যাখ্যাত হয়।
- **Invocation-এর মধ্যে shared memory নেই।** `QUIRE_REALTIME_DRIVER=inprocess` প্রত্যাখ্যাত হয়। Server-sent event function timeout পর্যন্ত চলে; client cursor দিয়ে আবার যুক্ত হয়, তাই event হারায় না, তবে presence পাওয়া যায় না।
- **নির্দিষ্ট tenant database সীমিত**—প্রায় আটটি পর্যন্ত, কারণ প্রত্যেকটি এমন environment-এ আরেকটি connection pool, যেখানে pool ভাগ করা যায় না।

## Deploy করা <!--quire:deploying-->

1. Repository থেকে Vercel project তৈরি করে **Root Directory**-তে `apps/web` দিন। `apps/web/vercel.json` install ও build command (`NITRO_PRESET=vercel`) নির্ধারণ করে এবং `/sw.js` cache ছাড়া পরিবেশন করে।
2. Environment variable নির্ধারণ করুন। `docker/.env.example` থেকে অন্তত: `QUIRE_DEPLOY_TARGET=vercel`, `QUIRE_APP_ORIGIN`, `QUIRE_CONTENT_ORIGIN`, `QUIRE_PLATFORM_DOMAINS`, `QUIRE_SECRET_KEY`, `QUIRE_MASTER_KEY`, `DATABASE_URL` (pooler-এর address), `QUIRE_REPORT_DATABASE_URL`, `QUIRE_AUDIT_DATABASE_URL`, `QUIRE_DATABASE_ID`, `QUIRE_EMAIL_PROVIDER_CONFIG`, `QUIRE_MAIL_FROM`, storage setting, এবং companion-এর collab service-এ নির্দেশ করা `QUIRE_COLLAB_URL` ও `QUIRE_COLLAB_SIGNING_KEY`। `QUIRE_REPORT_DATABASE_URL` `DATABASE_URL`-এ নাম দেওয়া physical database-এর জন্য। প্রতিটি অতিরিক্ত নিবন্ধিত database-এর জন্য web ও worker—দুই environment-এ তার নিজস্ব `quire_report` connection URL যোগ করুন, তারপর platform console-এ environment variable-এর নাম `env:NAME` আকারে নিবন্ধন করুন। database-এর report URL না থাকলে analytics কাজ করতে অস্বীকার করে।
3. Companion host-এ `docker/compose.yaml` চালান, `web` service বাদ দিয়ে এবং একই `docker/.env` ব্যবহার করে:
   ```sh
   docker compose -f docker/compose.yaml up -d migrate init worker scheduler collab content
   ```
   প্রতিটি Vercel deployment চালু করার আগে সেখানেই migration চলে।
4. Deploy করুন। Configuration প্রত্যাখ্যাত হলে function log শুরু হয় "The web tier did not start on vercel" দিয়ে এবং বদলাতে হবে এমন প্রতিটি setting তালিকাভুক্ত করে।

## Upgrade <!--quire:upgrading-->

আগে companion host থেকে migration চালান, তারপর নতুন Vercel deployment চালু করুন, এরপর companion worker-গুলো update করুন: ক্রমটি [upgrade.md](/bn/ops/upgrade/)-তে বর্ণিত। Vercel-এর instant rollback code rollback, এবং release-এর মধ্যে সবসময় নিরাপদ।

Source: https://docs.quirelms.com/bn/ops/vercel/index.mdx
