---
title: "Ο web tier στο Vercel"
description: "Εκτελέστε τον web tier του Quire στο Vercel με συνοδευτικό worker."
image: "https://docs.quirelms.com/og.png"
---

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

# Ο web tier στο Vercel

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

Το σχέδιο περιγράφεται στην ενότητα 5 του `docs/architecture/23-ops.md`. Το Vercel εκτελεί μόνο τον web tier. Όλα τα υπόλοιπα εκτελούνται σε συνοδευτικό host που διαχειρίζεστε εσείς, και είναι απαραίτητο.

## Κατάσταση σε αυτή την έκδοση <!--quire:status-in-this-release-->

Η διαμόρφωση είναι έτοιμη (`apps/web/vercel.json`, το preset Nitro `vercel` και οι έλεγχοι εκκίνησης). Το Vercel χρειάζεται κοινόχρηστο αποθηκευτικό χώρο αρχείων (`QUIRE_STORAGE_DRIVER=s3` ή `azure`), πρόγραμμα οδήγησης realtime που λειτουργεί σε πολλαπλές παρουσίες συναρτήσεων (`QUIRE_REALTIME_DRIVER=sse` ή `centrifugo`) και πάροχο email μέσω HTTP. Χωρίς αυτά, ο web tier αρνείται να ξεκινήσει και το αρχείο καταγραφής ονομάζει κάθε ρύθμιση που λείπει.

## Τα επιμέρους μέρη <!--quire:the-pieces-->

| Μέρος | Πού εκτελείται |
| --- | --- |
| `web` | Vercel Functions, περιβάλλον εκτέλεσης Node: σελίδες, REST, MCP, LTI, εισερχόμενα webhooks |
| `worker`, `scheduler`, `collab`, `content` | Συνοδευτικό host: Fly, Railway, ECS ή δικός σας Docker host με `docker/compose.yaml` |
| Postgres | Εξωτερικά, πίσω από pooler συναλλαγών: Neon, Supabase ή RDS με PgBouncer |
| Αρχεία | S3 ή R2. Δεν υπάρχει μόνιμος δίσκος |
| Εργασίες παρασκηνίου | Μπαίνουν σε ουρά με pg-boss μέσα στη συναλλαγή του αιτήματος και εκτελούνται από τον συνοδευτικό worker. Με `QUIRE_QUEUE_DRIVER=vercel` στον συνοδευτικό worker, οι απλές εργασίες (μη ταξινομημένες παραδόσεις ειδοποιήσεων και webhooks) περνούν από τα Vercel Queues (`VERCEL_QUEUE_REGION`, `VERCEL_QUEUE_TOKEN`), ώστε να μην γίνεται polling της Postgres με pool για αυτές |
| Επαναλαμβανόμενες εργασίες | Ο συνοδευτικός scheduler. Δεν υπάρχει διαδρομή Vercel Cron, επειδή μια εργασία cron που εκτελεί δουλειά μέσα σε συνάρτηση υπερβαίνει το χρονικό όριο |
| Tracing | OpenTelemetry προς τον collector σας, `OTEL_EXPORTER_OTLP_ENDPOINT` |

## Τι δεν μπορεί να κάνει αυτός ο προορισμός <!--quire:what-this-target-cannot-do-->

Ο web tier ελέγχει τα παρακάτω κατά την εκκίνηση και αρνείται να συνεχίσει, κατονομάζοντας όλα τα προβλήματα, αντί να αποτύχει αργότερα όταν δεν σταλεί το πρώτο email:

- **Δεν υποστηρίζεται SMTP.** Το Vercel αποκλείει εξερχόμενο SMTP. Ορίστε το `QUIRE_EMAIL_PROVIDER_CONFIG` σε πάροχο HTTP (Postmark, SES, Mailgun, SendGrid ή Resend). Το `QUIRE_SMTP_URL` απορρίπτεται.
- **Δεν υπάρχει τοπικός δίσκος.** Το `QUIRE_STORAGE_DRIVER=local` απορρίπτεται.
- **Δεν υπάρχει κοινόχρηστη μνήμη μεταξύ κλήσεων.** Το `QUIRE_REALTIME_DRIVER=inprocess` απορρίπτεται. Τα συμβάντα που αποστέλλονται από τον διακομιστή περιορίζονται στο χρονικό όριο της συνάρτησης· ο πελάτης συνδέεται ξανά με δρομέα, οπότε δεν χάνεται συμβάν, αλλά η παρουσία δεν είναι διαθέσιμη.
- **Οι βάσεις δεδομένων με δεσμευμένους μισθωτές** περιορίζονται σε περίπου οκτώ, καθώς καθεμία απαιτεί πρόσθετη ομάδα συνδέσεων σε περιβάλλον που δεν μπορεί να τις μοιράζεται.

## Ανάπτυξη <!--quire:deploying-->

1. Δημιουργήστε έργο Vercel από το αποθετήριο με **Root Directory** το `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` (διεύθυνση του pooler), `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 του συνοδευτικού host.
   Το `QUIRE_REPORT_DATABASE_URL` αφορά τη φυσική βάση δεδομένων που κατονομάζει το `DATABASE_URL`. Για κάθε επιπλέον καταχωρισμένη βάση, προσθέστε τη δική της διεύθυνση σύνδεσης `quire_report` και στο περιβάλλον του web και του worker· έπειτα καταχωρίστε το όνομα της μεταβλητής περιβάλλοντος ως `env:NAME` στην κονσόλα της πλατφόρμας. Τα Analytics αποτυγχάνουν με ασφαλή τρόπο αν λείπει η διεύθυνση αναφορών αυτής της βάσης.
3. Στον συνοδευτικό host, εκτελέστε το `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-->

Εκτελέστε πρώτα τις μεταναστεύσεις από τον συνοδευτικό host, έπειτα προωθήστε τη νέα ανάπτυξη Vercel και τέλος ανανεώστε τους workers του συνοδευτικού host: αυτή είναι η σειρά στο [upgrade.md](/el/ops/upgrade/). Η άμεση επαναφορά Vercel επαναφέρει τον κώδικα και είναι πάντα ασφαλής μέσα σε μια έκδοση.

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