دليل النشر

Cal.com مغلق المصدر: 3 بدائل مفتوحة تُنشر على VPS

انشر على VPS Cloud ←

مقارنة

Cal.com مغلق المصدر: 3 بدائل مفتوحة تُنشر على VPS

مقارنات9 دقائق للقراءةعدد الخطوات: 6

في 14 أبريل 2026، نقلت Cal.com قاعدة الكود التجاري إلى مستودع خاص، وأعادت ترخيص الكود العام باسم Cal.diy (MIT)، مع إزالة SSO وTeams والWorkflows وRouting Forms. المستخدمون الذين اختاروا Cal.com تحديداً بسبب رخصة AGPL أمامهم الآن خيار: البقاء مع cal.diy المُجرَّد عن قصد، أو الانتقال للعرض التجاري المغلق، أو الهجرة لبديل مفتوح المصدر فعلاً. تقارن هذه المقالة بين Rallly وEasy!Appointments وTymeslot لمساعدتك على الاختيار.

المحتويات· ما الذي تغيّر في Cal.com في أبريل 20261/10
  1. 01ما الذي تغيّر في Cal.com في أبريل 2026
  2. 02الميزات المحذوفة من cal.diy مقارنةً بالنسخة AGPL
  3. 03متطلبات مقارنة: RAM والمعالج والبنية التقنية لكل بديل
  4. 04ملفات الموارد لكل أداة
  5. 05نشر Rallly على VPS باستخدام Docker Compose
  6. 06Rallly مقابل Easy!Appointments مقابل Tymeslot مقابل cal.diy
  7. 07الهجرة من Cal.com AGPL: تصدير بياناتك
  8. 08التصليب بعد التثبيت
  9. 09استكشاف الأخطاء الشائعة
  10. 10أيّ بديل تختار؟

ما الذي تغيّر في Cal.com في أبريل 2026

نشرت Cal.com في 14 أبريل 2026 مقالاً رسمياً يشرح القرار: صعود أدوات الذكاء الاصطناعي القادرة على فحص الكود العام للكشف عن ثغرات أمنية دفع الفريق إلى إغلاق قاعدة الكود التجاري. الإصدار v6.4 يمثّل نقطة التحوّل.

تمّت إعادة تسمية المستودع العام calcom/cal.com إلى calcom/cal.diy وتغيير رخصته من AGPL-3.0 إلى MIT. قد يبدو هذا التغيير متساهلاً للوهلة الأولى، لكن جوهر المشكلة هو ما تمت إزالته من الكود العام، وليس الرخصة ذاتها. يوصي موقع cal.diy رسمياً بـCal.com (النسخة المغلقة) لأي استخدام تجاري أو إنتاجي.

الميزات المحذوفة من cal.diy مقارنةً بالنسخة AGPL

  • Teams وOrganizations: إدارة متعددة الأعضاء وفضاءات الفِرَق، محجوزة الآن للعرض المؤسسي المغلق.
  • Workflows: أتمتة التذكيرات والإشعارات والإجراءات المُشغَّلة، غائبة من الكود العام.
  • SSO وSAML: تسجيل دخول موحّد عبر موفّر هويتك، محذوف من cal.diy.
  • Routing Forms: نماذج التصفية لتوجيه الحجوزات للعضو المناسب، محذوفة.
  • Instant Booking: حجز فوري دون تأكيد يدوي، محجوز للعرض التجاري.
  • Insights: لوحة تحليلات الحجوزات، غائبة من الكود المفتوح.
  • API v1: واجهة برمجة REST الموثّقة القديمة، مستبدَلة بـAPI v2 في الجانب التجاري فقط.
  • وكيل الهاتف الذكي: جدولة مدعومة بالذكاء الاصطناعي عبر مكالمة هاتفية، مغلق المصدر.

متطلبات مقارنة: RAM والمعالج والبنية التقنية لكل بديل

