دليل النشر

الهجرة من ‎Slack‎ إلى ‎Mattermost‎ أو ‎Rocket.Chat‎ على ‎VPS

انشر على VPS Cloud →

مقارنات10 دقيقة قراءة

الهجرة من ‎Slack‎ إلى ‎Mattermost‎ أو ‎Rocket.Chat‎ على ‎VPS

حين طالب ‎Slack‎ نادي ‎Hack Club‎ بـ‎50,000 $‎ فورًا ثم ‎200,000 $‎ سنويًا تحت طائلة حذف أحد عشر عامًا من السجل، لم تعد المسألة مقارنة خطط، بل سؤالًا عن ملكية سجل تواصلكم. يُجيب ‎Mattermost‎ و‎Rocket.Chat‎ بالاستضافة الذاتية: رسائلكم وقنواتكم وتكاملاتكم على خادم ‎VPS‎ تتحكمون فيه. يغطّي هذا الدليل المتطلبات وتصدير ‎Slack‎ والنشر بـ‎Docker‎ واستيراد السجل.

لماذا باتت الهجرة من ‎Slack‎ أمرًا عاجلًا

في عام 2024، تلقّى نادي ‎Hack Club‎ مطالبة من ‎Slack‎: 50,000 $ فورًا ثم 200,000 $ سنويًا، أو حذف أحد عشر عامًا من السجل المجتمعي. ليس هذا حالةً استثنائية، بل منطق ناشر يعلم أن سجلّكم أصل استراتيجي واتخذ منه ذريعةً لخطة ‎Enterprise‎. آليتا الاحتجاز تتضافران: أولاهما السجل، إذ لا يُتيح ‎Slack‎ على الخطتين المجانية و‎Pro‎ إلا نافذةً متحركة، وتستلزم الرؤية الكاملة خطة ‎Business+‎ أو ‎Enterprise Grid‎. وثانيتهما ‎SSO‎: الاتصال بمزوّد الهوية (‎Okta‎ أو ‎Azure AD‎ أو ‎Google Workspace‎) محجوز لخطة ‎Enterprise‎ التي تُكلّف نحو 20 $ للمستخدم شهريًا. لفريق من خمسين شخصًا يعني ذلك 12,000 $ سنويًا مقابل ميزة يوفّرها ‎Mattermost‎ و‎Rocket.Chat‎ مجانًا منذ لحظة التثبيت. السؤال الحقيقي إذًا ليس «هل ‎Slack‎ جيد؟» بل «بأي ثمن نقبل الاعتماد على ناشر للوصول إلى محادثاتنا الخاصة مع العملاء؟».

الفوائد الملموسة لاستضافة منصة مراسلة الفريق ذاتيًا

  • سجل غير محدود — جميع رسائلكم وقنواتكم ومرفقاتكم متاحة إلى أجل غير مسمى دون تكلفة إضافية.
  • ‎SSO‎ و‎LDAP‎ أصليّان ومجانيّان — اربطوا دليل شركتكم دون الحاجة إلى خطة مؤسسية لدى الناشر.
  • البيانات تحت سيطرتكم — مراسلات العملاء والعقود المتناقَشة في الرسائل المباشرة والملفات المشتركة تبقى على بنيتكم التحتية.
  • تكلفة يمكن التنبؤ بها — سعر ‎VPS‎ شهري ثابت، لا اشتراك مرتبط بنمو فريقكم.
  • تكاملات مخصصة — ‎webhook‎ وبوتات و‎API‎ دون قيود خطة.
  • امتثال ميسّر — احتفاظ قابل للتهيئة وتصدير عند الطلب وسجل تدقيق لتلبية المتطلبات القانونية أو التعاقدية.
  • استقلالية عن قرارات الناشر — لا تغييرات مفاجئة في الأسعار ولا نافذة 30 يومًا للتكيّف.

‎Mattermost‎ مقابل ‎Rocket.Chat‎ مقابل ‎Slack Enterprise‎

