دليل النشر

استضافة ‎Rocket.Chat على خادم ‎VPS الخاص بك

انشر على VPS Cloud →

الاستضافة الذاتية9 دقيقة قراءة

استضافة ‎Rocket.Chat على خادم ‎VPS الخاص بك

‎Rocket.Chat منصة تواصل مفتوحة المصدر شديدة الاكتمال: دردشة، ومكالمات صوتية/مرئية، وقناة متعددة (omnichannel) واتحاد ‎Matrix. عند استضافتها ذاتيًا على خادم ‎VPS، تصبح محورًا للتواصل تحت سيطرتك بالكامل — دون رسوم لكل مستخدم، دون سقف للرسائل، دون بيانات لدى طرف ثالث. يرافقك هذا الدليل من التثبيت الأولي ب‎Docker و‎MongoDB حتى الإنتاج: ‎SSL، قنوات ‎WhatsApp والبريد، الإدارة بعد النشر، التحديثات، المراقبة و‎SSO.

لماذا تستضيف ‎Rocket.Chat ذاتيًا على خادم ‎VPS

تذهب ‎Rocket.Chat أبعد من مجرد أداة مراسلة للفِرَق: فهي تقدّم وحدة قناة متعددة أصلية (‎WhatsApp Business، البريد الإلكتروني، أدوات دردشة على المواقع)، ومكالمات صوتية ومرئية، واتحادًا عبر بروتوكول ‎Matrix. لوكالة أو مؤسسة صغيرة تريد توحيد التواصل الداخلي ودعم العملاء، تتجنّب الاستضافة الذاتية على ‎VPS تعدُّ الاشتراكات وتُبقي مجمل المراسلات على بنية تحتية تتحكّم أنت بها. تعتمد ‎Rocket.Chat على ‎MongoDB، ما يجعلها أكثر نهمًا قليلاً من ‎Mattermost، لكنه يفتح الباب أمام تكاملات غنية وسوق للإضافات.

فوائد ملموسة ل‎Rocket.Chat ذاتية الاستضافة

  • وحدة قناة متعددة مدمجة لمعالجة الدعم عبر الويب والبريد والمراسلة من واجهة واحدة.
  • مكالمات صوتية/مرئية ومشاركة الشاشة دون الاعتماد على خدمة طرف ثالث.
  • اتحاد ‎Matrix لربط خادمك بمؤسسات أخرى.
  • سوق تطبيقات وكتالوج واسع من التكاملات (‎webhooks و‎bots).
  • تخصيص واسع لسمة المنصة وهويتها البصرية.
  • بيانات المحادثات والملفات محفوظة على خادم ‎VPS الخاص بك.
  • ‎SSO (‎LDAP، ‎SAML، ‎OAuth) مجاني في الاستضافة الذاتية — دون تكلفة إضافية خلافًا ل‎Slack.

المتطلبات العتادية والبرمجية

‎Rocket.Chat و‎MongoDB متطلّبتان نسبيًا من حيث الذاكرة. لفريق حتى 50 مستخدمًا، خصّص خادم ‎VPS بـ 2 إلى 4 ‎vCPU وذاكرة (‎RAM) لا تقل عن 4 غيغابايت؛ اهدف إلى 8 غيغابايت لمنصة نشطة مع قناة متعددة ومكالمات مرئية. يجب حتمًا أن تعمل ‎MongoDB في وضع ‎replica set لأن ‎Rocket.Chat تستخدم ‎oplog للوقت الحقيقي. احسب 30 إلى 50 غيغابايت من ‎SSD. تحتاج إلى ‎Docker و‎Compose، ونطاق فرعي مع سجل A، و‎reverse proxy يتعامل مع ‎WebSockets.

نشر ‎Rocket.Chat مع ‎Docker و‎SSL

01

توفير خادم ‎VPS

ثبّت ‎Docker وإضافة ‎Compose، وأنشئ ‎/opt/rocketchat. تحقّق من كفاية الذاكرة (‎RAM): يمكن ل‎MongoDB و‎Rocket.Chat إشباع خادم ‎VPS بذاكرة 2 غيغابايت تحت الحِمل.

