---
title: "ស្រទាប់ web លើ Vercel"
description: "ដំណើរការស្រទាប់ web របស់ Quire លើ Vercel ជាមួយ worker ជួយ។"
image: "https://docs.quirelms.com/og.png"
---

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

# ស្រទាប់ web លើ Vercel

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

រចនាសម្ព័ន្ធស្ថិតនៅ `docs/architecture/23-ops.md` ផ្នែក 5។ Vercel ដំណើរការស្រទាប់ web ប៉ុណ្ណោះ។ អ្វីផ្សេងទាំងអស់ដំណើរការលើម៉ាស៊ីនជួយដែលអ្នកដំណើរការ ហើយវាមិនមែនជាជម្រើសទេ។

## សភាពក្នុងកំណែនេះ <!--quire:status-in-this-release-->

ការរៀបចំនៅកន្លែង (`apps/web/vercel.json` preset `vercel` របស់ Nitro និងការពិនិត្យការចាប់ផ្តើម)។ Vercel ត្រូវការការផ្ទុកឯកសារចែករំលែក (`QUIRE_STORAGE_DRIVER=s3` ឬ `azure`) អ្នកបញ្ជូនដែលដំណើរការឆ្លងកាត់ function instance (`QUIRE_REALTIME_DRIVER=sse` ឬ `centrifugo`) និងអ្នកផ្តល់អ៊ីមែល HTTP។ គ្មានពួកគេ ស្រទាប់ web បដិសេធការចាប់ផ្តើម ហើយកំណត់ត្រារបស់វាដាក់ឈ្មោះការកំណត់ដែលខ្វះនីមួយៗ។

## ផ្នែកទាំងនេះ <!--quire:the-pieces-->

| ផ្នែក | កន្លែងដែលវាដំណើរការ |
| --- | --- |
| `web` | Vercel Functions, Bun runtime៖ ទំព័រ REST, MCP, LTI, webhooks ដែលបានទទួល |
| `worker`, `scheduler`, `collab`, `content` | ម៉ាស៊ីនជួយ៖ Fly, Railway, ECS ឬម៉ាស៊ីន Docker ផ្ទាល់របស់អ្នកជាមួយ `docker/compose.yaml` |
| Postgres | ខាងក្រៅ ក្រោម transaction pooler៖ Neon, Supabase ឬ RDS ជាមួយ PgBouncer |
| ឯកសារ | S3 ឬ R2។ គ្មានថាសអចិន្រ្តៃយ៍ទេ |
| ការងារក្រោយកម្មវិធី | ដាក់ក្នុងបញ្ជីជាមួយ pg-boss ក្នុង transaction នៃសំណើ ដំណើរការដោយ worker ជួយ។ ជាមួយ `QUIRE_QUEUE_DRIVER=vercel` លើ worker ជួយ ការងារស្រាល (ការជូនដំណឹង និង webhooks ដែលមិនរៀបចំលំដាប់) ឆ្លងកាត់ Vercel Queues (`VERCEL_QUEUE_REGION`, `VERCEL_QUEUE_TOKEN`) ដូច្នេះ Postgres ដែលបានសន្សំមិនត្រូវបានសួរសម្រាប់ពួកវា |
| ការងារកើតឡើងដដែល | scheduler ជួយ។ គ្មានផ្លូវ Vercel Cron ទេ ព្រោះ cron ដែលធ្វើការងារក្នុង function ផុតកំណត់ |
| ការតាមដាន | OpenTelemetry ទៅអ្នកប្រមូលរបស់អ្នក `OTEL_EXPORTER_OTLP_ENDPOINT` |

## អ្វីដែលគោលដៅនេះមិនអាចធ្វើបាន <!--quire:what-this-target-cannot-do-->

ស្រទាប់ web ពិនិត្យទាំងនេះនៅពេលវាចាប់ផ្តើម ហើយបដិសេធ ដោយដាក់ឈ្មោះបញ្ហាទាំងអស់ ជំនួសការបរាជ័យក្រោយមកលើអ៊ីមែលដំបូងដែលមិនដែលផ្ញើ៖

- **គ្មាន SMTP។** Vercel រារាំង SMTP ចេញ។ កំណត់ `QUIRE_EMAIL_PROVIDER_CONFIG` ទៅអ្នកផ្តល់ HTTP (Postmark, SES, Mailgun, SendGrid ឬ Resend)។ `QUIRE_SMTP_URL` ត្រូវបានបដិសេធ។
- **គ្មានថាសក្នុងស្រុក។** `QUIRE_STORAGE_DRIVER=local` ត្រូវបានបដិសេធ។
- **គ្មានអង្គចងចាំចែករំលែករវាងការហៅ។** `QUIRE_REALTIME_DRIVER=inprocess` ត្រូវបានបដិសេធ។ event ដែលផ្ញើដោយម៉ាស៊ីនបម្រើត្រូវបានកំណត់កម្រិតនៅការផុតកំណត់នៃ function។ client តភ្ជាប់ឡើងវិញជាមួយ cursor ដូច្នេះគ្មាន event បាត់ទេ ប៉ុន្តែវត្តមានមិនអាចប្រើបាន។
- **មូលដ្ឋានទិន្នន័យ tenant ដែលបាន pin ត្រូវបានកំណត់**ប្រហែលប៉ុន្មានប្រាំបី ព្រោះនីមួយៗជា connection pool មួយទៀតក្នុងបរិស្ថានដែលមិនអាចចែករំលែក pool ។

## ការដាក់ស្តារ <!--quire:deploying-->

1. បង្កើតគម្រោង Vercel ពី repo ជាមួយ **Root Directory** `apps/web`។ `apps/web/vercel.json` កំណត់ពាក្យបញ្ជាដំឡើង និងសង់ (`NITRO_PRESET=vercel`) ហើយបម្រើ `/sw.js` ដោយមិន cache។
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 របស់កូន។ `QUIRE_REPORT_DATABASE_URL` ជារបស់មូលដ្ឋានទិន្នន័យរូបវ័ណ្ឌដែល `DATABASE_URL` ដាក់ឈ្មោះ។ សម្រាប់មូលដ្ឋានទិន្នន័យដែលបានចុះឈ្មោះបន្ថែមនីមួយៗ បន្ថែម URL តភ្ជាប់ `quire_report` ផ្ទាល់របស់វាទៅបរិស្ថាន 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. ដាក់ស្តារ។ លើការរៀបចំដែលបានបដិសេធកំណត់ត្រានៃ function ចាប់ផ្តើមជាមួយ "The web tier did not start on vercel" ហើយរាយការកំណត់នីមួយៗដែលត្រូវផ្លាស់ប្តូរ។

## ការធ្វើឱ្យប្រសើរ <!--quire:upgrading-->

ផ្លាស់ប្តូរពីម៉ាស៊ីនជួយជាមុនសិន រួចបញ្ជូនការដាក់ស្តារ Vercel ថ្មី រួចចង្កោម worker របស់កូន៖ លំដាប់ក្នុង [upgrade.md](/km/ops/upgrade/)។ ការត្រឡប់ក្រោយភ្លាមៗរបស់ Vercel ជាការត្រឡប់កូឌូ ហើយតែងសុវត្ថិភាពក្នុងកំណែមួយ។

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