---
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/am/llms.txt
> Use this file to discover all available pages before exploring further.

# የድር ክፍል በVercel ላይ

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

ንድፉ በ `docs/architecture/23-ops.md` ክፍል 5 ላይ ነው። Vercel የድር ክፍሉን ብቻ ያስኬዳል። ሌላው ሁሉ እርስዎ በሚያስተዳድሩት ተያያዥ ሆስት ላይ ይሠራል፤ ይህም አማራጭ አይደለም።

## በዚህ እትም ያለው ሁኔታ <!--quire:status-in-this-release-->

ውቅሩ ተዘጋጅቷል (`apps/web/vercel.json`፣ `vercel` Nitro presetና የጅማሬ ምርመራዎች)። Vercel የጋራ ፋይል ማከማቻ (`QUIRE_STORAGE_DRIVER=s3` ወይም `azure`)፣ በfunction ክፍሎች መካከል የሚሠራ realtime driver (`QUIRE_REALTIME_DRIVER=sse` ወይም `centrifugo`) እና HTTP የኢሜይል አቅራቢ ይፈልጋል። እነዚህ ከሌሉ የድር ክፍሉ መነሳት እምቢ ይላል፤ ምዝግቡም የጎደለውን ቅንብር ሁሉ ይዘረዝራል።

## ክፍሎቹ <!--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 ወይም PgBouncer ያለው RDS |
| ፋይሎች | S3 ወይም R2። ቋሚ ዲስክ የለም። |
| የጀርባ ሥራዎች | ከጥያቄው transaction ጋር በpg-boss ይገባሉ፣ በተያያዥ workerም ይሠራሉ። በተያያዥ worker `QUIRE_QUEUE_DRIVER=vercel` ከሆነ ቀላል ሥራዎች (በቅደም ተከተል ያልተያዙ ማሳወቂያዎችና webhook መላኪያዎች) በVercel Queues (`VERCEL_QUEUE_REGION`፣ `VERCEL_QUEUE_TOKEN`) ይሄዳሉ፤ pooled Postgres አይፈተሽም። |
| ተደጋጋሚ ሥራዎች | ተያያዥ scheduler። Vercel Cron route የለም፤ ሥራን በfunction ውስጥ የሚያከናውን cron timeout ይደርስበታል። |
| ክትትል | 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` አይቀበልም። Server-sent events እስከ function timeout ብቻ ይቆያሉ፤ ደንበኛው cursor ተጠቅሞ እንደገና ይገናኛል፣ ስለዚህ ክስተት አይጠፋም፤ የሰው መኖር ግን አይገኝም።
- **በተለየ የውሂብ ጎታ የተቀመጡ tenant ዎች ገደብ አላቸው**፤ በግምት ስምንት ብቻ፣ እያንዳንዱ በpool ማጋራት የማይችል አካባቢ ተጨማሪ ግንኙነት ስለሚፈጥር።

## ማሰማራት <!--quire:deploying-->

1. ከመዝገቡ Vercel project ይፍጠሩ፣ **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`፣ የማከማቻ ቅንብሮችና ወደ ተያያዥ collab አገልግሎት የሚያመለክቱ `QUIRE_COLLAB_URL` እና `QUIRE_COLLAB_SIGNING_KEY`። `QUIRE_REPORT_DATABASE_URL` በ `DATABASE_URL` የተለየው አካላዊ database ላይ ነው። ለእያንዳንዱ ተጨማሪ የተመዘገበ database የራሱን `quire_report` URL ወደ webና worker አካባቢ ያክሉ፤ በመድረኩ ኮንሶልም የአካባቢ ተለዋዋጭ ስሙን እንደ `env:NAME` ይመዝግቡ። የሪፖርት URL ከጎደለ analytics በደህንነት ምክንያት አይሠራም።
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 ምዝግብ በ“የድር ክፍሉ በvercel ላይ አልተነሳም” ይጀምራል፤ ሊቀየሩ የሚገቡ ቅንብሮችን ሁሉ ይዘረዝራል።

## ማሻሻል <!--quire:upgrading-->

መጀመሪያ ከተያያዥ ሆስት ማሻሻያ ያስኬዱ፣ ከዚያ አዲሱን Vercel deployment ያስጀምሩ፣ በመጨረሻ የተያያዙ workersን ያዙሩ፦ ቅደም ተከተሉ በ[የማሻሻያ መመሪያ](/am/ops/upgrade/) አለ። የVercel ፈጣን rollback የኮድ rollback ነው፤ በአንድ እትም ውስጥ ሁልጊዜ ደህንነቱ የተጠበቀ ነው።

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