---
title: "طبقة الويب على Vercel"
description: "شغّل طبقة ويب Quire على Vercel مع عامل مرافق."
image: "https://docs.quirelms.com/og.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://docs.quirelms.com/ar/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` وإعداد Nitro المسبق لـ`vercel` وفحوص بدء التشغيل). تحتاج Vercel إلى تخزين ملفات مشترك (`QUIRE_STORAGE_DRIVER=s3` أو `azure`) ومشغل آني يعمل بين مثيلات الدوال (`QUIRE_REALTIME_DRIVER=sse` أو `centrifugo`) وموفر بريد إلكتروني عبر HTTP. دونها ترفض طبقة الويب بدء التشغيل، ويسمي سجلها كل إعداد مفقود.

## المكونات <!--quire:the-pieces-->

| المكون | مكان تشغيله |
| --- | --- |
| `web` | Vercel Functions، بيئة Node: الصفحات وREST وMCP وLTI واستقبال خطافات الويب |
| `worker` و`scheduler` و`collab` و`content` | مضيف مرافق: Fly أو Railway أو ECS أو مضيف Docker خاص بك مع `docker/compose.yaml` |
| Postgres | خارجي، خلف مجمع معاملات: Neon أو Supabase أو RDS مع PgBouncer |
| الملفات | S3 أو R2. لا يوجد قرص دائم |
| المهام الخلفية | تضاف إلى قائمة الانتظار باستخدام pg-boss ضمن معاملة الطلب ويشغلها العامل المرافق. وعند ضبط `QUIRE_QUEUE_DRIVER=vercel` على العامل المرافق، تمر المهام الخفيفة (تسليمات الإشعارات وخطافات الويب غير المرتبة) عبر Vercel Queues (`VERCEL_QUEUE_REGION` و`VERCEL_QUEUE_TOKEN`) كي لا يُستطلع Postgres المجمع عنها |
| المهام المتكررة | مجدول المضيف المرافق. لا يوجد مسار Vercel Cron لأن تنفيذ عمل cron داخل دالة يتجاوز مهلة التشغيل |
| التتبع | OpenTelemetry إلى مجمّعك عبر `OTEL_EXPORTER_OTLP_ENDPOINT` |

## ما لا تستطيع هذه البيئة فعله <!--quire:what-this-target-cannot-do-->

تفحص طبقة الويب الإعدادات عند بدء التشغيل وترفضه، مع ذكر كل مشكلة، بدلًا من الفشل لاحقًا عند أول رسالة بريد لا تُرسل:

- **لا يدعم 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` (عنوان مجمّع الاتصالات) و`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` الخاص بها إلى بيئتي الويب والعامل، ثم سجّل اسم متغير البيئة كـ`env:NAME` في لوحة المنصة. وتتعطل التحليلات بأمان إذا غاب عنوان التقرير الخاص بقاعدة البيانات.
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، وبعدها حدّث عمال المضيف المرافق: بالترتيب الموضح في [upgrade.md](/ar/ops/upgrade/). ويُعد التراجع الفوري في Vercel تراجعًا عن الشيفرة وآمنًا دائمًا ضمن الإصدار.

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