دليل عملي

تثبيت Temporal على خادم VPS: أتمتة ذاتية الاستضافة

الأتمتة10 دقائق للقراءةعدد الخطوات: 10

Temporal محرّك لتنسيق سير عمل دائم: تصمد عملياتك الطويلة أمام إعادة التشغيل والأعطال والأخطاء، لأن حالتها تُحفَظ عند كل خطوة. مُصمَّم للمطوّرين عبر حِزم SDK (Go وJava وPython وTypeScript)، وهو مثالي للمعاملات المعقّدة والـ sagas. إليك كيفية تثبيته بالاستضافة الذاتية على خادم VPS.

المحتويات· ‏لماذا استضافة ‏Temporal‏ ذاتياً على ‏VPS1/11
  1. 01‏لماذا استضافة ‏Temporal‏ ذاتياً على ‏VPS
  2. 02‏حالات استخدام ‏Temporal
  3. 03‏معمارية ‏Temporal ‏المستضاف ذاتياً
  4. 04‏Temporal ‏مقابل ‏BullMQ ‏مقابل ‏Celery
  5. 05‏المتطلبات التقنية
  6. 06‏نشر ‏Temporal‏ باستخدام ‏Docker Compose
  7. 07‏تهيئة ‏Worker ‏بسيط بـ‏Go ‏أو ‏TypeScript
  8. 08‏واجهة مستخدم ‎Temporal‎ — مراقبة سير العمل وتصحيحه
  9. 09‎نسخ احتياطي لـ PostgreSQL والاستمرارية
  10. 10استكشاف الأخطاء — الأخطاء الشائعة
  11. 11‏الأمان: لا تعرض ‏Frontend Service‏ بدون مصادقة

‏لماذا استضافة ‏Temporal‏ ذاتياً على ‏VPS

‏‏Temporal Cloud‏ متاح، لكن الاستضافة الذاتية تبقى وثيقة الصلة لأسباب عديدة: التكلفة المتوقعة ابتداءً من ‏99 درهم/شهر‏، وسيادة البيانات، والتحكم الكامل في الإصدار والسياسات.

‏حالات استخدام ‏Temporal

‏يتألق ‏Temporal‏ حيث تظهر حدود مهام ‏cron‏ وقوائم الانتظار البسيطة. فيما يلي أكثر حالات الاستخدام شيوعاً في بيئات الإنتاج.

‏معمارية ‏Temporal ‏المستضاف ذاتياً

‏إن فهم المكونات الداخلية يساعدك على تحديد مواصفات ‏VPS ‏الخاص بك وتشخيص المشكلات. يتكون ‏Temporal ‏من أربعة خدمات رئيسية يمكن تشغيلها في نفس العملية (‏temporalio/auto-setup) أو نشرها بشكل منفصل على نطاق واسع.

‏Temporal ‏مقابل ‏BullMQ ‏مقابل ‏Celery

مرّر الجدول أفقيًا

‏المعيار‏Temporal‏BullMQ‏Celery
استدامة الحالةسجل كامل محفوظ في قاعدة البيانات — يستأنف سير العمل المنقطع من حيث توقف تماماً‏الحالة في ‏Redis — ‏فقدان ‏Redis ‏يعني فقدان المهام (قابل للتخفيف باستخدام ‏AOF/RDB)‏نتائج اختيارية في الواجهة الخلفية (‏Redis، قاعدة البيانات) — لا يوجد سجل تنفيذ أصلي
الإعادة والحتمية‏إعادة تشغيل تلقائية من السجل — يجب أن يكون كود سير العمل حتمياً، و‏Temporal ‏يتكفل بالباقي‏لا إعادة تشغيل أصلية — إعادة محاولة بسيطة عند الفشل، دون إعادة الخطوات السابقةإعادة المحاولة قابلة للتخصيص لكل مهمة، لا إعادة تشغيل لسير عمل متعدد الخطوات
واجهة المراقبةواجهة مستخدم غنية مدمجة: قائمة سير العمل، تفاصيل كل خطوة، البحث، الإجراءات اليدوية‏Bull Board ‏كإضافة خارجية — وظيفي لكن محدود‏Flower ‏كأداة منفصلة — مقاييس أساسية، لا سجل للخطوات
اللغات المدعومة‏Go، ‏TypeScript/JavaScript، ‏Python، ‏Java، ‏‎.NET، ‏PHP ‏(SDKs ‏رسمية)‏Node.js ‏فقط‏Python ‏فقط (تكاملات خفيفة للغات أخرى)
تعقيد التثبيت‏مجموعة من 4 خدمات + ‏PostgreSQL + ‏Worker — أثقل من ‏Redis، مبرر لسير العمل الطويلة‏نسخة ‏Redis ‏واحدة — سهل الانطلاق جداً‏وسيط (‏Redis ‏أو ‏RabbitMQ) + واجهة خلفية اختيارية — في حده الأدنى
حالة الاستخدام المثاليةسير العمل الطويلة، متعددة الخطوات، مع إعادة المحاولة والتعويض — المدفوعات، الإعداد، خطوط معالجة البياناتالمهام القصيرة والمتوازية — إرسال البريد الإلكتروني، تغيير حجم الصور، الإشعارات‏مهام ‏Python ‏الدُفعية — التعلم الآلي، الاستخراج، معالجة الملفات

