ITSkillsCenter
الأعمال الرقمية

نشر Mattermost على Coolify مع Postgres: درس كامل 2026

2 min de lecture

📍 المقالة الرئيسية للمجموعة: Mattermost 2026: الدليل الكامل.

ثلاثون دقيقة لتحويل VPS فارغ إلى خادم Mattermost إنتاج. الطريقة موثقة عند عدة شركات فرنكوفونية، تكلفة إجمالية 4,51 يورو شهرياً لـ 100 مستخدم. هذا الدرس يفصل الإجراء الدقيق على Hetzner CX22 (4 جيجابايت RAM ضروري لـ Postgres + Mattermost مريحان معاً).

المتطلبات

قبل البدء، تأكد من توفر VPS Hetzner CX22 minimum (4 جيجابايت RAM لـ Mattermost + Postgres مريحان). يجب أن يكون Coolify v4 مثبتاً مسبقاً. اسم نطاق DNS A يشير إلى الـ VPS: chat.votre-entreprise.com. SMTP (Brevo، Resend) للدعوات. المستوى المتوقع: متوسط. الوقت المقدر: 30 إلى 45 دقيقة.

الخطوة 1 — DNS والتحضير

قبل أي تكوين، تحقق من انتشار DNS. السجل A يجب أن يشير إلى عنوان IP الـ VPS. هذه الخطوة حاسمة لأن Let’s Encrypt سيرفض إصدار شهادة إذا لم يستطع التحقق من ملكية النطاق عبر HTTP-01 challenge.

dig +short chat.votre-entreprise.com  # يجب أن يعيد IP الـ VPS

إذا كان Cloudflare في الواجهة، عطل proxy (السحابة البرتقالية → رمادية) أثناء إصدار الشهادة. يمكنك إعادة تفعيل proxy بعد الإصدار للاستفادة من حماية Cloudflare ضد DDoS.

الخطوة 2 — خدمة Mattermost في Coolify

في واجهة Coolify الإدارية، اذهب إلى Resources → + New → Service → ابحث عن «Mattermost». Coolify ينشر القالب الرسمي مع Postgres 16 المدمج. هذا القالب يصونه فريق Coolify ويُحدَّث شهرياً مع آخر إصدارات Mattermost. الاسم: mattermost-prod. Server: Hetzner CX22 الخاص بك. Project: Production.

الخطوة 3 — متغيرات البيئة

التكوين التالي يحدد سلوك Mattermost الأساسي. MM_SERVICESETTINGS_SITEURL يجب أن يطابق بالضبط URL العام الذي يصل به المستخدمون. Postgres connection string يستخدم اسم الخدمة الداخلي mattermost-db الذي يكوِّنه Coolify تلقائياً. SMTP يُستعمل لإرسال دعوات الفريق ورسائل تأكيد البريد الإلكتروني عند تسجيل المستخدمين الجدد.

MM_SERVICESETTINGS_SITEURL=https://chat.votre-entreprise.com
MM_SQLSETTINGS_DATASOURCE=postgres://mmuser:password@mattermost-db:5432/mattermost?sslmode=disable
MM_SERVICESETTINGS_LISTENADDRESS=:8065
MM_FILESETTINGS_DRIVERNAME=local
MM_FILESETTINGS_DIRECTORY=/mattermost/data/

# SMTP
MM_EMAILSETTINGS_SMTPSERVER=smtp-relay.brevo.com
MM_EMAILSETTINGS_SMTPPORT=587
MM_EMAILSETTINGS_SMTPUSERNAME=login
MM_EMAILSETTINGS_SMTPPASSWORD=key
MM_EMAILSETTINGS_FEEDBACKEMAIL=chat@votre-entreprise.com
MM_EMAILSETTINGS_FEEDBACKNAME=Mattermost
MM_EMAILSETTINGS_CONNECTIONSECURITY=STARTTLS

# Push notifications (مجاني Mattermost Cloud Push Service)
MM_EMAILSETTINGS_PUSHNOTIFICATIONCONTENTS=full
MM_EMAILSETTINGS_PUSHSERVER=https://push.mattermost.com

الخطوة 4 — النطاق HTTPS

تبويب Domains: أدخل https://chat.votre-entreprise.com. Force HTTPS ON. Coolify يكوِّن Traefik داخلياً ويصدر شهادة Let’s Encrypt تلقائياً. عملية الإصدار تستغرق 30 إلى 60 ثانية. إذا فشلت، تحقق من أن المنفذ 80 مفتوح في UFW (ضروري لـ HTTP-01 challenge).

الخطوة 5 — إطلاق Deploy

اضغط Deploy. Coolify يسحب صورة mattermost/mattermost-team-edition:latest ويُنشئ containers. السجلات في الوقت الفعلي تظهر تقدم العملية: pulling image، creating volumes، starting Postgres، waiting for database، starting Mattermost server. احسب 3 إلى 5 دقائق للنشر الأول. المرات اللاحقة (التحديثات) أسرع لأن الصور موجودة بالفعل.

الخطوة 6 — أول حساب admin

افتح https://chat.votre-entreprise.com. صفحة signup تطلب إنشاء أول حساب. الحساب الأول الذي تنشئه يصبح System Admin بشكل تلقائي مع كل الصلاحيات على المثيل. أدخل email احترافي، password 14+ حرفاً مع تنوع (أرقام، رموز، حروف كبيرة وصغيرة)، اختر username. هذا الحساب حاسم — احفظ credentials في Vaultwarden في collection «Infrastructure».

