---
title: "Die webvlak op Vercel"
description: "Bedryf Quire se webvlak op Vercel met ’n meegaande werker."
image: "https://docs.quirelms.com/og.png"
---

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

# Die webvlak op Vercel

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

Die ontwerp staan in afdeling 5 van `docs/architecture/23-ops.md`. Vercel bedryf net die webvlak. Alles anders loop op ’n meegaande gasheer wat jy bedryf; dit is noodsaaklik.

## Status in hierdie vrystelling <!--quire:status-in-this-release-->

Die konfigurasie is in plek (`apps/web/vercel.json`, die `vercel` Nitro-voorinstelling en opstartkontroles). Vercel benodig gedeelde lêerberging (`QUIRE_STORAGE_DRIVER=s3` of `azure`), ’n intydse aandrywer wat oor funksie-instansies werk (`QUIRE_REALTIME_DRIVER=sse` of `centrifugo`) en ’n HTTP-e-posverskaffer. Sonder hulle weier die webvlak om te begin en noem sy log elke ontbrekende instelling.

## Die dele <!--quire:the-pieces-->

| Deel | Waar dit loop |
| --- | --- |
| `web` | Vercel Functions, Node-looptyd: bladsye, REST, MCP, LTI, ontvangde webhooks |
| `worker`, `scheduler`, `collab`, `content` | ’n Meegaande gasheer: Fly, Railway, ECS of jou eie Docker-gasheer met `docker/compose.yaml` |
| Postgres | Ekstern, agter ’n transaksiepoeler: Neon, Supabase of RDS met PgBouncer |
| Lêers | S3 of R2. Daar is geen aanhoudende skyf nie |
| Agtergrondtake | Word met pg-boss binne die versoek se transaksie in die tou geplaas en deur die meegaande werker uitgevoer. Met `QUIRE_QUEUE_DRIVER=vercel` op die meegaande werker gaan die ligte take (ongeordende kennisgewings en webhook-aflewerings) deur Vercel Queues (`VERCEL_QUEUE_REGION`, `VERCEL_QUEUE_TOKEN`), sodat gepoelde Postgres nie daarvoor gepols word nie |
| Herhalende take | Die meegaande skeduleerder. Daar is geen Vercel Cron-roete nie, want ’n cron wat werk binne ’n funksie doen, loop uit op ’n tydsbeperking |
| Nasporing | OpenTelemetry na jou versamelaar, `OTEL_EXPORTER_OTLP_ENDPOINT` |

## Wat hierdie teiken nie kan doen nie <!--quire:what-this-target-cannot-do-->

Die webvlak kontroleer dit wanneer dit begin en weier met elke probleem benoem, eerder as om later te misluk wanneer die eerste e-pos nie gestuur word nie:

- **Geen SMTP nie.** Vercel blokkeer uitgaande SMTP. Stel `QUIRE_EMAIL_PROVIDER_CONFIG` op ’n HTTP-verskaffer (Postmark, SES, Mailgun, SendGrid of Resend). `QUIRE_SMTP_URL` word geweier.
- **Geen plaaslike skyf nie.** `QUIRE_STORAGE_DRIVER=local` word geweier.
- **Geen gedeelde geheue tussen aanroepe nie.** `QUIRE_REALTIME_DRIVER=inprocess` word geweier. Gebeurtenisse wat deur die bediener gestuur word, word deur die funksietydsbeperking begrens; die kliënt koppel weer met ’n wyser, dus gaan geen gebeurtenis verlore nie, maar teenwoordigheid is onbeskikbaar.
- **Gepinde tenant-databasisse is beperk** tot ongeveer agt, want elkeen is nog ’n verbindingspoel in ’n omgewing wat poele nie kan deel nie.

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

1. Skep ’n Vercel-projek vanaf die bewaarplek met **Root Directory** `apps/web`. `apps/web/vercel.json` stel die installasie- en bouopdragte (`NITRO_PRESET=vercel`) in en bedien `/sw.js` sonder kasberging.
2. Stel die omgewingsveranderlikes in. Ten minste die volgende uit `docker/.env.example`: `QUIRE_DEPLOY_TARGET=vercel`, `QUIRE_APP_ORIGIN`, `QUIRE_CONTENT_ORIGIN`, `QUIRE_PLATFORM_DOMAINS`, `QUIRE_SECRET_KEY`, `QUIRE_MASTER_KEY`, `DATABASE_URL` (die poeler se adres), `QUIRE_REPORT_DATABASE_URL`, `QUIRE_AUDIT_DATABASE_URL`, `QUIRE_DATABASE_ID`, `QUIRE_EMAIL_PROVIDER_CONFIG`, `QUIRE_MAIL_FROM`, berginginstellings en `QUIRE_COLLAB_URL` plus `QUIRE_COLLAB_SIGNING_KEY` wat na die meegaande collab-diens wys. `QUIRE_REPORT_DATABASE_URL` behoort aan die fisiese databasis wat deur `DATABASE_URL` benoem word. Vir elke bykomende geregistreerde databasis, voeg sy eie `quire_report`-verbinding-URL by die web- en werkeromgewings, en registreer dan sy omgewingsveranderlikenaam as `env:NAME` in die platformkonsole. Analise faal gesluit as daardie databasis se verslag-URL ontbreek.
3. Begin `docker/compose.yaml` op die meegaande gasheer sonder die `web`-diens, met dieselfde `docker/.env`:
   ```sh
   docker compose -f docker/compose.yaml up -d migrate init worker scheduler collab content
   ```
   Migrasies loop daar voordat elke Vercel-ontplooiing bevorder word.
4. Ontplooi. By ’n geweierde konfigurasie begin die funksielog met "The web tier did not start on vercel" en lys elke instelling om te verander.

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

Migreer eers vanaf die meegaande gasheer, bevorder dan die nuwe Vercel-ontplooiing en rol daarna die meegaande werkers oor: die volgorde staan in [upgrade.md](/af/ops/upgrade/). ’n Onmiddellike Vercel-terugdraai is ’n kode-terugdraai en is altyd veilig binne ’n vrystelling.

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