المعيار‎Mattermost‎ (استضافة ذاتية)‎Rocket.Chat‎ (استضافة ذاتية)‎Slack Enterprise Grid‎
الرخصة‎MIT‎ (الخادم) / ‎Apache 2.0‎‎AGPL-3.0‎مملوكة
الذاكرة الدنيا‎2 GB‎ (فريق أقل من 50)‎4 GB‎ (‎replica set MongoDB‎ إلزامي)‎SaaS‎، لا خادم لإدارته
‎SSO / SAML / LDAP‎مجاني في الاستضافة الذاتيةمجاني في الاستضافة الذاتيةنحو ‎20 $/user/month‎ (خطة ‎Enterprise‎)
السجل الكاملغير محدود على قرصكمغير محدود على قرصكممشروط بخطة مدفوعة
القنوات المتعددة (‎live chat‎، بريد، ‎WhatsApp‎…)محدود (إضافات المجتمع)أصلي وكامللا (مراسلات داخلية فقط)
الاستيراد من ‎Slack‎أداة رسمية `mattermost import slack`استيراد ‎Slack‎ عبر واجهة الإدارةغير منطبق

متطلبات الخادم قبل البدء

يبدأ الاختيار بين ‎Mattermost‎ و‎Rocket.Chat‎ من المتطلبات المادية. يستخدم ‎Mattermost‎ قاعدة بيانات ‎PostgreSQL‎ ويمكنه العمل بـ2 GB من الذاكرة لفريق أقل من خمسين، وخادم ‎VPS‎ متواضع يكفي للهجرة الأولية. أما ‎Rocket.Chat‎ فيعتمد ‎MongoDB‎ في وضع ‎replica set‎: حتى بعقدة واحدة، هذا الوضع إلزامي منذ الإصدار 6، مما يرفع الحد الأدنى إلى 4 GB. برمجيًا، كلاهما يستلزم ‎Docker‎ و‎Docker Compose‎، ونطاقًا فرعيًا مخصصًا مع شهادة ‎SSL‎، وخادم ‎SMTP‎ للإشعارات والدعوات. افتحوا المنفذ 443 وتحققوا أن حركة ‎WebSocket‎ ليست محجوبة، فهي أول نقطة عثرة بعد التثبيت. أخيرًا، خططوا لمساحة قرص تناسب حجم الملفات المشتركة التي تنوون استيرادها.

تصدير سجل ‎Slack‎

01

الوصول إلى التصدير من إدارة ‎Slack‎

سجّلوا دخولكم كمدير لمساحة العمل، انتقلوا إلى الإعدادات والإدارة > إعدادات مساحة العمل > استيراد/تصدير البيانات. تبويب التصدير متاح في خطة ‎Pro‎ وما فوقها.

02

اختيار النطاق الزمني وإطلاق التصدير

اختاروا «جميع الرسائل» لتصدير كامل السجل المتاح. ينشئ ‎Slack‎ أرشيف ‎ZIP‎ يحتوي ملف ‎JSON‎ لكل قناة عامة، وبيانات المستخدمين، وقائمة القنوات. القنوات الخاصة والرسائل المباشرة لا تُدرج إلا في خطة ‎Business+‎ أو ‎Enterprise‎.

03

تنزيل الأرشيف والتحقق من محتواه

عند اكتمال التصدير (من دقائق إلى ساعات حسب الحجم)، نزّلوا ملف ‎ZIP‎. فكّوا ضغطه محليًا وتحققوا من وجود مجلدات القنوات وملفَي users.json وchannels.json؛ هذه الملفات الثلاثة هي ما تتوقعه أداة الاستيراد في ‎Mattermost‎.

04

نقل الأرشيف إلى الخادم ‎VPS‎

انسخوا الأرشيف إلى الخادم باستخدام: scp slack_export.zip user@your-vps:/opt/mattermost/imports/. تجنّبوا فكّ الضغط على الخادم قبل الاستيراد — تعمل الأداة مباشرةً على ملف ‎ZIP‎.

نشر ‎Mattermost‎ على ‎VPS‎ باستخدام ‎Docker‎

01

إنشاء هيكل المجلدات

على الخادم، أنشئوا مجلد العمل: mkdir -p /opt/mattermost/{config,data,logs,plugins,client/plugins,bleve-indexes,imports}. ستُوصَل هذه المجلدات كأحجام ‎Docker‎ وتحتوي الإعدادات وبيانات المستخدمين والملفات المستوردة.

02

