---
title: "A capa web en Vercel"
description: "Executa a capa web de Quire en Vercel cun traballador complementario."
image: "https://docs.quirelms.com/og.png"
---

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

# A capa web en Vercel

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

O deseño descríbese na sección 5 de `docs/architecture/23-ops.md`. Vercel executa só a capa web. Todo o demais execútase nun host complementario que xestionas ti, e é obrigatorio.

## Estado nesta versión <!--quire:status-in-this-release-->

A configuración xa está preparada (`apps/web/vercel.json`, o preaxuste Nitro `vercel` e as comprobacións de inicio). Vercel precisa almacenamento de ficheiros compartido (`QUIRE_STORAGE_DRIVER=s3` ou `azure`), un controlador de tempo real que funcione en varias instancias de funcións (`QUIRE_REALTIME_DRIVER=sse` ou `centrifugo`) e un provedor HTTP de correo. Se faltan, a capa web non se inicia e o rexistro indica cada axuste pendente.

## Compoñentes <!--quire:the-pieces-->

| Compoñente | Onde se executa |
| --- | --- |
| `web` | Vercel Functions, entorno de execución Node: páxinas, REST, MCP, LTI e webhooks recibidos |
| `worker`, `scheduler`, `collab`, `content` | Un host complementario: Fly, Railway, ECS ou o teu propio host Docker con `docker/compose.yaml` |
| Postgres | Externo, detrás dun agrupador de conexións de transaccións: Neon, Supabase ou RDS con PgBouncer |
| Ficheiros | S3 ou R2. Non hai disco persistente |
| Tarefas en segundo plano | Engádense con pg-boss dentro da transacción da petición e execútaas o traballador complementario. Se o traballador complementario utiliza `QUIRE_QUEUE_DRIVER=vercel`, as tarefas lixeiras (notificacións sen orde e entregas de webhooks) pasan por Vercel Queues (`VERCEL_QUEUE_REGION`, `VERCEL_QUEUE_TOKEN`) para que non se consulten esas tarefas en Postgres agrupado |
| Tarefas recorrentes | Planificador complementario. Non hai ningunha ruta Vercel Cron porque unha tarefa executada nunha función supera o seu tempo límite |
| Trazas | OpenTelemetry envíaas ao teu colector, `OTEL_EXPORTER_OTLP_ENDPOINT` |

## Limitacións deste destino <!--quire:what-this-target-cannot-do-->

A capa web compróbaas ao iniciarse e rexeita a configuración, indicando todos os problemas en vez de fallar máis tarde cando non se envíe un correo:

- **Non admite SMTP.** Vercel bloquea o tráfico SMTP saínte. Establece `QUIRE_EMAIL_PROVIDER_CONFIG` cun provedor HTTP (Postmark, SES, Mailgun, SendGrid ou Resend). Rexeitarase `QUIRE_SMTP_URL`.
- **Non admite disco local.** Rexeitarase `QUIRE_STORAGE_DRIVER=local`.
- **Non comparte memoria entre invocacións.** Rexeitarase `QUIRE_REALTIME_DRIVER=inprocess`. Os eventos enviados polo servidor limitanse ao tempo límite da función; o cliente reconéctase cun cursor, polo que non se perde ningún evento, pero a información de presenza non está dispoñible.
- **As bases de datos de inquilinos vinculados están limitadas** a aproximadamente oito, porque cada unha require outro grupo de conexións nun entorno que non permite compartir os grupos.

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

1. Crea un proxecto de Vercel desde o repositorio e establece `apps/web` como **Directorio raíz**. `apps/web/vercel.json` configura os comandos de instalación e compilación (`NITRO_PRESET=vercel`) e serve `/sw.js` sen caché.
2. Establece as variables de entorno. A partir de `docker/.env.example`, necesitas polo menos: `QUIRE_DEPLOY_TARGET=vercel`, `QUIRE_APP_ORIGIN`, `QUIRE_CONTENT_ORIGIN`, `QUIRE_PLATFORM_DOMAINS`, `QUIRE_SECRET_KEY`, `QUIRE_MASTER_KEY`, `DATABASE_URL` (enderezo do agrupador), `QUIRE_REPORT_DATABASE_URL`, `QUIRE_AUDIT_DATABASE_URL`, `QUIRE_DATABASE_ID`, `QUIRE_EMAIL_PROVIDER_CONFIG`, `QUIRE_MAIL_FROM`, os axustes de almacenamento e `QUIRE_COLLAB_URL` e `QUIRE_COLLAB_SIGNING_KEY`, que deben apuntar ao servizo collab do host complementario.
   `QUIRE_REPORT_DATABASE_URL` pertence á base de datos física indicada por
   `DATABASE_URL`. Para cada base adicional rexistrada, engade o seu propio
   URL de conexión `quire_report` aos entornos web e do traballador e, a
   continuación, rexistra o nome da variable de entorno como `env:NAME` na
   consola da plataforma. Se falta o URL de informes desa base, a analítica
   falla de forma segura.
3. No host complementario, executa `docker/compose.yaml` sen o servizo `web` e co mesmo `docker/.env`:
   ```sh
   docker compose -f docker/compose.yaml up -d migrate init worker scheduler collab content
   ```
   As migracións execútanse alí antes de activar cada despregamento de Vercel.
4. Despregue. Se a configuración é rexeitada, o rexistro da función comeza por «The web tier did not start on vercel» e enumera todos os axustes que hai que cambiar.

## Actualizacións <!--quire:upgrading-->

Executa primeiro as migracións no host complementario; despois, activa o novo despregamento de Vercel e, por último, actualiza gradualmente os traballadores complementarios, na orde indicada en [upgrade.md](/gl/ops/upgrade/). Unha reversión instantánea de Vercel reverte o código e sempre é segura dentro dunha versión.

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