لماذا تستضيف Mattermost ذاتيًا على خادم VPS
تفوتِر أدوات المراسلة بنموذج SaaS لكل مستخدم نشط وتحتفظ بسجلّ مراسلاتك على خوادمها. تقلب Mattermost هذا المنطق: تستضيف منصة ذاتية الاستضافة على خادم VPS فِرقًا بأكملها دون تكلفة لكل مقعد في نسخة Team، مع سجلّ كامل في نسخة Team وتخزين ملفات تتحكّم أنت به. وبالنسبة إلى وكالة أو شركة خاضعة لقيود السرّية، فإن استضافة المراسلة داخليًا تعني ألّا تمرّ الرسائل ولا الملفات المشتركة ولا البيانات الوصفية عبر طرف ثالث. كما تتكامل Mattermost أصلًا مع منصات Git وأدوات CI/CD وwebhooks واردة/صادرة، ما يجعلها محورًا مركزيًا للتواصل بالنسبة إلى الفِرق التقنية.
فوائد ملموسة لـMattermost ذاتية الاستضافة
- سجلّ رسائل كامل في نسخة Team — انتبه: النسخة المجانية Entry تحدّ السجلّ القابل للعرض بعشرة آلاف رسالة منذ الإصدار 11 (انظر أدناه).
- تخزين الملفات المشتركة على خادم VPS الخاص بك أو على حاوية S3 تتحكّم أنت بها.
- webhooks واردة/صادرة وأوامر slash لربط CI والمراقبة والتنبيهات.
- مصادقة مؤسسية: LDAP/AD وSAML وOAuth بحسب النسخة.
- تطبيقات سطح مكتب وجوّال رسمية تشير إلى نطاقك الخاص.
- امتثال وسيادة على البيانات: لا محادثة خارج بنيتك التحتية.
المتطلبات العتادية والبرمجية
Mattermost أكثر تطلّبًا من منصة Git لأنها تحافظ على اتصالات WebSocket دائمة. احسب خادم VPS بمعالجَين افتراضيَّين (2 vCPU) و4 غيغابايت من الذاكرة (RAM) لفريق حتى 50 مستخدمًا نشطًا؛ اهدف إلى 8 غيغابايت لِما فوق ذلك أو إذا فعّلت البحث المتقدّم. PostgreSQL هي قاعدة البيانات المُوصى بها. خصّص 30 غيغابايت من SSD كحدّ أدنى، وأكثر إذا خزّنت كثيرًا من الملفات محليًا. على الجانب البرمجي: Docker وDocker Compose، ونطاق فرعي chat.yourdomain.com مع سجل A، وreverse proxy قادر على تمرير اتصالات WebSocket بشكل صحيح (Upgrade/Connection).
نشر Mattermost مع Docker وSSL
تجهيز خادم VPS
ثبّت Docker وCompose، ثم اجلب المستودع الرسمي mattermost-docker أو أنشئ /opt/mattermost. ارفع عند الحاجة vm.max_map_count وحدود الملفات المفتوحة، فـMattermost تفتح اتصالات متزامنة كثيرة.
إعداد PostgreSQL ووحدات التخزين
في ملف docker-compose.yml، صرِّح عن خدمة postgres بكلمة مرور قوية ووحدات تخزين دائمة لـ/var/lib/postgresql/data. بالنسبة إلى Mattermost، ركّب وحدات تخزين مخصّصة لـconfig وdata وlogs وplugins للاحتفاظ بكل شيء خارج الحاوية.
تشغيل حزمة Mattermost
أدخِل المتغيرَين MM_SQLSETTINGS_DATASOURCE وMM_SERVICESETTINGS_SITEURL (بصيغة HTTPS)، ثم نفّذ docker compose up -d. تابِع docker compose logs -f حتى الرسالة التي تشير إلى أن الخادم يستمع على المنفذ 8065.
إعداد reverse proxy مع WebSocket
مع Nginx، مرّر الطلبات إلى http://127.0.0.1:8065 وأضِف حتمًا proxy_set_header Upgrade $http_upgrade; وproxy_set_header Connection "upgrade";، وإلا فلن يعمل الوقت الحقيقي. مع Caddy، يتولّى reverse_proxy localhost:8065 أمرَ WebSocket تلقائيًا.
تفعيل شهادة SSL
احصل على الشهادة عبر certbot --nginx -d chat.yourdomain.com أو دَع Caddy يوفّرها وحده. تحقّق من أن SiteURL بصيغة https:// فعلًا في الإعداد، وإلا فسيرفض عملاء الجوّال الاتصال.
إنشاء الفريق وتحصين المنصة
افتح https://chat.yourdomain.com، وأنشئ حساب مدير النظام وفريقك الأول. عطّل التسجيل المفتوح، وأعدّ SMTP لرسائل الإشعارات البريدية، واقصر إنشاء الفِرق على المدراء.
أول تسجيل دخول
افتح الرابط فور انتهاء التثبيت: يعرض Mattermost شاشة إنشاء حساب، وأول حساب يُنشأ على الإطلاق يحصل تلقائيًا على دور مدير النظام. أنشئه فورًا.
ما تحدّه النسخة المجانية منذ الإصدار 11
ابتداءً من Mattermost 11، تحدّ النسخة المجانية المستضافة ذاتيًا — واسمها Entry — السجلّ القابل للعرض بعشرة آلاف رسالة، عبر كل القنوات وعلى مستوى الخادم كله. والنقطة التي كثيرًا ما يُساء فهمها: الرسائل الأقدم لا تُحذف. تبقى في قاعدة بياناتك وعلى جهازك، لكنها تتوقف ببساطة عن كونها قابلة للعرض والبحث من داخل التطبيق. وقد قوبل التغيير باستياء في المجتمع، تحديدًا لأنه يقيّد بيانات يستضيفها المستخدم بنفسه. وهناك مخرجان: الانتقال إلى نسخة مدفوعة لرفع الحدّ، أو اختيار أداة لا تحدّ نسختها الحرة السجلّ. وإن كان استخدامك مراسلة فريق طويلة الأمد، فقِس حجمك الشهري قبل الالتزام: عشرة آلاف رسالة تُستهلك بسرعة بين عدة أشخاص. وهناك مسار ثالث كثيرًا ما يُغفل: نسخة Team المجانية أيضًا لا تحدّ السجلّ، لكنها لا تدعم الدخول الموحّد (SSO) وتتوقّف عند 250 مستخدمًا. فالاختيار إذن بين حدٍّ على السجلّ (Entry) وحدٍّ على المستخدمين دون SSO (Team).
بالنسبة إلى الملفات المشتركة، لا تخزّن كل شيء على قرص خادم VPS على المدى الطويل: اضبط Mattermost على وضع تخزين الكائنات المتوافق مع S3. يفصل ذلك وحدة تخزين البيانات عن حجم خادم VPS الخاص بك، ويبسّط النسخ الاحتياطي جذريًا (تُؤرشَف الحاوية بشكل مستقل) ويسهّل توسّعًا أفقيًا محتملًا. فكّر أيضًا في تفعيل الاحتفاظ بالبيانات لتنقية الرسائل القديمة تلقائيًا والتحكم في نمو PostgreSQL.
الوثائق الرسمية
للإعداد المتقدّم والخيارات الخاصة بالأداة، ارجع إلى الوثائق الرسمية لـMattermost. يغطّي هذا الدليل النشر على خادم VPS؛ وتبقى وثائق الناشر المرجعَ للضبط الدقيق والترقيات الكبرى وحالات الاستخدام الخاصة.