---
title: "Weblaget på Vercel"
description: "Kør Quires weblag på Vercel med en tilhørende worker."
image: "https://docs.quirelms.com/og.png"
---

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

# Weblaget på Vercel

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

Designet beskrives i afsnit 5 i `docs/architecture/23-ops.md`. Vercel kører kun
weblaget. Alt andet kører på en tilhørende vært, som du driver, og det er
obligatorisk.

## Status i denne udgivelse <!--quire:status-in-this-release-->

Konfigurationen er på plads (`apps/web/vercel.json`, Nitro-forudindstillingen
`vercel` og opstartskontrollerne). Vercel kræver delt fillagring
(`QUIRE_STORAGE_DRIVER=s3` eller `azure`), en realtidsdriver, der fungerer på tværs af funktionsinstanser
(`QUIRE_REALTIME_DRIVER=sse` eller `centrifugo`), samt en HTTP-e-mailudbyder. Uden dette nægter weblaget at starte, og loggen
navngiver alle manglende indstillinger.

## Komponenterne <!--quire:the-pieces-->

| Komponent | Hvor den kører |
| --- | --- |
| `web` | Vercel Functions, Node-runtime: sider, REST, MCP, LTI og modtagelse af webhooks |
| `worker`, `scheduler`, `collab`, `content` | En tilhørende vært: Fly, Railway, ECS eller din egen Docker-vært med `docker/compose.yaml` |
| Postgres | Eksternt, bag en transaktionspooler: Neon, Supabase eller RDS med PgBouncer |
| Filer | S3 eller R2. Der findes ingen vedvarende disk |
| Baggrundsjob | Lægges i kø med pg-boss i forespørgslens transaktion og køres af den tilhørende worker. Hvis `QUIRE_QUEUE_DRIVER=vercel` er indstillet på den tilhørende worker, går lette job (uordnede notifikations- og webhookleverancer) gennem Vercel Queues (`VERCEL_QUEUE_REGION`, `VERCEL_QUEUE_TOKEN`), så den poolede Postgres ikke spørges for dem |
| Gentagne job | Den tilhørende scheduler. Der findes ingen Vercel Cron-rute, fordi et cronjob, der udfører arbejde i en funktion, får timeout |
| Sporingsdata | OpenTelemetry til din collector, `OTEL_EXPORTER_OTLP_ENDPOINT` |

## Hvad denne platform ikke kan <!--quire:what-this-target-cannot-do-->

Weblaget kontrollerer disse forhold ved opstart og nægter at starte, mens det navngiver alle problemer,
i stedet for først at fejle senere, når den første e-mail ikke bliver sendt:

- **Ingen SMTP.** Vercel blokerer udgående SMTP. Angiv en HTTP-udbyder i
  `QUIRE_EMAIL_PROVIDER_CONFIG` (Postmark, SES, Mailgun, SendGrid eller Resend).
  `QUIRE_SMTP_URL` afvises.
- **Ingen lokal disk.** `QUIRE_STORAGE_DRIVER=local` afvises.
- **Ingen delt hukommelse mellem kald.** `QUIRE_REALTIME_DRIVER=inprocess`
  afvises. Server-sent events er begrænset af funktions-timeout; klienten
  opretter igen forbindelse med en markør, så ingen hændelser går tabt, men tilstedeværelse
  er ikke tilgængelig.
- **Antallet af fastlåste lejerdatabaser er begrænset** til omkring otte, fordi hver database
  kræver endnu en forbindelsespulje i et miljø, hvor puljer ikke kan deles.

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

1. Opret et Vercel-projekt fra arkivet med **Rodmappe** sat til
   `apps/web`. `apps/web/vercel.json` angiver installations- og buildkommandoerne
   (`NITRO_PRESET=vercel`) og leverer `/sw.js` uden cache.
2. Angiv miljøvariablerne. Mindst følgende værdier fra `docker/.env.example` skal
   bruges: `QUIRE_DEPLOY_TARGET=vercel`, `QUIRE_APP_ORIGIN`, `QUIRE_CONTENT_ORIGIN`,
   `QUIRE_PLATFORM_DOMAINS`, `QUIRE_SECRET_KEY`, `QUIRE_MASTER_KEY`,
   `DATABASE_URL` (poolerens adresse), `QUIRE_REPORT_DATABASE_URL`,
   `QUIRE_AUDIT_DATABASE_URL`, `QUIRE_DATABASE_ID`,
   `QUIRE_EMAIL_PROVIDER_CONFIG`, `QUIRE_MAIL_FROM`, indstillingerne for fillagring
   samt `QUIRE_COLLAB_URL` og `QUIRE_COLLAB_SIGNING_KEY`, der peger på
   den tilhørende collab-tjeneste.
   `QUIRE_REPORT_DATABASE_URL` hører til den fysiske database, der er angivet i
   `DATABASE_URL`. For hver yderligere registreret database skal du tilføje dens egen
   `quire_report`-forbindelsesadresse til både web- og workermiljøet og derefter
   registrere dens miljøvariabelnavn som `env:NAME` i platformskonsollen. Analyse fejler lukket,
   hvis databasens rapportadresse mangler.
3. Kør `docker/compose.yaml` på den tilhørende vært uden tjenesten `web`,
   med samme `docker/.env`:
   ```sh
   docker compose -f docker/compose.yaml up -d migrate init worker scheduler collab content
   ```
   Migreringer køres dér, før hver Vercel-udrulning aktiveres.
4. Udrul. Hvis konfigurationen afvises, begynder funktionsloggen med "The web
   tier did not start on vercel" og viser hver indstilling, der skal ændres.

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

Kør først migreringer på den tilhørende vært, aktivér derefter den nye Vercel-
udrulning, og udrul til sidst de tilhørende workers efter rækkefølgen i
[opgraderingsvejledningen](/da/ops/upgrade/). En øjeblikkelig Vercel-tilbageførsel er en kode-
tilbageførsel og er altid sikker inden for en udgivelse.

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