قبل الاختيار، تأكد من أن خادم VPS يتوافق مع متطلبات الأداة. البدائل الثلاثة لها بنى تقنية مختلفة جداً — Node.js/PostgreSQL وPHP/MySQL وElixir/PostgreSQL — مما يُترجَم إلى متطلبات موارد ومتطلبات إدارة مختلفة.

ملفات الموارد لكل أداة

  • Rallly (AGPL-3.0): Next.js + PostgreSQL عبر Docker Compose. خصّص 2 جيجابايت RAM على الأقل، vCPU واحد كافٍ للحمل الخفيف. نطاق ومُرسِل SMTP وDocker Compose v2 مطلوبة. يتضمن الحزمة الرسمية PostgreSQL وتخزين كائنات S3 وبروكسي HTTPS — أمر واحد يكفي.
  • Easy!Appointments (GPL-3.0): PHP 8.2+ + MySQL/MariaDB. يعمل على أي خادم LAMP عادي أو Docker. 512 ميجابايت RAM كافية للاستخدام الفردي أو الفريق الصغير — الأخف من بين الثلاثة. متوافق مع استضافة مشتركة cPanel، وليس VPS فقط.
  • Tymeslot (AGPL-3.0): Elixir/Phoenix LiveView + PostgreSQL مدمج في حاوية Docker. بنية مُجمَّعة، بصمة ذاكرة منخفضة جداً أثناء التشغيل. حاوية Docker واحدة مع PostgreSQL مدمج — مصمم لتثبيت VPS نظيف.

نشر Rallly على VPS باستخدام Docker Compose

  1. إعداد الخادم

    سجّل الدخول بصلاحية root على خادم VPS. ثبّت Docker وDocker Compose v2 إذا لم يكونا مثبّتَين:

    curl -fsSL https://get.docker.com | sh
    docker compose version

    افتح المنفذَين 80 و443 في الجدار الناري. أشر نطاقاً فرعياً (cal.your-domain.com) إلى IPv4 خادمك عبر سجل DNS من نوع A.

  2. جلب الإعداد الرسمي

    استنسخ مستودع أمثلة self-hosted الرسمي لـRallly وأنشئ ملف البيئة:

    git clone https://github.com/lukevella/rallly-selfhosted.git
    cd rallly-selfhosted
    cp .env.example .env
  3. ضبط متغيرات البيئة

    افتح .env وأدخل المتغيرات الأساسية:

    SECRET_PASSWORD=<سلسلة-عشوائية-32-حرف>
    NEXT_PUBLIC_BASE_URL=https://cal.your-domain.com
    SMTP_HOST=smtp.مزودك.com
    SMTP_PORT=587
    SMTP_USER=بريدك@domain.com
    SMTP_PWD=<كلمة-مرور-smtp>
    SUPPORT_EMAIL=بريدك@domain.com

    أنشئ السلسلة العشوائية بـopenssl rand -hex 16. لا تترك SECRET_PASSWORD فارغاً — سيرفض Rallly الإقلاع بدون قيمة.

  4. تشغيل الحاويات

    شغّل كامل البنية التقنية في الخلفية. تتضمن حزمة Rallly التطبيق وPostgreSQL وتخزين الكائنات وبروكسي عكسي مع TLS تلقائي:

    docker compose up -d

    تحقق أن جميع الخدمات healthy:

    docker compose ps

    يحصل البروكسي العكسي تلقائياً على شهادة Let's Encrypt عند الإقلاع الأول — انتظر دقيقة قبل الوصول للنطاق.

  5. التحقق من التثبيت وإنشاء أول استطلاع

    افتح https://cal.your-domain.com في المتصفح. لا يتطلب Rallly من المشاركين إنشاء حساب — فقط المنظّم. أنشئ أول استطلاع توافر للتحقق من صحة إرسال البريد الإلكتروني عبر SMTP.

    إذا لم تصل الرسائل، تحقق من سجلات الخدمة:

    docker compose logs app --tail=50
  6. تفعيل التحديثات التلقائية (اختياري)

    للبقاء محدَّثاً دون تدخل يدوي، ثبّت Watchtower الذي يراقب الصور الجديدة ويعيد تشغيل الحاويات المتأثرة:

    docker run -d \
      --name watchtower \
      -v /var/run/docker.sock:/var/run/docker.sock \
      containrrr/watchtower --cleanup --interval 86400

    يتحقق Watchtower من الصور الجديدة مرة يومياً. ينشر Rallly تصحيحات أمنية بانتظام — لا تترك نسختك دون مراقبة.

