---
title: "Уеб слоят във Vercel"
description: "Изпълнявайте уеб слоя Quire във Vercel с придружаващ worker."
image: "https://docs.quirelms.com/og.png"
---

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

# Уеб слоят във Vercel

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

Проектът е описан в раздел 5 на `docs/architecture/23-ops.md`. Vercel изпълнява само уеб слоя. Всичко останало работи на придружаващ хост, който управлявате, и той е задължителен.

## Състояние в тази версия <!--quire:status-in-this-release-->

Конфигурацията е подготвена (`apps/web/vercel.json`, `vercel` Nitro
preset и проверките при стартиране). Vercel изисква споделено файлово хранилище
(`QUIRE_STORAGE_DRIVER=s3` или `azure`), драйвер за реално време, който работи между екземплярите на функциите (`QUIRE_REALTIME_DRIVER=sse` или `centrifugo`), и HTTP доставчик на поща. Без тях уеб слоят отказва стартиране, а журналът посочва всяка липсваща настройка.

## Компоненти <!--quire:the-pieces-->

| Компонент | Къде работи |
| --- | --- |
| `web` | Vercel Functions, Bun runtime: страници, REST, MCP, LTI, получаване на уебкуки |
| `worker`, `scheduler`, `collab`, `content` | Придружаващ хост: Fly, Railway, ECS или собствен Docker хост с `docker/compose.yaml` |
| Postgres | Външна услуга зад пулър на транзакции: Neon, Supabase или RDS с PgBouncer |
| Файлове | S3 или R2. Постоянен диск няма |
| Фонови задачи | Добавят се чрез pg-boss в транзакцията на заявката и се изпълняват от придружаващия worker. Когато на него е настроено `QUIRE_QUEUE_DRIVER=vercel`, леките задачи (несортирани известия и доставки на уебкуки) се прехвърлят към Vercel Queues (`VERCEL_QUEUE_REGION`, `VERCEL_QUEUE_TOKEN`), така че пулът на Postgres да не се проверява за тях |
| Периодични задачи | Придружаващият scheduler. Няма Vercel Cron маршрут, защото задача, изпълнявана във функция, надхвърля времевото ограничение |
| Проследяване | OpenTelemetry към вашия колектор, `OTEL_EXPORTER_OTLP_ENDPOINT` |

## Възможности, които тази цел не поддържа <!--quire:what-this-target-cannot-do-->

Уеб слоят проверява настройките при стартиране и отказва, като изброява всички проблеми,
вместо да се провали по-късно при първия имейл, който не успее да се изпрати:

- **Няма SMTP.** Vercel блокира изходящ SMTP трафик. Задайте `QUIRE_EMAIL_PROVIDER_CONFIG`
  на HTTP доставчик (Postmark, SES, Mailgun, SendGrid или Resend).
  `QUIRE_SMTP_URL` се отхвърля.
- **Няма локален диск.** `QUIRE_STORAGE_DRIVER=local` се отхвърля.
- **Няма споделена памет между извикванията.** `QUIRE_REALTIME_DRIVER=inprocess`
  се отхвърля. Изпращането на събития чрез SSE е ограничено от времето на изпълнение на функцията; клиентът се свързва отново с курсор, така че събитие не се губи, но присъствието не е налично.
- **Ограничен е броят на фиксираните бази данни за организации** до около осем, защото всяка добавя нов пул от връзки в среда, където пуловете не могат да се споделят.

## Разгръщане <!--quire:deploying-->

1. Създайте проект във Vercel от хранилището с **Основна директория**
   `apps/web`. `apps/web/vercel.json` задава командите за инсталиране и компилация
   (`NITRO_PRESET=vercel`) и обслужва `/sw.js` без кеширане.
2. Задайте променливите на средата. Използвайте поне следните стойности от `docker/.env.example`:
   `QUIRE_DEPLOY_TARGET=vercel`, `QUIRE_APP_ORIGIN`, `QUIRE_CONTENT_ORIGIN`,
   `QUIRE_PLATFORM_DOMAINS`, `QUIRE_SECRET_KEY`, `QUIRE_MASTER_KEY`,
   `DATABASE_URL` (адресът на пулъра), `QUIRE_REPORT_DATABASE_URL`,
   `QUIRE_AUDIT_DATABASE_URL`, `QUIRE_DATABASE_ID`,
   `QUIRE_EMAIL_PROVIDER_CONFIG`, `QUIRE_MAIL_FROM`, настройките за хранилището,
   както и `QUIRE_COLLAB_URL` и `QUIRE_COLLAB_SIGNING_KEY`, насочени към придружаващата услуга collab.
   `QUIRE_REPORT_DATABASE_URL` трябва да съответства на физическата база, посочена в
   `DATABASE_URL`. За всяка допълнително регистрирана база добавете неин собствен
   `quire_report` URL за връзка в средите на web и worker, след което регистрирайте името на променливата като `env:NAME` в конзолата на платформата. Аналитиката отказва работа, ако липсва URL за отчетната база.
3. На придружаващия хост стартирайте `docker/compose.yaml` без услугата `web`
   и със същия `docker/.env`:
   ```sh
   docker compose -f docker/compose.yaml up -d migrate init worker scheduler collab content
   ```
   Миграциите се изпълняват там преди активиране на всяко Vercel разгръщане.
4. Разгърнете. При отказана конфигурация журналът на функцията започва с „The web
   tier did not start on vercel“ и изброява настройките за корекция.

## Надстройване <!--quire:upgrading-->

Първо мигрирайте от придружаващия хост, после активирайте новото Vercel
разгръщане и накрая обновете worker-ите на придружаващия хост: редът е описан в
[upgrade.md](/bg/ops/upgrade/). Незабавното връщане назад във Vercel е връщане на кода и винаги е безопасно в рамките на една версия.

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