---
title: "De Web-Tier op Vercel"
description: "Féiert de Quire-Web-Tier op Vercel mat engem begleedenden Worker."
image: "https://docs.quirelms.com/og.png"
---

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

# De Web-Tier op Vercel

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

De Konzept ass `docs/architecture/23-ops.md` Kapitel 5. Vercel féiert nemmen de Web-Tier. Alles aneres leeft op engem Begleedserver, deen Dir bedriwst, an en ass net optional.

## Status an dëser Verëffentlechung <!--quire:status-in-this-release-->

D'Konfiguratioun steet (`apps/web/vercel.json`, de `vercel` Nitro-Preset an d'Kontrollen beim Start). Vercel braucht gedeelt Späicherplatz fir Fichieren (`QUIRE_STORAGE_DRIVER=s3` oder `azure`), en Realtime-Driver deen iwwer Funktiounsinstanzen hinne funktionéiert (`QUIRE_REALTIME_DRIVER=sse` oder `centrifugo`) an en HTTP-E-Mail-Ubidder. ouni se refuséiert de Web-Tier ze starten an seng Log nennt all fehlend Astellung.

## De Stéck <!--quire:the-pieces-->

| Stéck | Wou en leeft |
| --- | --- |
| `web` | Vercel Functions, Node-Runtime: Säiten, REST, MCP, LTI, kritt Webhooks |
| `worker`, `scheduler`, `collab`, `content` | En Begleedserver: Fly, Railway, ECS, oder Äre eegenen Docker-Server mat `docker/compose.yaml` |
| Postgres | Extern, hanner engem Transaktiounspooler: Neon, Supabase, oder RDS mat PgBouncer |
| Fichieren | S3 oder R2. Et gëtt kee permanenten Disk |
| Hannergrondjoben | Mat pg-boss bannendrem Transaktioun vum Demande an d'Queue geluecht, vum Begleed-Worker ausgefouert. Mat `QUIRE_QUEUE_DRIVER=vercel` op dem Begleed-Worker ginn déi liicht Joben (net sortéiert Noriichten- a Webhooks-Liwwerungen) iwwer Vercel Queues (`VERCEL_QUEUE_REGION`, `VERCEL_QUEUE_TOKEN`), sou datt de gepoolte Postgres net dofir ofgeruff gëtt |
| Widderhuelend Joben | De Begleed-Scheduler. Et gëtt keng Vercel-Cron-Route, well e Cron, deen Aarbecht bannendrem enger Funktioun mécht, Timeout kritt |
| Tracing | OpenTelemetry op Äre Sammler, `OTEL_EXPORTER_OTLP_ENDPOINT` |

## Wat dëst Deploy-Ziel net ka maachen <!--quire:what-this-target-cannot-do-->

De Web-Tier kontrolléiert dëst beim Start a refuséiert et, mat all Problem, amplaz méi spéit bei der éischter E-Mail, déi ni geschéckt gëtt, ze feelen:

- **Kee SMTP.** Vercel späiert SMTP eraus. Setzt `QUIRE_EMAIL_PROVIDER_CONFIG`
  op en HTTP-Ubidder (Postmark, SES, Mailgun, SendGrid oder Resend).
  `QUIRE_SMTP_URL` gëtt refuséiert.
- **Kee lokalen Disk.** `QUIRE_STORAGE_DRIVER=local` gëtt refuséiert.
- **Keng gedeelt Gedächtnis tëscht Uriff.** `QUIRE_REALTIME_DRIVER=inprocess`
  gëtt refuséiert. Server-sent events sinn op den Timeout vun der Funktioun
  gekappt; de Client verbënnt sech mat engem Cursor erëm, sou datt keen
  Evenement verluer geet, mä Präsenz ass net verfügbar.
- **Festgeluechte Tenant-Datebanken sinn limitéiert** op ronn acht, well all
  eng aner Verbindingspool an enger Ëmwelt ass, déi keng Pools deelen kann.

## Deploys <!--quire:deploying-->

1. Erstellt e Vercel-Projet aus dem Repository mat **Root Directory**
   `apps/web`. `apps/web/vercel.json` setzt d'Installatiouns- a
   Build-Kommandoen (`NITRO_PRESET=vercel`) a servéiert `/sw.js` ouni Cache.
2. Setzt d'Ëmweltvariablen. Vue `docker/.env.example` op d'mannst:
   `QUIRE_DEPLOY_TARGET=vercel`, `QUIRE_APP_ORIGIN`, `QUIRE_CONTENT_ORIGIN`,
   `QUIRE_PLATFORM_DOMAINS`, `QUIRE_SECRET_KEY`, `QUIRE_MASTER_KEY`,
   `DATABASE_URL` (d'Adress vum Pooler), `QUIRE_REPORT_DATABASE_URL`,
   `QUIRE_AUDIT_DATABASE_URL`, `QUIRE_DATABASE_ID`,
   `QUIRE_EMAIL_PROVIDER_CONFIG`, `QUIRE_MAIL_FROM`, d'Späicherestellungen,
   an `QUIRE_COLLAB_URL` an `QUIRE_COLLAB_SIGNING_KEY`, déi op de
   collab-Service vum Begleeder weisen.
   `QUIRE_REPORT_DATABASE_URL` gehéiert zu der physikalescher Datebank, deen
   `DATABASE_URL` nennt. Fir all zousätzlech registréiert Datebank füügt se
   hir eegen `quire_report`-Verbindungs-URL un béid Web- a
   Worker-Ëmweten derbäi, a registréiert dunn hiren Ëmweltvariablennumm als
   `env:NAME` an der Konsol vun der Plangform. Analytics geet zou, wann d'Report-URL
   vun där Datebank feelt.
3. Op dem Begleedserver féiert `docker/compose.yaml` ouni dem `web`-Service
   aus, mam selwechten `docker/.env`:
   ```sh
   docker compose -f docker/compose.yaml up -d migrate init worker scheduler collab content
   ```
   Migratioune laufen do, ier en neien Vercel-Deploys an d'Produktioun bruecht gëtt.
4. Deployéiert. Bei enger refuséierter Konfiguratioun fänkt de
   Funktiounslog mat "The web tier did not start on vercel" un a list all
   Astellungen, déi geännert ginn.

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

Migréiert éischte vum Begleedserver, bréngt dunn den neien Vercel-Deploys an d'Produktioun an dunn féiert d'Worker vum Begleeder nei aus: d'Reienfolleg an [upgrade.md](/lb/ops/upgrade/). En instant rollback bei Vercel ass e Code-Rollback a bannendrem enger Verëffentlechung ëmmer sécher.

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