02

إعداد ‎MongoDB في ‎replica set

صرِح عن خدمة ‎mongodb (الصورة ‎bitnami/mongodb أو ‎mongo) مع تفعيل ‎replica set: إلزامي ل‎oplog. من دون هذه الخطوة، تبدأ ‎Rocket.Chat لكن الوقت الحقيقي وبعض الوظائف تفشل. احفظ البيانات في وحدة تخزين مخصّصة.

03

تعريف خدمة ‎Rocket.Chat

أضِف خدمة ‎rocketchat (الصورة ‎registry.rocket.chat/rocketchat/rocket.chat) مع المتغيرات ‎MONGO_URL و‎MONGO_OPLOG_URL و‎ROOT_URL بصيغة ‎HTTPS. اجعلها تعتمد على ‎MongoDB واعرض المنفذ 3000 داخليًا فقط.

04

التشغيل والتحقّق

نفّذ ‎docker compose up -d ثم ‎docker compose logs -f rocketchat. يُرحّل التشغيل الأول مخطط ‎MongoDB وقد يستغرق دقيقة إلى دقيقتين. انتظر الرسالة التي تشير إلى جاهزية الخادم على المنفذ 3000.

05

وضع ‎reverse proxy و‎SSL

مع ‎Caddy: chat.yourdomain.com { reverse_proxy localhost:3000 }. مع ‎Nginx، مرّر الطلبات إلى ‎127.0.0.1:3000 مع تمرير ترويستَي ‎Upgrade/Connection ل‎WebSocket، ثم ولّد الشهادة عبر ‎certbot.

06

إغلاق مساعد التثبيت

إذا تُرك وشأنه، يعرض ‎Rocket.Chat عند أول تحميل مساعدًا يُنشئ حساب المسؤول — ويمكن لأي زائر يصل قبلك أن يستحوذ عليه. مرّر ‎ADMIN_USERNAME و‎ADMIN_PASS و‎ADMIN_EMAIL و‎OVERWRITE_SETTING_Show_Setup_Wizard=completed كمتغيّرات بيئة منذ أول إقلاع.

07

الاتصال لأول مرة

في تثبيت من كتالوج ‎ServOrbit، يوجد حساب المسؤول سلفًا بكلمة مرور عشوائية معروضة في مساحة العميل. افتح ‎https://chat.yourdomain.com، سجّل الدخول، غيّر كلمة المرور، عطّل التسجيل العمومي إذا كانت النسخة خاصة، واضبط ‎SMTP للدعوات.

الإدارة بعد النشر: القنوات والأدوار وال‎webhooks

بعد تسجيل الدخول كمسؤول، انتقل إلى Administration > Rooms لإنشاء قنواتك (قناة عامة، مجموعة خاصة، قناة نقاش). حدّد اتفاقية تسمية منذ البداية، مثل: ‎#فريق-dev و‎#دعم-العملاء و‎#إعلانات-عامة. عيّن الأدوار عبر Administration > Roles: الأدوار ‎Admin و‎Moderator و‎User و‎Guest مهيّأة مسبقًا؛ يمكنك إنشاء أدوار مخصّصة بصلاحيات دقيقة (قراءة دون كتابة، رؤية دون دعوة، إشراف دون إدارة). وللفِرَق الكبيرة، استخدم مجموعات ‎LDAP لتعيين الأدوار تلقائيًا عند تسجيل الدخول. تتيح ‎webhooks الواردة إرسال إشعارات من أدوات خارجية (‎GitLab، ‎Grafana، ‎CRM) مباشرةً إلى قناة: Administration > Integrations > New Integration > Incoming WebHook. يولّد ‎Rocket.Chat رابطًا فريدًا؛ يرسل المستدعي طلب ‎POST بتنسيق ‎JSON يتضمّن على الأقل حقل ‎text. اسم مستعار وصورة رمزية اختيارية يساعدان في تمييز مصدر الرسالة للوهلة الأولى.

