دليل النشر

الهجرة من ‎Rocket.Chat‎ إلى ‎Mattermost‎ على خادم ‎VPS‎

انشر على VPS Cloud ←

دليل عملي

الهجرة من ‎Rocket.Chat‎ إلى ‎Mattermost‎ على خادم ‎VPS‎

الاستضافة الذاتية11 دقيقةً للقراءةعدد الخطوات: 14

أعلنت ملاحظات الإصدار ‎8.8.0‎ الصادرة في 3 سبتمبر 2026 رسمياً أن ‎LDAP‎ و‎SAML‎ سيصبحان ميزتين حصريتين للخطة المدفوعة ابتداءً من الإصدار ‎9.0‎. إذا كنت تُدير نسخة مجتمعية تعمل بمصادقة مؤسسية، فنافذة الهجرة مفتوحة الآن. يغطي هذا الدليل نسخ بيانات ‎Rocket.Chat‎ احتياطياً، وتثبيت ‎Mattermost‎ على خادم ‎VPS‎ خاصك، ونقل السجل والمستخدمين عبر ‎mmetl‎، وإعداد ‎LDAP‎ في ‎Mattermost Community‎ — الذي يتضمّنها دون أي قيد على الخطة.

المحتويات· ما الذي يتغيّر في ‎Rocket.Chat 9.0‎1/11
  1. 01ما الذي يتغيّر في ‎Rocket.Chat 9.0‎
  2. 02لماذا ‎Mattermost Community‎ بديل موثوق
  3. 03المتطلبات التقنية
  4. 04نسخ ‎Rocket.Chat‎ احتياطياً
  5. 05تثبيت ‎Mattermost‎ على خادم ‎VPS‎
  6. 06نقل السجل والمستخدمين باستخدام ‎mmetl‎
  7. 07إعداد ‎LDAP‎ في ‎Mattermost Community‎
  8. 08خطة التحويل: ابقِ ‎Rocket.Chat‎ في وضع القراءة فقط أثناء الهجرة
  9. 09استكشاف الأخطاء الشائعة وإصلاحها
  10. 10‎Rocket.Chat Community 9.0‎ مقابل ‎Mattermost Community‎
  11. 11‎Mattermost Community‎، منصة مستقرة على المدى البعيد

ما الذي يتغيّر في ‎Rocket.Chat 9.0‎

الإصدار ‎8.8.0‎ الصادر في 3 سبتمبر 2026 لا يزال يُشغّل ‎LDAP‎ و‎SAML‎ على النسخ المجتمعية، غير أنه يُضيف تحذيرات صريحة في لوحة الإدارة: ابتداءً من الإصدار ‎9.0‎، سيتطلّب هذان المكوّنان وجود وحدة ترخيص ‎ldap-enterprise‎ أو ‎saml-enterprise‎. تُسجّل سجلات النظام منذ الآن تحذيرات للمساحات غير المرخّصة التي تُصادق مستخدميها عبر إحدى هاتين الطريقتين.

عملياً: إذا كان دليل مؤسستك (‎Active Directory‎ أو ‎OpenLDAP‎) أو مزوّد الهوية (‎Okta‎ أو ‎Azure AD‎ أو ‎Keycloak‎) متصلاً بنسخة ‎Rocket.Chat Community‎ الحالية، فستتوقف تلك الاتصالات عند الترقية إلى ‎9.0‎ دون اشتراك في الخطة المدفوعة.

لماذا ‎Mattermost Community‎ بديل موثوق

  • ‎LDAP‎ و‎SAML‎ مضمّنان بلا ترخيص — يشمل ‎Mattermost‎ مصادقة ‎Active Directory‎ و‎SAML‎ في إصداره مفتوح المصدر، برخصة ‎MIT‎ للخادم و‎Apache 2.0‎ للمساهمات، دون أي اشتراط لخطة مدفوعة.
  • ‎PostgreSQL‎ أصلي — يعتمد ‎Mattermost‎ على ‎PostgreSQL‎، موثَّق بشكل جيد وسهل النسخ الاحتياطي عبر ‎pg_dump‎ وأكثر شيوعاً من ‎MongoDB‎ في بيئات ‎Docker‎ المستضافة ذاتياً.
  • ‎mmetl‎، أداة هجرة رسمية — تحوّل أداة ‎mmetl‎ من فريق ‎Mattermost‎ نتيجة ‎mongodump‎ من ‎Rocket.Chat‎ إلى ملف استيراد ‎JSONL‎ متوافق مع ‎mmctl import‎، يشمل القنوات والمستخدمين والرسائل.
  • بصمة ذاكرة أخف — يمكن لـ‎Mattermost‎ البدء بـ‎2 GB‎ من الذاكرة لفرق أقل من خمسين مستخدماً؛ يتطلّب ‎Rocket.Chat‎ مجموعة نسخ ‎MongoDB‎ تستهلك موارد أكبر عند حجم مكافئ.
  • تطبيقات رسمية لسطح المكتب والهاتف — تشير تطبيقات ‎iOS‎ و‎Android‎ و‎macOS‎ و‎Windows‎ إلى نطاقك الخاص فور التثبيت.
  • سجل وملفات مرفقة بلا حدود — لا نافذة زمنية منزلقة، ولا قطع عند حجم رسائل معيّن، كل شيء مخزَّن على قرصك أو في ‎bucket S3‎ الخاص بك.

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