الخطوة 7 — إنشاء team

Workspace → Create team. الاسم: «Votre Entreprise»، URL slug. الـ team هو الحاوية الرئيسية لكل القنوات والمستخدمين. لشركة من 25 شخصاً، team واحد كافٍ. لشركات استشارية متعددة العملاء، يمكن إنشاء team لكل عميل بحيث تبقى المحادثات معزولة. ادعُ أول الأعضاء عبر email — يستلمون magic link للانضمام مباشرة دون كلمة سر مسبقة.

الخطوة 8 — القنوات الأولية

قنوات نموذجية لشركة من 25 شخصاً تشمل #general (الجميع، إعلانات)، #random (استرخاء، مزاح)، #dev (الفريق التقني)، #marketing (فريق التسويق)، #alerts (webhooks Grafana، Forgejo، Uptime Kuma)، و#client-X (خاص) لكل مشروع عميل. هذه البنية الأساسية تتطور مع نمو الفريق. القنوات #incidents و#standup شائعة في الفرق DevOps.

الخطوة 9 — تفعيل Calls plugin

System Console → Plugins → Calls → Enable. التكوين: 8 مشاركين افتراضياً، التسجيل معطل (ميزة Team Edition). Calls plugin يستخدم WebRTC peer-to-peer للمكالمات الصغيرة، ويرتد إلى TURN server للمكالمات الجماعية. لجودة مكالمات أفضل في إفريقيا، فعِّل TURN server self-hosted على VPS منفصل.

الخطوة 10 — تطبيقات الهاتف

وزع على الزملاء: iOS App Store «Mattermost»، Android Play Store أو F-Droid. التكوين الأولي: Settings → Server → URL https://chat.votre-entreprise.com. ثم login بـ email وpassword. push notifications تعمل مباشرة بفضل Mattermost Cloud Push Service المجاني (محدود بـ 100 مستخدم). بعد ذلك، التبديل إلى push self-hosted ضروري لمزيد من الخصوصية.

الخطوة 11 — النسخ الاحتياطية

الـ Mattermost الإنتاج بدون نسخ احتياطية كارثة موقوتة. cron يومي يكفي لمعظم الفرق الصغيرة والمتوسطة. يجمع pg_dump (المحادثات والمستخدمون والقنوات) مع snapshot لمجلد البيانات (الملفات المُحمَّلة مثل صور الملفات الشخصية والمرفقات).

# Cron يومي على الـ VPS
docker exec mattermost-db pg_dump -U mmuser mattermost | gzip > /tmp/mm-pg.gz
restic backup /tmp/mm-pg.gz /var/lib/coolify/services/mattermost-prod/data
rm /tmp/mm-pg.gz

الأخطاء الشائعة

الخطأ السبب الحل
Mattermost يتعطل عند الإقلاع Postgres لم يصبح جاهزاً زيادة timeout health check
email الدعوة غير مستلمة SMTP غير مختبَر System Console → Email → Test
Push mobile صامت PushServer سيئ التكوين التحقق من https://push.mattermost.com
Upload الملفات يفشل Disk ممتلئ تكوين S3 storage
WebSocket متأخر Caddy ليس WS التحقق من reverse_proxy 8065
بحث بطيء Postgres FTS فقط إضافة Elasticsearch (Enterprise)

التكيف مع السياق المغاربي وغرب إفريقيا

ثلاث توضيحات. Push Service مجاني. Mattermost يقدم push مجاني حتى 100 مستخدم. ما بعد ذلك، push self-hosted عبر APNs/FCM. هذه الخدمة المجانية كافية لمعظم الشركات الصغيرة الإفريقية. عرض النطاق. 100 مستخدم نشط يستهلكون ~ 100 ميغابايت يومياً bandwidth. Hetzner CX22 يحد بـ 20 تيرابايت شهرياً، هامش واسع. أكثر من ذلك، الفريق سيعمل لـ 200 سنة قبل تجاوز الحد. النسخ الاحتياطية حاسمة. المحادثات = ذاكرة مؤسسية. restic + B2 إلزامي مع تردد 6 ساعات. الخسارة الكاملة لشهر من المحادثات والقرارات يمثل عواقب لا يمكن قياسها للفريق.

دروس الإخوة في المجموعة

الأسئلة المتكررة

Team Edition vs Enterprise؟ Team Edition مفتوح المصدر، مستخدمون غير محدودين. Enterprise (10 USD/مستخدم/شهر) يضيف SSO SAML، compliance متقدم، دعم 24/7.

حدود الأداء؟ 5,000 مستخدم نشط على CCX23. 50,000 على cluster.

Storage S3؟ موصى به لـ > 50 جيجابايت ملفات. MinIO، Backblaze B2، AWS S3.

التحديثات؟ Coolify Pull image + Redeploy. Postgres migration تلقائياً.

Multi-team؟ مثيل Mattermost واحد يمكنه استضافة عدة teams (عملاء ESN على سبيل المثال).

للاستزادة

Besoin d'un site web ?

Confiez-nous la Création de Votre Site Web

Site vitrine, e-commerce ou application web — nous transformons votre vision en réalité digitale. Accompagnement personnalisé de A à Z.

À partir de 250.000 FCFA
Parlons de Votre Projet
Publicité