لماذا تستضيف Rocket.Chat ذاتيًا على خادم VPS
تذهب Rocket.Chat أبعد من مجرد أداة مراسلة للفِرق: فهي تقدّم وحدة قناة متعددة (omnichannel) (دمج WhatsApp والبريد الإلكتروني وأدوات الدردشة على المواقع)، ومكالمات صوتية ومرئية، واتحادًا عبر بروتوكول Matrix يتيح التواصل مع خوادم أخرى. وبالنسبة إلى وكالة تريد توحيد التواصل الداخلي ودعم العملاء معًا، تتجنّب الاستضافة الذاتية على خادم VPS تعدُّد الاشتراكات وتُبقي مجمل المراسلات — بما فيها محادثات العملاء — على بنية تحتية تتحكّم أنت بها. تعتمد Rocket.Chat على MongoDB، ما يجعلها أكثر نهمًا قليلًا من Mattermost، لكنه يفتح الباب أمام تكاملات غنية وسوق للإضافات.
فوائد ملموسة لـRocket.Chat ذاتية الاستضافة
- وحدة قناة متعددة (omnichannel) مدمجة لمعالجة الدعم عبر الويب والبريد الإلكتروني والمراسلة من واجهة واحدة.
- مكالمات صوتية/مرئية ومشاركة الشاشة دون الاعتماد على خدمة طرف ثالث.
- اتحاد Matrix لربط خادمك بمؤسسات أخرى.
- سوق تطبيقات وكتالوج واسع من التكاملات (webhooks وbots).
- تخصيص واسع لسمة المنصة وهويتها البصرية.
- بيانات المحادثات والملفات محفوظة على خادم VPS الخاص بك.
المتطلبات العتادية والبرمجية
Rocket.Chat وMongoDB متطلّبتان نسبيًا من حيث الذاكرة. لفريق حتى 50 مستخدمًا، خصّص خادم VPS بمعالجَين إلى أربعة معالجات افتراضية (2 إلى 4 vCPU) و4 غيغابايت من الذاكرة (RAM) على الأقل؛ اهدف إلى 8 غيغابايت لمنصة نشطة مع قناة متعددة ومكالمات مرئية. يجب حتمًا أن تعمل MongoDB في وضع replica set (حتى بعقدة واحدة) لأن Rocket.Chat تستخدم oplog للوقت الحقيقي. احسب من 30 إلى 50 غيغابايت من SSD. تحتاج إلى Docker وCompose، ونطاق فرعي chat.yourdomain.com مع سجل A، وreverse proxy يتعامل مع WebSockets.
نشر Rocket.Chat مع Docker وSSL
توفير خادم VPS
ثبّت Docker وإضافة Compose، وأنشئ /opt/rocketchat. تحقّق من أن الذاكرة (RAM) المتاحة كافية: يمكن لـMongoDB وRocket.Chat إشباع خادم VPS بذاكرة 2 غيغابايت تحت الحِمل.
إعداد MongoDB في replica set
صرِّح عن خدمة mongodb (الصورة bitnami/mongodb أو mongo) مع تفعيل replica set: فهو إلزامي لـoplog. من دون هذه الخطوة، تبدأ Rocket.Chat لكن الوقت الحقيقي وبعض الوظائف تفشل. احفظ البيانات في وحدة تخزين مخصّصة.
تعريف خدمة Rocket.Chat
أضِف خدمة rocketchat (الصورة registry.rocket.chat/rocketchat/rocket.chat) مع المتغيرات MONGO_URL وMONGO_OPLOG_URL وROOT_URL بصيغة HTTPS. اجعلها تعتمد على MongoDB واعرض المنفذ 3000 داخليًا فقط.
التشغيل والتحقق
نفّذ docker compose up -d ثم docker compose logs -f rocketchat. يُرحّل التشغيل الأول مخطط MongoDB وقد يستغرق دقيقة إلى دقيقتين. انتظر الرسالة التي تشير إلى أن الخادم جاهز على المنفذ 3000.
وضع reverse proxy وSSL
مع Caddy: chat.yourdomain.com { reverse_proxy localhost:3000 }. مع Nginx، مرّر الطلبات إلى 127.0.0.1:3000 مع تمرير ترويستَي Upgrade/Connection لـWebSocket، ثم ولّد الشهادة عبر certbot.
إنهاء إعداد الإدارة
افتح https://chat.yourdomain.com، وأكمِل المعالج (حساب المدير، واسم المؤسسة، وإعداد SMTP). عطّل التسجيل العام إذا كانت المنصة خاصة وأعدّ وحدة القناة المتعددة (omnichannel) فقط إذا كنت بحاجة إليها.
أكثر خطأ شائع عند نشر Rocket.Chat هو نسيان تهيئة replica set الخاص بـMongoDB: من دون rs.initiate()، يكون oplog غير متاح ولا تعمل الدردشة في الوقت الحقيقي. إذا استخدمت صورة Bitnami، مرّر MONGODB_REPLICA_SET_MODE=primary وMONGODB_REPLICA_SET_KEY. راقِب أيضًا الذاكرة (RAM) التي تستهلكها MongoDB عبر docker stats: على خادم VPS محدود، حُدّ ذاكرة التخزين المؤقت لـWiredTiger عبر --wiredTigerCacheSizeGB كي لا تخنق قاعدة البيانات بقية الحزمة.
Rocket.Chat مقابل Mattermost
| المعيار | Rocket.Chat | Mattermost |
|---|---|---|
| قاعدة البيانات | MongoDB (replica set إلزامي) | PostgreSQL |
| بصمة الذاكرة | أكثر نهمًا (MongoDB) | أكثر اقتصادًا عند الحِمل نفسه |
| القناة المتعددة / دعم العملاء | وحدة أصلية مدمجة | عبر تكاملات طرف ثالث |
| مكالمات صوتية/مرئية | مدمجة | عبر إضافات / Calls (نسخة مدفوعة) |
| الاتحاد | Matrix | محدود |
| سوق التطبيقات | غني وأصلي | إضافات، كتالوج أكثر محدودية |
| الجمهور المستهدف | تواصل موحَّد + دعم العملاء | الفِرق التقنية وChatOps |
| الإعداد | مزيد من الضبط (replica set) | أكثر مباشرةً مع PostgreSQL |