كتابة ملف ‎docker-compose.yml‎

عرّفوا خدمتين: postgres (صورة postgres:15) بحجم مُسمّى للبيانات، وmattermost (صورة mattermost/mattermost-team-edition:latest). اربطوهما بشبكة ‎Docker‎ داخلية ووصّلوا المجلدات الخمسة. مرّروا المتغير MM_SQLSETTINGS_DATASOURCE مشيرًا إلى خدمة postgres، ولا تعرّضوا المنفذ 8065 إلا على الحلقة المحلية (127.0.0.1:8065:8065).

03

إعداد الوكيل العكسي بـ‎Caddy‎

أنشئوا ملف Caddyfile بالمدخل التالي: chat.yourdomain.com { reverse_proxy localhost:8065 }. يحصل ‎Caddy‎ على شهادة ‎Let's Encrypt‎ ويجددها تلقائيًا. أعيدوا تشغيل ‎Caddy‎ بعد التحقق من أن النطاق الفرعي يشير إلى ‎IP‎ الخادم.

04

تشغيل الـ‎stack‎ وإنشاء حساب المدير

نفّذوا docker compose up -d، انتظروا نحو ثلاثين ثانية وراقبوا السجلات بـdocker compose logs -f mattermost. افتحوا https://chat.yourdomain.com لإنشاء حساب المدير الأول عبر معالج الإعداد.

05

إعداد ‎SMTP‎ والإشعارات

في النظام > الإشعارات > البريد الإلكتروني، أدخلوا بيانات خادم ‎SMTP‎. أرسلوا بريدًا تجريبيًا قبل المتابعة: دعوات المستخدمين وإشعارات الرسائل تعتمد على هذا الإعداد.

06

تفعيل ‎SSO‎ أو ‎LDAP‎

في النظام > المصادقة، فعّلوا ‎LDAP‎ أو ‎SAML‎ وفق دليل شركتكم. كلاهما متاح مجانًا في الاستضافة الذاتية دون قيود. اختبروا الاتصال بحساب خدمة قبل دعوة مستخدميكم.

استيراد سجل ‎Slack‎ إلى ‎Mattermost‎

01

إعداد الاستيراد بالأداة الرسمية

أداة mattermost import slack مدمجة في ثنائي ‎Mattermost‎. من حاوية ‎Docker‎ نفّذوا: docker compose exec mattermost mattermost import slack /mattermost/imports/slack_export.zip --team اسم-فريقكم. تحوّل الأداة تنسيق ‎JSON‎ من ‎Slack‎ إلى تنسيق ‎Bulk Import‎ وتُبلّغ عن أي تعارضات.

02

تنفيذ الاستيراد الجماعي

بعد التحويل، يولّد ‎Mattermost‎ ملف ‎JSONL‎. نفّذوا الاستيراد الفعلي بـdocker compose exec mattermost mattermost import bulk /mattermost/imports/mattermost_import.jsonl --workers 1. الخيار --workers 1 يتجنب تعارضات الكتابة على القواعد متوسطة الحجم.

03

التحقق من القنوات والمستخدمين المستوردين

بعد اكتمال الاستيراد، سجّلوا دخولكم وتحققوا من ظهور القنوات العامة وصحة الرسائل التاريخية وأسماء المؤلفين، ومن قدرة المستخدمين المستوردين على تسجيل الدخول عبر دعوة البريد الإلكتروني.

04

التعامل مع المرفقات المفقودة

لا يشمل تصدير ‎Slack‎ القياسي الملفات المرفقة في الخطط دون ‎Business+‎. إن كانت ثمة مرفقات مفقودة ستظهر الرسائل بروابط معطّلة. وثّقوا القنوات المتأثرة وأبلغوا مستخدميكم: ستحتاجون إلى إعادة إرفاق الملفات الحيوية يدويًا.

البديل: ‎Rocket.Chat‎ لدعم عملاء موحّد

