ما الذي يتغيّر في 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 احتياطياً
وضع Rocket.Chat في وضع القراءة فقط
قبل أي نسخ احتياطي، أخطر مستخدميك وانقل النظام إلى وضع الصيانة. في إدارة Rocket.Chat، انتقل إلى الإدارة ← عام ← وضع الصيانة وفعّل وضع القراءة فقط. يمنع هذا كتابة رسائل جديدة بعد التفريغ وضياعها عند التحويل.
بدلاً من ذلك، إذا لم يتوفر هذا الوضع، أوقف حاوية Rocket.Chat ببساطة:
docker compose stop rocketchatتصدير قاعدة 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 وغيرها.تصدير الملفات المرفقة (المرفوعات)
الملفات المرفقة المخزّنة في GridFS أو نظام الملفات المحلي ليست جزءاً من تفريغ MongoDB — يجب نسخها بشكل منفصل.
إذا كنت تستخدم التخزين المحلي (الخيار الافتراضي):
docker cp <rocketchat-container>:/app/uploads /tmp/rc-uploadsإذا كنت تستخدم bucket S3 متوافقاً، سجّل معاملات الاتصال — ستعيد تهيئتها في Mattermost. تُشير mmetl إلى الملفات المرفقة لكنها لا تنقلها.
تصدير المستخدمين عبر 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
الحصول على إعداد 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إنشاء الأحجام وتشغيل المجموعة
أنشئ مجلدات الأحجام قبل التشغيل الأول:
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 قبل المتابعة.إنشاء حساب المشرف
افتح
https://chat.yourdomain.com في متصفحك. عند أول تسجيل دخول، يطلب Mattermost إنشاء حساب مشرف. أدخل البريد الإلكتروني واسم المستخدم وكلمة المرور للمشرف الأوّلي — سيكون هذا الحساب منفصلاً عن الحسابات المستوردة من Rocket.Chat.
نقل السجل والمستخدمين باستخدام mmetl
تثبيت 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 للتحقق من صحة التفريغ قبل إنتاج ملف الاستيراد.تحويل تفريغ 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تشغيل الاستيراد في 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.
التحقق من النتائج والقيود المعروفة
بعد الاستيراد، تحقّق من النقاط التالية:
- يجب أن تكون القنوات العامة والخاصة موجودة في Mattermost مع سجلها التاريخي.
- تُستورَد أسماء المستخدمين لكن كلمات المرور لا تُستورَد — يجب على كل مستخدم إعادة تعيين كلمة مروره أو تسجيل الدخول عبر LDAP.
- تتطلب الملفات المرفقة تمريراً ثانياً مع --attachments-dir.
- تُسطَّح خيوط المناقشة (الردود المتداخلة) إذا لم يُتعرَّف على بنيتها.
إعداد LDAP في Mattermost Community
تفعيل 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 إذا كانت بنيتك التحتية تدعمه.
إعداد تعيينات السمات
يقرأ 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)اختبار الاتصال والمزامنة
انقر على 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.