تحقّق من توفّر ما يلي قبل البدء.

للخادم الذي سيستضيف ‎Mattermost‎: خادم ‎VPS‎ بـنواتَي معالج ‎vCPU‎ و‎4 GB‎ من الذاكرة كحدٍّ أدنى — يكفي ‎2 GB‎ تقنياً لـ‎Mattermost‎ وحده، لكن ‎PostgreSQL‎ يعمل على نفس المضيف خلال الهجرة مما يجعل ‎4 GB‎ أكثر ارتياحاً. خطّط لـ40 GB من SSD كحدٍّ أدنى. يجب تثبيت ‎Docker‎ و‎Docker Compose‎. مطلوب عنوان ‎IPv4‎ مخصص ونطاق فرعي ‎chat.yourdomain.com‎ مع سجل ‎A‎.

للهجرة: وصول ‎SSH‎ لخادم ‎Rocket.Chat‎ الحالي، أدوات ‎mongodump‎ مثبّتة على ذلك الخادم، و‎mmetl v0.6.0‎ (صدر في 11 سبتمبر 2026). شهادة ‎TLS‎ صالحة للنطاق المستهدف.

نسخ ‎Rocket.Chat‎ احتياطياً

  1. وضع ‎Rocket.Chat‎ في وضع القراءة فقط

    قبل أي نسخ احتياطي، أخطر مستخدميك وانقل النظام إلى وضع الصيانة. في إدارة ‎Rocket.Chat‎، انتقل إلى الإدارة ← عام ← وضع الصيانة وفعّل وضع القراءة فقط. يمنع هذا كتابة رسائل جديدة بعد التفريغ وضياعها عند التحويل.

    بدلاً من ذلك، إذا لم يتوفر هذا الوضع، أوقف حاوية ‎Rocket.Chat‎ ببساطة:

    docker compose stop rocketchat
  2. تصدير قاعدة ‎MongoDB‎ باستخدام ‎mongodump‎

    تتوقع ‎mmetl‎ مجلداً منتجاً بواسطة ‎mongodump‎، لا ملفاً مضغوطاً. شغّل التفريغ من المضيف أو من داخل حاوية ‎MongoDB‎:

    # من المضيف إذا كان mongodump مثبَّتاً
    mongodump --uri="mongodb://localhost:27017/rocketchat" --out /tmp/rc-dump
    
    # أو من حاوية Docker
    docker exec <mongo-container> mongodump \
      --db rocketchat --out /dump
    docker cp <mongo-container>:/dump /tmp/rc-dump

    تحقّق من أن ‎/tmp/rc-dump/rocketchat/‎ يحتوي على ملفات ‎.bson‎ و‎.json‎ لمجموعات ‎rocketchat_message‎ و‎users‎ و‎rocketchat_room‎ وغيرها.

  3. تصدير الملفات المرفقة (المرفوعات)

    الملفات المرفقة المخزّنة في ‎GridFS‎ أو نظام الملفات المحلي ليست جزءاً من تفريغ ‎MongoDB‎ — يجب نسخها بشكل منفصل.

    إذا كنت تستخدم التخزين المحلي (الخيار الافتراضي):

    docker cp <rocketchat-container>:/app/uploads /tmp/rc-uploads

    إذا كنت تستخدم ‎bucket S3‎ متوافقاً، سجّل معاملات الاتصال — ستعيد تهيئتها في ‎Mattermost‎. تُشير ‎mmetl‎ إلى الملفات المرفقة لكنها لا تنقلها.

  4. تصدير المستخدمين عبر ‎REST API‎ (اختياري)

    للحصول على جرد بالحسابات قبل الهجرة، يسمح ‎API‎ الخاص بـ‎Rocket.Chat‎ بتصدير قائمة المستخدمين النشطين:

    curl -H "X-Auth-Token: <token>" \
         -H "X-User-Id: <admin-id>" \
         "https://chat.yourdomain.com/api/v1/users.list?count=200" \
      | python3 -c "import sys,json; [print(u['username'], u.get('emails',[{}])[0].get('address','')) for u in json.load(sys.stdin)['users']]"

    احتفظ بهذه القائمة للتحقق من أن جميع الحسابات أُنشئت بشكل صحيح في ‎Mattermost‎ بعد الاستيراد الجماعي.