Rallly مقابل Easy!Appointments مقابل Tymeslot مقابل cal.diy

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

المعيارRalllyEasy!AppointmentsTymeslotcal.diy
الرخصةAGPL-3.0GPL-3.0AGPL-3.0MIT (كود مُجرَّد)
البنية التقنيةNext.js + PostgreSQLPHP 8.2 + MySQLElixir/Phoenix + PostgreSQLNext.js + PostgreSQL
الحد الأدنى من RAM2 جيجابايت512 ميجابايتغير موثّق2 جيجابايت
Docker Composeنعم، حزمة رسميةنعم، صورة متاحةنعم، حاوية واحدةنعم
حالة الاستخدام الأساسيةاستطلاعات التوافر، التصويت الجماعيمواعيد منظّمة (خدمات/مزودون)جدولة فردية وجماعيةجدولة فردية (غير إنتاجي)
مزامنة التقويمGoogle وOutlook (iCal)Google CalendarGoogle وOutlook وiCloud وCalDAV وNextcloudGoogle وOutlook
SSO / SAMLلالالامحذوف (العرض التجاري)
فِرَق متعددة الأعضاءلامتعدد المزودين (خدمات)نعم (مجموعات)محذوف (العرض التجاري)
Workflows / تذكيرات تلقائيةنعم (بريد إلكتروني)نعم (بريد إلكتروني)نعم (بريد، Slack، Telegram)محذوف (العرض التجاري)
REST APIنعمنعم (REST كاملة)نعم + webhooksAPI v2 فقط
موصى به للإنتاجنعمنعمنعملا (تصريح رسمي)
النضج (2026)نشط، v4.15.2 (سبتمبر 2026)نشط، v1.6.0 (مايو 2026)نشط، أُطلق رداً على Cal.comمُصان، نطاق محدود بقصد

الهجرة من Cal.com AGPL: تصدير بياناتك

إذا كنت تستضيف Cal.com ذاتياً تحت رخصة AGPL وتريد الهجرة لأحد البدائل، إليك كيفية استخراج بياناتك قبل إيقاف النسخة القديمة.

التصدير من نسخة Cal.com AGPL الحالية. تخزّن Cal.com بياناتها في PostgreSQL. يمكنك تصدير جداول الحجوزات والتوافر وأنواع الأحداث عبر pg_dump:

pg_dump -U calcom -d calcom -t bookings -t event_types -t schedules > calcom_export.sql

البيانات ذات الأولوية: الحجوزات الحالية (لسجل إدارة علاقات العملاء)، عناوين البريد الإلكتروني للمشاركين (إن كنت ترسل تذكيرات)، وقواعد التوافر (ساعات العمل، الفترات المحجوبة).

ما لا يمكنك استيراده مباشرة. لا يوفر أيٌّ من البدائل الثلاثة استيراداً بتنسيق Cal.com — الهجرة إعادة ضبط يدوية، وليست استعادة. ركّز على تصدير قائمة جهات الاتصال وقواعد التوافر، ثم أعد ضبط أنواع الأحداث في الأداة المستهدفة. لـRallly (استطلاعات جماعية) أو Tymeslot (روابط حجز فردية)، تستغرق إعادة الضبط عادةً أقل من ساعة.