‏المتطلبات التقنية

‏نشر ‏Temporal‏ باستخدام ‏Docker Compose

  1. ‏إنشاء دليل العمل

  2. ‏تنزيل ملف ‏Docker Compose‏ الرسمي

  3. ‏إنشاء ملف متغيرات البيئة

    أنشئ ملف .env لتخصيص ‏credentials الخاصة بـ‏PostgreSQL. لا تترك كلمات مرور افتراضية أبدًا في بيئة الإنتاج.

  4. ‏تقييد صلاحيات ملف ‏‎.env

    ‏ملف ‏.env يحتوي على ‏credentials — قيّد الوصول إليه.

  5. ‏تشغيل المكدس

  6. ‏التحقق من صحة الخدمات

  7. ‏التحقق من الاتصال بـ‏Frontend Service

    ‏استخدم ‏temporal CLI للتأكد من أن الخادم يستجيب على منفذ ‏gRPC.

  8. ‏إنشاء ‏namespace‏ الإنتاج

  9. ‏الوصول إلى واجهة ‏Temporal

    ‏واجهة الويب متاحة على المنفذ 8080. في الإنتاج، ضع ‏reverse proxy ‏nginx مع ‏HTTPS أمام هذا المنفذ.

  10. ‏تهيئة التشغيل التلقائي

    ‏فعّل إعادة التشغيل التلقائية بعد إعادة تشغيل ‏VPS.

‏تهيئة ‏Worker ‏بسيط بـ‏Go ‏أو ‏TypeScript

‏Worker ‏هو العملية التي تنفذ فعلياً كود الأعمال الخاص بك. يتصل بـ‏Frontend Service، ويستطلع ‏task queue ‏وينفذ سير العمل والأنشطة التي يوزعها عليه ‏Temporal. ‏إليك مثال بسيط بأكثر لغتين استخداماً.

‏واجهة مستخدم ‎Temporal‎ — مراقبة سير العمل وتصحيحه

‏واجهة مستخدم ‎Temporal‎ (متاحة على المنفذ 8080) هي الأداة الأساسية لمراقبة سير عملك في الإنتاج. تتيح لك:

‎نسخ احتياطي لـ PostgreSQL والاستمرارية

تعتمد متانة ‎Temporal‎ كليًا على ‎PostgreSQL‎. نسخة بلا نسخ احتياطي تعني خسارة كاملة لسجل سير العمل عند أي عطل في الـ ‎VPS‎.

استكشاف الأخطاء — الأخطاء الشائعة

فيما يلي الأخطاء الأربعة الأكثر شيوعًا عند تثبيت ‎Temporal‎ على ‎VPS‎ وطريقة معالجتها.

‏الأمان: لا تعرض ‏Frontend Service‏ بدون مصادقة

يجب ألا يُعرَّض المنفذ 7233 (‎gRPC Frontend‎) والمنفذ 8080 (‎UI‎) مباشرةً للإنترنت دون حماية. لا يتضمن ‎Frontend Service‎ أي مصادقة أصلية في الإصدارات مفتوحة المصدر: كل من يستطيع الاتصال به يمكنه بدء سير العمل وإيقافها وقراءة جميع بياناتها. الإجراءات الموصى بها: (1) أغلق المنفذ 7233 في ‎ufw‎ وأتِح الوصول فقط لعناوين ‎IP‎ الخاصة بـ ‎Workers‎ (ufw allow from 10.0.0.0/8 to any port 7233)؛ (2) ضع الـ ‎UI‎ خلف ‎proxy‎ عكسي ‎nginx‎ مع مصادقة ‎HTTP‎ أساسية أو ‎SSO‎؛ (3) استخدم ‎VPN‎ أو شبكة خاصة بين ‎VPS‎ الخاص بـ ‎Temporal‎ و‎VPS‎ الخاصة بـ ‎Workers‎. في بيئة الإنتاج، فكّر في استخدام ‎mTLS‎ (متاح في ‎Temporal‎ الإصدار 1.x) لتشفير اتصال ‎gRPC‎ والتحقق منه.

بنية تحتية من خادم VPS لـ Temporal

يتطلّب Temporal موارد قوية: يوفّر خادم VPS Cloud من ServOrbit ما يلزم من vCPU وRAM وقرص سريع، مع Docker جاهز للاستخدام وSSL تلقائي لتأمين الـ Web UI. أطلق تنسيقك الدائم بالاستضافة الذاتية.

بحاجة إلى مساعدة؟

تصفّح مركز المساعدة والأسئلة الشائعة، أو تواصل مع فريقنا — معاودة اتصال أو WhatsApp أو بريد إلكتروني. الدعم بـالعربية والفرنسية والإنجليزية.

راسلنا على WhatsAppيُفتح في علامة تبويب جديدة