---
title: "Web-sloj na Vercelu"
description: "Pokrenite web-sloj Quirea na Vercelu uz prateći radnik."
image: "https://docs.quirelms.com/og.png"
---

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

# Web-sloj na Vercelu

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

Dizajn je opisan u odjeljku 5 dokumenta `docs/architecture/23-ops.md`.
Vercel pokreće samo web-sloj. Sve ostalo radi na pratećem poslužitelju kojim
vi upravljate; on nije neobavezan.

## Stanje u ovom izdanju <!--quire:status-in-this-release-->

Konfiguracija je spremna (`apps/web/vercel.json`, unaprijed postavljena
vrijednost Nitro `vercel` i provjere pri pokretanju). Vercelu je potrebna
zajednička pohrana datoteka (`QUIRE_STORAGE_DRIVER=s3` ili `azure`), upravljački
program za stvarno vrijeme koji radi na više primjeraka funkcija
(`QUIRE_REALTIME_DRIVER=sse` ili `centrifugo`) i HTTP pružatelj e-pošte. Bez
tih postavki web-sloj odbija pokretanje, a zapis navodi svaku koja nedostaje.

## Sastavni dijelovi <!--quire:the-pieces-->

| Dio | Mjesto izvođenja |
| --- | --- |
| `web` | Vercel Functions, okruženje Node: stranice, REST, MCP, LTI, primljeni web-dojavnici |
| `worker`, `scheduler`, `collab`, `content` | Prateći poslužitelj: Fly, Railway, ECS ili vlastiti Docker poslužitelj s `docker/compose.yaml` |
| Postgres | Vanjska baza iza posrednika transakcija: Neon, Supabase ili RDS s PgBouncerom |
| Datoteke | S3 ili R2. Trajni disk nije dostupan |
| Pozadinski poslovi | Stavljaju se u red pg-boss unutar transakcije zahtjeva, a izvršava ih prateći radnik. Kad se na pratećem radniku postavi `QUIRE_QUEUE_DRIVER=vercel`, jednostavni poslovi (neporedana isporuka obavijesti i web-dojavnika) prolaze kroz Vercel Queues (`VERCEL_QUEUE_REGION`, `VERCEL_QUEUE_TOKEN`), pa se Postgres sa združenom vezom ne provjerava radi njih |
| Ponavljajući poslovi | Prateći planer. Nema Vercelove rute Cron jer bi cron koji izvršava posao u funkciji prekoračio vremensko ograničenje |
| Praćenje | OpenTelemetry prema vašem sakupljaču na `OTEL_EXPORTER_OTLP_ENDPOINT` |

## Što ovo odredište ne može <!--quire:what-this-target-cannot-do-->

Web-sloj provjerava sljedeće pri pokretanju i odbija rad uz navođenje svakog
problema, umjesto da kasnije zakaže tek kad se prva poruka e-pošte ne pošalje:

- **Nema SMTP-a.** Vercel blokira odlazni SMTP. Postavite
  `QUIRE_EMAIL_PROVIDER_CONFIG` na HTTP pružatelja (Postmark, SES, Mailgun,
  SendGrid ili Resend). `QUIRE_SMTP_URL` se odbija.
- **Nema lokalnog diska.** `QUIRE_STORAGE_DRIVER=local` se odbija.
- **Nema zajedničke memorije između poziva.** `QUIRE_REALTIME_DRIVER=inprocess`
  se odbija. Broj događaja putem poslužiteljskih poslanih događaja ograničen
  je vremenskim ograničenjem funkcije. Klijent se ponovno povezuje pomoću
  pokazivača, pa se nijedan događaj ne gubi, ali prisutnost nije dostupna.
- **Broj baza podataka prikvačenih klijenata ograničen je** na približno osam,
  jer je svaka dodatni skup veza u okruženju koje ih ne može zajednički koristiti.

## Uvođenje <!--quire:deploying-->

1. Izradite projekt Vercel iz spremišta s vrijednošću **Root Directory**
   `apps/web`. `apps/web/vercel.json` postavlja naredbe instalacije i izgradnje
   (`NITRO_PRESET=vercel`) te poslužuje `/sw.js` bez predmemoriranja.
2. Postavite varijable okruženja. Iz datoteke `docker/.env.example` postavite
   najmanje: `QUIRE_DEPLOY_TARGET=vercel`, `QUIRE_APP_ORIGIN`,
   `QUIRE_CONTENT_ORIGIN`, `QUIRE_PLATFORM_DOMAINS`, `QUIRE_SECRET_KEY`,
   `QUIRE_MASTER_KEY`, `DATABASE_URL` (adresa posrednika),
   `QUIRE_REPORT_DATABASE_URL`, `QUIRE_AUDIT_DATABASE_URL`,
   `QUIRE_DATABASE_ID`, `QUIRE_EMAIL_PROVIDER_CONFIG`, `QUIRE_MAIL_FROM`,
   postavke pohrane te `QUIRE_COLLAB_URL` i `QUIRE_COLLAB_SIGNING_KEY` koji
   pokazuju na uslugu collab pratećeg poslužitelja.
   `QUIRE_REPORT_DATABASE_URL` pripada fizičkoj bazi navedenoj u
   `DATABASE_URL`. Za svaku dodatnu registriranu bazu dodajte vlastiti URL
   veze `quire_report` u okruženja web-sloja i radnika, a zatim u konzoli
   platforme registrirajte naziv varijable kao `env:NAME`. Analitika se
   isključuje uz pogrešku ako nedostaje URL izvješća te baze.
3. Na pratećem poslužitelju pokrenite `docker/compose.yaml` bez usluge `web` i
   uz isti `docker/.env`:
   ```sh
   docker compose -f docker/compose.yaml up -d migrate init worker scheduler collab content
   ```
   Migracije se ondje pokreću prije aktivacije svakog uvođenja na Vercel.
4. Uvedite aplikaciju. Ako se konfiguracija odbije, zapis funkcije počinje
   porukom „The web tier did not start on vercel” i navodi svaku postavku koju
   treba promijeniti.

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

Najprije migrirajte s pratećeg poslužitelja, zatim aktivirajte novo uvođenje na
Vercelu, pa postupno uvedite radnike pratećeg poslužitelja: redoslijed je
opisan u [upgrade.md](/hr/ops/upgrade/). Trenutno vraćanje na prethodnu verziju u
Vercelu vraća samo kod i uvijek je sigurno unutar jednog izdanja.

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