التصليب بعد التثبيت

بعض الخطوات قبل تعريض نسختك للزيارات الحقيقية.

احمِ الوصول الإداري بمصادقة HTTP أساسية أمام البروكسي العكسي إن لم توفّر الأداة 2FA أصلياً — مهم بشكل خاص لـEasy!Appointments على وصول عام. اضبط نسخاً احتياطية تلقائية لمجلد بيانات PostgreSQL أو MySQL: docker exec مجدوَل مع pg_dump أو mysqldump إلى تخزين خارجي كافٍ. تحقق أن خادم VPS لا يعرض إلا المنافذ الضرورية (80/443 للويب، 22 لـSSH) وأن الوصول المباشر لمنفذ قاعدة البيانات (5432 أو 3306) غير مفتوح على الواجهة العامة.

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

Rallly: التطبيق يعمل لكن الرسائل لا تصل. تحقق من SMTP_HOST وSMTP_PORT وSMTP_USER في ملف .env. بعض مزودي الاستضافة يحجبون المنفذ 25 للخارج — استخدم المنفذ 587 (STARTTLS) أو 465 (SSL). افحص السجلات بـdocker compose logs app --tail=100 | grep -i smtp.

Easy!Appointments: خطأ 500 أو صفحة بيضاء بعد التثبيت. تحقق من أن مجلد storage/ قابل للكتابة من قِبَل عملية الويب (chmod -R 775 storage/). في Docker، تأكد أن حاوية MySQL بدأت وأصبحت في متناول الحاوية التطبيقية قبلها — استخدام depends_on مع condition: service_healthy في Compose يحل مشاكل التسابق في الإقلاع.

Tymeslot: الحاوية تعمل لكن مزامنة التقويم تفشل. تتطلب مزامنة Google/Outlook بيانات اعتماد OAuth2 (معرّف العميل والسر) في متغيرات البيئة. أنشئ مشروعاً في Google Cloud Console، فعّل Google Calendar API، وأدخل GOOGLE_CLIENT_ID وGOOGLE_CLIENT_SECRET. يجب أن تطابق عنوان URL للاستجابة OAuth نطاق الإنتاج تماماً.

أيّ بديل تختار؟

Rallly هو الخيار الأنسب إذا احتجت لاستطلاعات التوافر لإيجاد موعد يناسب عدة مشاركين — اجتماعات الفريق وورش العمل والمكالمات الجماعية. لا تدفق حجز فوري، لكن تصويت تعاوني خفيف الوزن وبلا احتكاك. نضجه (v4.15.2 في سبتمبر 2026، حزمة Docker رسمية متكاملة) يجعله الخيار الأسهل نشراً.

Easy!Appointments هو الاختيار الصحيح إذا كانت حالة استخدامك تشبه أجندة مهنية منظّمة: خدمات (استشارة، درس، مقابلة)، مزودون، فترات ثابتة وتأكيد بالبريد الإلكتروني. يعمل على استضافة مشتركة cPanel كما على VPS، مما يجعله متاحاً دون Docker. إصداره v1.6.0 (مايو 2026) هو الأحدث.

Tymeslot يضع نفسه رداً مباشراً على مغادرة Cal.com AGPL: جدولة فردية مع روابط حجز، مزامنة متعددة التقاويم (Google وOutlook وiCloud وCalDAV وNextcloud)، وتكاملات webhooks للربط مع n8n أو Make. وُلد في أعقاب إغلاق Cal.com، ويستهدف مباشرةً المطورين الذين يبحثون عن بديل بنطاق مماثل، مع رخصة AGPL تضمن الاستدامة.

انشر أداة الجدولة الخاصة بك على VPS

Rallly وEasy!Appointments وTymeslot تُستضاف ذاتياً على VPS بصلاحية root مع Docker. وصول root، IPv4 مخصصة، اختيار نظام التشغيل، بلا قيود برمجية.

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

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

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