المتطلبات
ما تحتاج إلى تثبيته قبل تشغيل حزمتك، باستخدام Docker أو من دونه.
لحزمة الحزمة الكاملة
ما تحتويه كل حزمة
| الحزمة | التطبيقات في التنزيل | يعمل بمفرده |
|---|---|---|
| الحزمة الكاملة | واجهة API، والموقع العام، ولوحة تحكم الوكالة | نعم، الثلاثة معًا |
| الموقع العام | الموقع العام | لا: يحتاج إلى تشغيل واجهة Velra API |
| لوحة تحكم الوكالة | لوحة تحكم الوكالة | لا: يحتاج إلى تشغيل واجهة Velra API |
| واجهة API (Backend API) | API | نعم، يقدّم واجهة API فقط |
لا تتضمن حزمة التطبيق الواحد التطبيقات الأخرى. يقرأ الموقع ولوحة التحكم كل شيء من واجهة Velra API، وكود واجهة API موجود فقط في حزمتي الحزمة الكاملة وواجهة API.
باستخدام Docker
- Docker Desktop على macOS أو Windows، أو Docker Engine مع إضافة Compose على Linux، مع Docker Compose 2.24 أو أحدث، وهو ما يتضمنه كل Docker Desktop حاليًا؛ ويطبع
docker compose versionإصدارك. تبدأ الحزمة الكاملة بأمرdocker composeواحد، ويقرأdocker-compose.ymlالملفback-end/.envفقط عند وجوده، وهو إعداد ترفضه إصدارات Compose الأقدم. - اتصال بالإنترنت للبناء الأول، الذي ينزّل الصور الأساسية والاعتماديات.
- لا شيء آخر: يجلب Docker معه Node.js، وقاعدة البيانات ملف SQLite داخل وحدة تخزين Docker.
باستخدام Docker
- Docker Desktop على macOS أو Windows، أو Docker Engine على Linux. لتطبيقك ملف
Dockerfileخاص به؛ ولا حاجة إلى Compose. - اتصال بالإنترنت للبناء الأول، الذي ينزّل الصورة الأساسية والاعتماديات.
من دون Docker
- Node.js 22 أو أحدث، وهو الإصدار الذي يعلنه كل تطبيق في
engines. تعمل صور Docker على Node.js 24. تحقق من إصدارك بالأمرnode -v. - Yarn 4، عبر Corepack. شغّل
corepack enableمرة واحدة؛ يثبّت كل تطبيق إصدار Yarn الخاص به فيpackageManager، فيختارyarnالإصدار الصحيح. إذا لم يكن في Node.js لديك Corepack (Node.js 25 وما بعده لا تضمه)، فثبّته أولًا بالأمرnpm install -g corepack. - لا حاجة إلى حزم عامة.
قاعدة البيانات
لا حاجة إلى خادم قاعدة بيانات. تستخدم واجهة API قاعدة SQLite افتراضيًا، وينشئ yarn seed الملف لك؛ ويستخدم Docker قاعدة SQLite أيضًا. الانتقال إلى MySQL مدعوم بتغيير في الإعدادات، لا بتغيير في الكود.
المنافذ
يعمل كل تطبيق على منفذ محلي ثابت. تأكد من أن لا شيء آخر يستخدمها، أو، مع Docker، انقل أحدها باستخدام SITE_PORT أو ADMIN_PORT أو API_PORT في ملف .env بجوار docker-compose.yml.
| التطبيق | المنفذ |
|---|---|
| API | 8000 |
| الموقع العام | 3030 |
| لوحة تحكم الوكالة | 3031 |
المنفذ
يعمل الموقع على المنفذ 3030 ويتوقع واجهة API على 8000. تأكد من أن لا شيء آخر يستخدمهما.
المنفذ
تعمل لوحة التحكم على المنفذ 3031 وتتوقع واجهة API على 8000. تأكد من أن لا شيء آخر يستخدمهما.
المنفذ
تعمل واجهة API على المنفذ 8000، وتقبل افتراضيًا الموقع من 3030 ولوحة التحكم من 3031. تأكد من أن لا شيء آخر يستخدم المنفذ 8000.
واجهة API للربط
تطبيقك ليس له بيانات خاصة به. يحتاج إلى تشغيل واجهة Velra API وملئها بالبيانات الأولية، ويُضبط عنوانها في .env الخاص به أو يُمرَّر كمعامل بناء. تُباع واجهة API كحزمة مستقلة هي واجهة API، وهي جزء من الحزمة الكاملة.
الخدمات الاختيارية
لا يلزم أي من هذه لتشغيل الوكالة محليًا. يُفعَّل كل منها بمتغيراته في .env الخاص بواجهة API؛ والمتغير المعلّق يبقي ميزته معطلة.
| الخدمة | من دونها |
|---|---|
| Cloudflare R2 أو مخزن آخر متوافق مع S3 | تُخزَّن الملفات المرفوعة على قرص واجهة API نفسها (في وحدة البيانات عند استخدام Docker)، وتقدّم واجهة API الصور الأولية بنفسها. |
| مفتاح ذكاء اصطناعي من Google Gemini أو OpenAI أو DeepSeek، أيٌّ منها | يقول المساعد الذكي إنه يحتاج إلى مفتاح مزوّد ويعرض المزودين الثلاثة الذين يقبلهم، ولا تُحتسب أي رسوم. كل شيء آخر يعمل. |
| مفتاح Google Gemini لاستوديو التأثيث | يقول استوديو التأثيث بالذكاء الاصطناعي إنه يحتاج إلى مفتاح ولا يولّد شيئًا، حتى لو كان المساعد يعمل بمفتاح OpenAI أو DeepSeek. |
| مفتاح لخادم MCP | يرفض POST /api/mcp كل طلب. |
لا توجد خدمة بريد أو دفع لإعدادها: تصل الاستفسارات وطلبات المعاينة كإشعارات في لوحة التحكم.
الخرائط
ترسم خرائط لوحة التحكم بلاطات OpenFreeMap، ويستخدم بحث الأماكن في محرر العقار خدمة Photon العامة. كلتاهما تحتاج إلى اتصال بالإنترنت ولا تحتاج إلى مفتاح أو حساب؛ ولا تضمن أي منهما التوفر، ويمكنك توجيههما إلى خدماتك الخاصة.