ربط القنوات المتعددة: ‎WhatsApp وأداة الدردشة والبريد

توحّد وحدة ‎Omnichannel القنوات الخارجية في طابور تذاكر تديره فرقتك. فعّلها في Administration > Omnichannel > Activation. لأداة الدردشة على الويب، انتقل إلى Omnichannel > Livechat > Installation: يولّد ‎Rocket.Chat مقتطفًا بلغة ‎JavaScript تضعه في موقعك مع إمكانية تخصيص لونه وعنوانه والحقول المملوءة مسبقًا. للبريد الإلكتروني، اضبط عنوان ‎IMAP في Omnichannel > Email Inbox: كل رسالة واردة تُنشئ تذكرة مسنَدة تلقائيًا لقسم الدعم. ل‎WhatsApp Business API، تحتاج إلى مزوّد معتمد (‎BSP) ك‎360dialog أو ‎Twilio: من سوق التطبيقات، ثبّت تطبيق ‎WhatsApp وأدخل بيانات ‎BSP. تصل محادثات ‎WhatsApp إلى الطابور نفسه مع سجل موحّد. يتنقّل الوكلاء بين القنوات دون تغيير الأداة — وهذه الميزة الأساسية لقناة متعددة أصلية.

‎SSO مجاني في الاستضافة الذاتية. يدعم ‎Rocket.Chat كلًا من ‎LDAP/Active Directory و‎SAML 2.0 و‎OAuth (مثل ‎Google و‎GitHub و‎GitLab) دون تكلفة اشتراك إضافية. على ‎Slack، يقتصر ‎SAML SSO على خطط ‎Business+؛ أما على ‎Rocket.Chat ذاتي الاستضافة فيمكن تفعيله في Administration > Settings > LDAP أو > SAML. وهذا مميّز رئيسي للشركات التي تستخدم ‎Active Directory أو ‎IdP مثل ‎Keycloak.

تحديث ‎Rocket.Chat ب‎Docker (rolling update)

01

نسخ احتياطي ل‎MongoDB قبل أي تحديث

نفّذ ‎mongodump من داخل الحاوية: docker exec <mongodb_container> mongodump --out /data/backup/. انسخ ال‎dump خارج الخادم (عبر ‎scp أو ‎rsync). لا تتجاهل هذه الخطوة: بعض ترحيلات مخطط ‎Rocket.Chat لا رجعة فيها.

02

تحديث صورة ‎Docker

في ملف ‎docker-compose.yml، غيّر وسم الصورة (مثال: ‎rocket.chat:7.4 إلى ‎rocket.chat:7.5). ثم نفّذ ‎docker compose pull && docker compose up -d. تتوقف ‎Rocket.Chat، تنطلق الصورة الجديدة وتُرحّل قاعدة البيانات. راقِب السجلات: docker compose logs -f rocketchat.

03

التحقّق من الترحيل والتراجع عند الحاجة

بعد إعادة التشغيل، سجّل الدخول وتحقّق من Administration > Info أن الإصدار المعروض مطابق للهدف. إذا فشل الترحيل، أوقف الحاوية، استعد ال‎dump ب‎mongorestore، وأعد الصورة القديمة. لا تتيح ‎Rocket.Chat تراجعًا تلقائيًا — ال‎dump هو شبكة الأمان الوحيدة.

استكشاف الأخطاء: مشكلات حقيقية شائعة