إن تجاوزت احتياجاتكم المراسلة الداخلية وشملت دعم العملاء في الوقت الفعلي، يُعدّ ‎Rocket.Chat‎ الخيار الأمثل في عالم المصدر المفتوح. تتيح وحدته متعددة القنوات تركيز المحادثات من أداة ‎live chat‎ على موقعكم والبريد الوارد ورسائل ‎WhatsApp Business‎ وقنوات ‎Telegram‎ في واجهة واحدة. يرى وكلاء الدعم قائمة تذاكر موحدة مع السجل الكامل لكل جهة اتصال. يميّز هذا التوجه الأداتين بوضوح: ‎Mattermost‎ منصة مراسلة فريق منظّمة قريبة من ‎Slack‎ في استخداماتها، و‎Rocket.Chat‎ منصة تواصل تستوعب أيضًا قنوات العملاء الخارجية. في المقابل، تزداد تعقيدات التثبيت: ‎replica set MongoDB‎ إلزامي، والموارد الدنيا أعلى، وتهيئة القنوات المتعددة تستوجب ضبطًا دقيقًا للتوجيه والوكلاء. لوكالة تدير تواصلًا مع العملاء وتريد توحيد المراسلة الداخلية والدعم في منصة واحدة، ‎Rocket.Chat‎ هو المرشح الطبيعي. لفريق تقني يبحث فحسب عن بديل لـ‎Slack‎ دون تعقيد إضافي، ‎Mattermost‎ هو المسار الأقصر.

‎SSO‎ والمصادقة: استثمروا الاستضافة الذاتية

في الاستضافة الذاتية، تتوفر ‎LDAP‎ و‎SAML 2.0‎ والمصادقة بالشهادة دون قيود خطة أو تكلفة إضافية. هيّئوا منذ البداية الاتصال بدليلكم (‎Active Directory‎ أو ‎FreeIPA‎ أو مزوّد الهوية السحابي) حتى لا يضطر مستخدموكم لإدارة حساب إضافي. فعّلوا كذلك المصادقة الثنائية (‎TOTP‎) في إعدادات الأمان — كلا المنصتين تدعمانها أصلًا. إن استخدمتم وكيل مصادقة كـ‎Authelia‎ أو ‎Authentik‎، تحققوا من أن وكيلكم العكسي يمرّر صحيحًا ترويسات X-Forwarded-For وX-Real-IP قبل فرض المصادقة الخارجية.

استكشاف الأخطاء: أكثر المشكلات شيوعًا

أربع مشكلات تتكرر بعد تثبيت ناجح. الأولى تخص ‎MongoDB‎ مع ‎Rocket.Chat‎: إن بدأت الحاوية ثم توقفت بخطأ MongoServerError: not master، فـ‎replica set‎ لم يُهيَّأ بعد. اتصلوا بـ‎MongoDB shell‎ بـdocker compose exec mongodb mongosh ونفّذوا rs.initiate() مرة واحدة فقط عند الإقلاع الأول. الثانية تتعلق بـ‎WebSocket‎: إن أظهر ‎Mattermost‎ «انقطع اتصال WebSocket» باستمرار، تحققوا من أن وكيلكم العكسي يمرّر ترويسة Upgrade وConnection. مع ‎Caddy‎ يحدث ذلك تلقائيًا؛ مع ‎Nginx‎ أضيفوا proxy_http_version 1.1 وproxy_set_header Upgrade $http_upgrade وproxy_set_header Connection upgrade. الثالثة تخص الإشعارات على الجوّال: تتصل تطبيقات ‎Mattermost‎ افتراضيًا بخدمة الإشعارات لدى ‎Mattermost Inc.‎؛ إن منعت سياسة أمانكم ذلك، ثبّتوا خادم ‎push‎ خاصًا أو عطّلوا إشعارات الجوّال. الرابعة تتعلق بـ‎SMTP‎: بريد تجريبي يصل لكن دعوات لا تصل يعني في الغالب مشكلة في ‎SPF‎ أو ‎DKIM‎. راجعوا سجلات ‎DNS‎ واختبروا الإرسال بـmail-tester.com قبل ترحيل مستخدميكم.

رسائل فريقكم على بنيتكم التحتية الخاصة

مع خادم ‎VPS‎ سحابي من ‎ServOrbit‎ وخيار الإدارة المُدارة، تنشرون ‎Mattermost‎ أو ‎Rocket.Chat‎ دون التعامل مع التفاصيل التقنية. سجل غير محدود، ‎SSO‎ أصلي، بياناتكم عندكم.

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

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