تثبيت ‎Mattermost‎ على خادم ‎VPS‎

  1. الحصول على إعداد ‎Docker Compose‎ الرسمي

    يُبقي فريق ‎Mattermost‎ على مستودع ‎docker‎ يحتوي إعداد ‎Compose‎ جاهزاً للاستخدام:

    git clone https://github.com/mattermost/docker /opt/mattermost
    cd /opt/mattermost
    cp env.example .env

    افتح ‎.env‎ وأدخل على الأقل:

    DOMAIN=chat.yourdomain.com
    MM_SERVICESETTINGS_SITEURL=https://chat.yourdomain.com
    POSTGRES_USER=mmuser
    POSTGRES_PASSWORD=<كلمة-مرور-قوية>
    POSTGRES_DB=mattermost
  2. إنشاء الأحجام وتشغيل المجموعة

    أنشئ مجلدات الأحجام قبل التشغيل الأول:

    mkdir -p ./volumes/app/mattermost/{config,data,logs,plugins,client/plugins,bleve-indexes}
    sudo chown -R 2000:2000 ./volumes/app/mattermost

    شغّل المجموعة الكاملة (‎Mattermost‎ + ‎PostgreSQL‎ + ‎nginx‎ مع شهادة ‎Let's Encrypt‎ مدمجة):

    docker compose -f docker-compose.yml -f docker-compose.nginx.yml up -d

    انتظر حتى تصبح حاوية ‎Mattermost‎ في حالة ‎healthy‎ قبل المتابعة.

  3. إنشاء حساب المشرف

    افتح ‎https://chat.yourdomain.com‎ في متصفحك. عند أول تسجيل دخول، يطلب ‎Mattermost‎ إنشاء حساب مشرف. أدخل البريد الإلكتروني واسم المستخدم وكلمة المرور للمشرف الأوّلي — سيكون هذا الحساب منفصلاً عن الحسابات المستوردة من ‎Rocket.Chat‎.

نقل السجل والمستخدمين باستخدام ‎mmetl‎

  1. تثبيت ‎mmetl‎

    نزّل الملف الثنائي لـ‎mmetl v0.6.0‎ (صدر في 11 سبتمبر 2026) من إصدارات ‎GitHub‎:

    curl -L https://github.com/mattermost/mmetl/releases/download/v0.6.0/mmetl-linux-amd64 \
      -o /usr/local/bin/mmetl
    chmod +x /usr/local/bin/mmetl
    mmetl version

    تغيير جوهري في ‎v0.6.0‎: حُذفت الأمر الفرعي ‎mmetl check‎. استخدم ‎mmetl transform ... --dry-run‎ للتحقق من صحة التفريغ قبل إنتاج ملف الاستيراد.

  2. تحويل تفريغ ‎Rocket.Chat‎ إلى ملف استيراد ‎Mattermost‎

    شغّل عملية التحويل مشيراً إلى المجلد الذي يحتوي مجموعات ‎BSON‎ المُصدَّرة (المجلد الفرعي ‎rocketchat‎ من التفريغ) واسم فريق ‎Mattermost‎ المستهدف:

    mmetl transform rocketchat \
      --team my-team \
      --dump-dir /tmp/rc-dump/rocketchat \
      --output /tmp/mattermost-import

    تُنتج ‎mmetl‎ ملف ‎import.jsonl‎ ومجلد ‎bulk-export-attachments/‎. للاختبار دون إنتاج مخرجات:

    mmetl transform rocketchat \
      --team my-team \
      --dump-dir /tmp/rc-dump/rocketchat \
      --dry-run
  3. تشغيل الاستيراد في ‎Mattermost‎ عبر ‎mmctl‎

    انسخ ملف الاستيراد إلى مجلد بيانات ‎Mattermost‎، ثم شغّل الاستيراد الجماعي:

    # نسخ إلى الحاوية
    docker cp /tmp/mattermost-import/import.jsonl \
      <mattermost-container>:/mattermost/data/import.jsonl
    
    # تشغيل الاستيراد من mmctl (داخل الحاوية)
    docker exec <mattermost-container> mmctl import bulk \
      /mattermost/data/import.jsonl --bypass-upload

    لمتابعة التقدم، راجع مهام الاستيراد في System Console → Bulk Import.

  4. التحقق من النتائج والقيود المعروفة

    بعد الاستيراد، تحقّق من النقاط التالية:
    - يجب أن تكون القنوات العامة والخاصة موجودة في ‎Mattermost‎ مع سجلها التاريخي.
    - تُستورَد أسماء المستخدمين لكن كلمات المرور لا تُستورَد — يجب على كل مستخدم إعادة تعيين كلمة مروره أو تسجيل الدخول عبر ‎LDAP‎.
    - تتطلب الملفات المرفقة تمريراً ثانياً مع ‎--attachments-dir‎.
    - تُسطَّح خيوط المناقشة (الردود المتداخلة) إذا لم يُتعرَّف على بنيتها.

إعداد ‎LDAP‎ في ‎Mattermost Community‎

  1. تفعيل ‎LDAP‎ في ‎System Console‎

    في ‎System Console → Authentication → AD/LDAP‎، فعّل ‎LDAP‎ وأدخل معاملات الاتصال:

    LDAP Server: ldap.yourdomain.com
    Port: 389 (LDAP) أو 636 (LDAPS)
    Bind Username: cn=mattermost-svc,ou=serviceaccounts,dc=yourdomain,dc=com
    Bind Password: <كلمة-مرور-حساب-الخدمة>
    Base DN: ou=users,dc=yourdomain,dc=com

    فعّل ‎LDAP over TLS (LDAPS)‎ أو ‎StartTLS‎ إذا كانت بنيتك التحتية تدعمه.

  2. إعداد تعيينات السمات

    يقرأ ‎Mattermost‎ سمات ‎LDAP‎ لملء ملفات التعريف. التعيينات الشائعة لـ‎Active Directory‎:

    ID Attribute:        objectGUID
    Username Attribute:  sAMAccountName
    Email Attribute:     mail
    First Name:          givenName
    Last Name:           sn

    لـ‎OpenLDAP‎، استبدل ‎sAMAccountName‎ بـ‎uid‎ و‎objectGUID‎ بـ‎entryUUID‎.

    في ‎User Filter‎، قيّد المزامنة بأعضاء المجموعة المطلوبة:

    (memberOf=cn=mattermost-users,ou=groups,dc=yourdomain,dc=com)
  3. اختبار الاتصال والمزامنة

    انقر على ‎AD/LDAP Test‎ في أسفل الصفحة للتحقق من صحة الاتصال والربط. في حالة حدوث خطأ ‎LDAP Result Code 49 'Invalid Credentials'‎، تحقّق من ‎DN‎ حساب الخدمة وكلمة مروره.

    شغّل أول مزامنة يدوية عبر ‎AD/LDAP Synchronize Now‎. سيُربط المستخدمون الذين يتطابق بريدهم الإلكتروني مع حساب مُستورَد عبر ‎mmetl‎ تلقائياً.

خطة التحويل: ابقِ ‎Rocket.Chat‎ في وضع القراءة فقط أثناء الهجرة

لا تقطع ‎Rocket.Chat‎ قبل التحقق من استيراد ‎Mattermost‎ في ظروف حقيقية. الاستراتيجية الموصى بها هي تشغيل كلا النظامين بالتوازي لمدة 48 إلى 72 ساعة:

1. فعّل وضع الصيانة / القراءة فقط على ‎Rocket.Chat‎ فور الانتهاء من التفريغ.
2. اضبط ‎Mattermost‎ على نطاق فرعي منفصل (‎chat-new.yourdomain.com‎) خلال فترة التحقق.
3. ادعُ مجموعة تجريبية (5 إلى 10 أشخاص) لاستخدام ‎Mattermost‎ والإبلاغ عن القنوات أو الرسائل المفقودة.
4. بعد التحقق، حوّل ‎DNS‎ الخاص بـ‎chat.yourdomain.com‎ إلى خادم ‎Mattermost VPS‎ الجديد.
5. أبقِ نسخة ‎Rocket.Chat‎ في وضع القراءة فقط لمدة 30 يوماً إضافية ليتمكن المستخدمون من استرداد الروابط المشاركة سابقاً.

استكشاف الأخطاء الشائعة وإصلاحها

‎mmetl‎: unexpected end of JSON input — يجب أن يكون المجلد الممرَّر لـ‎--dump-dir‎ هو المجلد الفرعي ‎rocketchat/‎ الذي يحتوي ملفات ‎.bson‎، لا المجلد الأب للتفريغ. تحقّق عبر ‎ls /tmp/rc-dump/rocketchat/*.bson‎.

استيراد جزئي، قنوات مفقودة — تتجاوز ‎mmetl‎ القنوات الخاصة التي لا يُوجَد مالكها في مجموعة ‎users‎. تحقّق من وجود المستخدمين المعنيين في التفريغ.

فشل ربط ‎LDAP‎ (رمز 49) — السبب الأكثر شيوعاً هو ‎DN‎ مشكَّل بشكل خاطئ لحساب الخدمة. اختبر الاتصال من الخادم ‎VPS‎ باستخدام ‎ldapsearch‎ قبل تهيئة ‎Mattermost‎.

اتصالات ‎WebSocket‎ غير مستقرة — إذا أظهر ‎Mattermost‎ انقطاعات متكررة، تحقّق من أن الوكيل العكسي يمرّر رأسَي ‎Upgrade‎ و‎Connection‎ بشكل صحيح.

ملفات مرفقة مفقودة — تشغيل ‎mmctl import bulk‎ دون ‎--attachments-dir‎ يُنشئ الرسائل لكن يترك الملفات المرفقة في حالة خطأ. أعد التشغيل مع مجلد ‎bulk-export-attachments/‎ المُنتَج بواسطة ‎mmetl‎.

‎Rocket.Chat Community 9.0‎ مقابل ‎Mattermost Community‎

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

المعيار‎Rocket.Chat Community 9.0‎‎Mattermost Community‎
‎LDAP‎ / ‎Active Directory‎مدفوع (منذ 9.0)مضمَّن بلا قيود
‎SAML SSO‎مدفوع (منذ 9.0)مضمَّن بلا قيود
قاعدة البيانات‎MongoDB‎ (مطلوب ‎replica set‎)‎PostgreSQL‎
الذاكرة الدنيا‎4 GB‎ (‎MongoDB replica set‎)‎2 GB‎ (فريق < 50 مستخدماً)
الرخصة‎AGPL-3.0‎‎MIT‎ (الخادم) / ‎Apache 2.0‎
أداة الهجرةتصدير ‎JSON/CSV‎ أصلي‎mmetl + mmctl bulk import‎
سجل غير محدودنعمنعم
قنوات متعددة (دردشة مباشرة، بريد)نعم (أصلي)محدود (امتدادات)

‎Mattermost Community‎، منصة مستقرة على المدى البعيد

الهجرة من ‎Rocket.Chat‎ إلى ‎Mattermost‎ قرار هيكلي لا مجرد حلٍّ مؤقت. بوضع مصادقة ‎LDAP‎ و‎SAML‎ خلف ترخيص مدفوع، تُشير ‎Rocket.Chat‎ إلى اتجاه نموذجها التجاري — وهذا حقها. اتّخذ ‎Mattermost‎ الخيار المعاكس بإبقاء هذه الميزات في إصداره مفتوح المصدر، بما في ذلك للمؤسسات التي لا تمتلك ميزانية اشتراك.

على خادم ‎VPS‎ مع ‎PostgreSQL‎، يوفر ‎Mattermost‎ أساساً يمكن التنبؤ به: النسخ الاحتياطية مجرد عمليات ‎pg_dump‎ بسيطة، والتحديثات تتم عبر ‎Docker Compose‎، وتتيح ‎REST API‎ الموثّقة تكامل أدوات بنيتك التحتية دون قيود على الخطة. يبقى سجل تواصل فريقك على قرصك، قابلاً للتصدير والمراجعة في أي وقت.

انظر أيضاً: دليل تثبيت ‎Mattermost‎ على ‎VPS‎، مقارنة ‎Mattermost‎ و‎Rocket.Chat‎ 2026 واستضافة ‎Rocket.Chat‎ على ‎VPS‎.

انشر ‎Mattermost‎ على خادم ‎ServOrbit Cloud VPS‎

خادم ‎VPS‎ بصلاحيات ‎root‎ وعنوان ‎IPv4‎ مخصص وأقراص ‎NVMe SSD‎ — الأساس لاستضافة ‎Mattermost‎ مع ‎PostgreSQL‎ وإدارة مصادقة ‎LDAP‎ الخاصة بفريقك.

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

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

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