---
title: "U nivellu web nant'à Vercel"
description: "Eseguite u nivellu web di Quire nant'à Vercel cù un worker cumpagnu."
image: "https://docs.quirelms.com/og.png"
---

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

# U nivellu web nant'à Vercel

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

U disignu hè in a sezzione 5 di `docs/architecture/23-ops.md`. Vercel esegue solu u
nivellu web. Tuttu u restu funziona nant'à un host cumpagnu chì amministrate voi, è ùn hè micca
facultativu.

## Statu in sta versione <!--quire:status-in-this-release-->

A cunfigurazione hè pronta (`apps/web/vercel.json`, u preset Nitro `vercel`
è i cuntrolli à l'avviu). Vercel hà bisognu d'un almacenamentu di schedarii spartutu
(`QUIRE_STORAGE_DRIVER=s3` o `azure`), d'un driver in tempu reale chì funziona trà istanze
di funzione (`QUIRE_REALTIME_DRIVER=sse` o `centrifugo`) è d'un fornitore di posta HTTP. Senza elli, u nivellu web ricusa d'avvià è u so registru
nomina ogni paràmetru mancante.

## I cumpunenti <!--quire:the-pieces-->

| Cumpunente | Induve funziona |
| --- | --- |
| `web` | Funzioni Vercel, runtime Node: pagine, REST, MCP, LTI, webhooks ricevuti |
| `worker`, `scheduler`, `collab`, `content` | Un host cumpagnu: Fly, Railway, ECS, o u vostru host Docker cù `docker/compose.yaml` |
| Postgres | Esternu, daretu à un gestore di transazzioni: Neon, Supabase o RDS cù PgBouncer |
| Schedarii | S3 o R2. Ùn ci hè micca discu persistente |
| Travaglii in sfondu | Inseriti cù pg-boss in a transazzione di a dumanda, eseguiti da u worker cumpagnu. Cù `QUIRE_QUEUE_DRIVER=vercel` nant'à u worker cumpagnu, i travaglii ligeri (cunsigne è cunsegne webhook senza ordine) passanu per Vercel Queues (`VERCEL_QUEUE_REGION`, `VERCEL_QUEUE_TOKEN`), dunque Postgres cù pool ùn hè micca interrugatu per elli |
| Travaglii ricurrenti | U scheduler cumpagnu. Ùn ci hè micca una strada Vercel Cron, perchè un cron chì travaglia dentru una funzione scade |
| Tracciamentu | OpenTelemetry versu u vostru cullettore, `OTEL_EXPORTER_OTLP_ENDPOINT` |

## Ciò ch'ellu ùn pò fà stu target <!--quire:what-this-target-cannot-do-->

U nivellu web verifica sti paràmetri à l'avviu è ricusa di parte, indicendu ogni prublema,
invece d'aspittà u primu email chì ùn ghjunghje mai:

- **Nisun SMTP.** Vercel impedisce SMTP in uscita. Impustate `QUIRE_EMAIL_PROVIDER_CONFIG`
  à un fornitore HTTP (Postmark, SES, Mailgun, SendGrid o Resend).
  `QUIRE_SMTP_URL` hè ricusatu.
- **Nisun discu lucale.** `QUIRE_STORAGE_DRIVER=local` hè ricusatu.
- **Nisuna memoria spartuta trà invucazioni.** `QUIRE_REALTIME_DRIVER=inprocess`
  hè ricusatu. L'avvenimenti mandati da u servitore sò limitati à u timeout di a funzione; u
  cliente si ricunnessa cù un cursore, dunque nisun avvenimentu si perde, ma a presenza ùn hè
  dispunibule.
- **E basi di dati di tenant fissate** sò limitate à circa ottu, perchè ognuna hè
  un altru pool di cunnessione in un ambiente induve i pool ùn ponu esse spartuti.

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

1. Create un prughjettu Vercel da u repositoriu cù **Directory radica**
   `apps/web`. `apps/web/vercel.json` stabilisce i cumandi d'installazione è di custruzzione
   (`NITRO_PRESET=vercel`) è serve `/sw.js` senza cache.
2. Stabilite e variabili d'ambiente. Da `docker/.env.example`, almenu:
   `QUIRE_DEPLOY_TARGET=vercel`, `QUIRE_APP_ORIGIN`, `QUIRE_CONTENT_ORIGIN`,
   `QUIRE_PLATFORM_DOMAINS`, `QUIRE_SECRET_KEY`, `QUIRE_MASTER_KEY`,
   `DATABASE_URL` (l'indirizzu di u pooler), `QUIRE_REPORT_DATABASE_URL`,
   `QUIRE_AUDIT_DATABASE_URL`, `QUIRE_DATABASE_ID`,
   `QUIRE_EMAIL_PROVIDER_CONFIG`, `QUIRE_MAIL_FROM`, i paràmetri di almacenamentu,
   è `QUIRE_COLLAB_URL` è `QUIRE_COLLAB_SIGNING_KEY` chì puntanu à u serviziu collab
   di u cumpagnu.
   `QUIRE_REPORT_DATABASE_URL` appartene à a basa fisica indicata da
   `DATABASE_URL`. Per ogni basa di dati registrata in più, aghjunghjite u so propiu
   URL di cunnessione `quire_report` à l'ambienti web è worker, dopu
   registrate u nome di a so variabile d'ambiente cum'è `env:NAME` in a cunsola
   di a piattaforma. L'analitiche ricusanu d'apre s'ellu manca l'URL di rapportu di quella basa.
3. Nant'à l'host cumpagnu, eseguite `docker/compose.yaml` senza u serviziu `web`,
   cù u listessu `docker/.env`:
   ```sh
   docker compose -f docker/compose.yaml up -d migrate init worker scheduler collab content
   ```
   E migrazioni si facenu quì, prima di prumove ogni distribuzione Vercel.
4. Distribuite. S'è a cunfigurazione hè ricusata, u registru di a funzione principia cù «The web
   tier did not start on vercel» è elenca ogni paràmetru da cambià.

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

Migrà prima da l'host cumpagnu, dopu prumove a nova distribuzione Vercel, dopu aghjurnà i worker
cumpagni: l'ordine indicatu in [upgrade.md](/co/ops/upgrade/). Un ritornu istantaneu Vercel à a versione precedente hè un ritornu di codice è hè
sempre sicuru in a stessa versione.

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