‎replica set غير مهيّأ: هذا هو الخطأ الأول. من دون ‎rs.initiate()، يكون ‎oplog غير متاح والدردشة الحقيقية معطّلة. إذا استخدمت صورة ‎Bitnami، مرّر ‎MONGODB_REPLICA_SET_MODE=primary و‎MONGODB_REPLICA_SET_KEY. ‎WebSocket منقطع: إذا وصلت الرسائل عبر ‎HTTP polling بدل ‎WebSocket، تحقّق أن ‎reverse proxy يمرّر ترويستَي ‎Upgrade و‎Connection. مساعد التثبيت متاح علنيًا: إذا لم تمرّر ‎OVERWRITE_SETTING_Show_Setup_Wizard=completed، يستطيع أي شخص إنشاء حساب المسؤول. ذاكرة ‎MongoDB مستنزفة: يمكن ل‎WiredTiger استهلاك 50٪ من الذاكرة افتراضيًا — حدّده ب‎--wiredTigerCacheSizeGB 0.5. خطأ ‎SSL داخلي: تحقّق أن ‎ROOT_URL يحتوي نطاقك بصيغة ‎HTTPS دون شرطة مائلة في النهاية.

مراقبة نسختك من ‎Rocket.Chat

لاكتشاف الأعطال سريعًا، ضع ثلاث طبقات للمراقبة. طبقة الحاويات: يعطي ‎docker stats --no-stream المعالج والذاكرة والشبكة لحظيًا. اضبط تنبيهًا عند توقف حاوية عبر ‎docker events --filter event=die في سكريبت ‎systemd؛ حلقة إعادة تشغيل بسيطة تكفي للحالات غير الحرجة. الطبقة التطبيقية: تعرض ‎Rocket.Chat مقاييس ‎Prometheus على ‎/metrics (فعّلها في Administration > Settings > General > Enable Prometheus). اربطها ب‎Grafana للوحات معلومات المستخدمين المتصلين والرسائل في الدقيقة وزمن استجابة ‎WebSocket وحجم قاعدة ‎MongoDB. اضبط تنبيهات على العتبات الحرجة: استهلاك ذاكرة ‎MongoDB يتجاوز 80٪، طابور رسائل معلّق، أو شهادة ‎SSL ستنتهي في أقل من 14 يومًا. الطبقة التحتية: فحص ‎HTTP خارجي على عنوان خادمك لتلقّي تنبيه عند أي انقطاع شامل. راقِب أيضًا أحجام أجزاء ‎Docker بانتظام: قاعدة ‎MongoDB والملفات التي يرفعها المستخدمون قد تنمو بسرعة على نسخة نشطة.

خطأ ‎replica set في ‎MongoDB: إذا ظهر في السجلات MongoServerError: not primary and secondaryOk=false، فاتصالك يشير إلى عقدة ثانوية أو لم يُنتخَب رئيس بعد. تحقّق ب‎docker exec -it <mongodb> mongosh أن حالة العضو ‎PRIMARY عبر ‎rs.status(). إذا لم يُهيّأ ‎replica set، نفّذ ‎rs.initiate() يدويًا مرة واحدة.

‎Rocket.Chat مقابل ‎Mattermost

المعيار‎Rocket.Chat‎Mattermost
قاعدة البيانات‎MongoDB (‎replica set إلزامي)‎PostgreSQL
بصمة الذاكرةأكثر نهمًا (‎MongoDB)أكثر اقتصادًا عند الحِمل نفسه
القناة المتعددة / دعم العملاءوحدة أصلية مدمجةعبر تكاملات طرف ثالث
مكالمات صوتية/مرئيةمدمجةعبر إضافات / ‎Calls (نسخة مدفوعة)
الاتحاد‎Matrixمحدود
‎SSO (‎LDAP / ‎SAML)مجاني في الاستضافة الذاتيةمدفوع في ما يتجاوز ‎Pro
سوق التطبيقاتغني وأصليإضافات، كتالوج أكثر محدودية
الجمهور المستهدفتواصل موحّد + دعم العملاءالفِرَق التقنية و‎ChatOps
الإعدادمزيد من الضبط (‎replica set)أكثر مباشرةً مع ‎PostgreSQL

انشُر ‎Rocket.Chat على خادم ‎VPS Cloud من ‎ServOrbit

مع خادم ‎VPS Cloud بموارد مخصّصة و‎Docker جاهز للاستخدام، أقِم ‎Rocket.Chat و‎MongoDB في ‎replica set دون صداع. التواصل الداخلي ودعم العملاء مجتمعان على بنيتك التحتية.

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

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