SSD Nodes Learn 🎉 VPS $5.50/মাস থেকে
নির্দেশিকা Matt Connorদ্বারা Matt Connor

সেরা self-hosted Slack বিকল্পগুলোর তুলনা

Mattermost, Rocket.Chat, Synapse এবং Zulip-এর RAM, ডাটাবেস, SSO ও লাইসেন্স খরচ যাচাই করুন। 10 থেকে 100 জন ব্যবহারকারীর জন্য কোন প্ল্যাটফর্মটি সেরা তা এই নিবন্ধে জানুন।

কোন self-hosted Slack বিকল্পটি আপনার চালানো উচিত

একটি ছোট দলের সময়ের মূল্য আছে এমন self-hosted Slack বিকল্পগুলো হলো Mattermost, Rocket.Chat, Matrix with Synapse এবং Zulip। একটি সার্ভারে অভ্যন্তরীণ দলের ব্যবহারের জন্য Mattermost চালান। পাবলিক কমিউনিটির জন্য Zulip ব্যবহার করুন। Matrix with Synapse তখনই চালান যখন আপনাকে অন্য কারো মালিকানাধীন সার্ভারের সাথে যোগাযোগ করতে হয়, কারণ ফেডারেশন এমন একটি বৈশিষ্ট্য যা অন্যগুলো নকল করতে পারে না এবং এটিই আপনার অ্যাডমিনিস্ট্রেটর হিসেবে কাজের ধরন বদলে দেয়।

ফিচারের তালিকা দিয়ে এই চারটির মধ্যে পার্থক্য করা যাবে না। সবগুলোতে চ্যানেল, থ্রেড, সার্চ, ফাইল আপলোড এবং মোবাইল অ্যাপের সুবিধা রয়েছে। এদের মধ্যে পার্থক্য হলো প্রতি মাসে এগুলো আপনার কাছে কী দাবি করে: মেমরি, একটি ডেটাবেস যা আপনাকে সচল রাখতে হবে, একটি মোবাইল পুশ পাথ যা হয়তো আপনার নিয়ন্ত্রণে নেই এবং একটি লাইসেন্স যা নির্ধারণ করে আপনার প্রয়োজনীয় ফিচারটি পেমেন্টের পেছনে থাকবে কি না। নিচের তুলনাটি 10 জন এবং 100 জন ব্যবহারকারীর ক্ষেত্রে এই বিষয়গুলোর ওপর ভিত্তি করে করা হয়েছে।

এই চারটি আসলে কী

Mattermost হলো একটি Go সার্ভার যা PostgreSQL ডাটাবেস ব্যবহার করে। একটি বাইনারি, একটি ডাটাবেস এবং একটি কনফিগারেশন ফাইল। এটি Slack-এর মতো কাজ করে, যার মধ্যে থ্রেড এবং স্ল্যাশ কমান্ড অন্তর্ভুক্ত রয়েছে। এই চারটির মধ্যে এটি পরিচালনা করা সবচেয়ে সহজ, যা একটি ইতিবাচক দিক।

Rocket.Chat হলো একটি Node.js অ্যাপ্লিকেশন যা MongoDB-এর ওপর চলে। এখানে উল্লিখিত অ্যাপ্লিকেশনগুলোর মধ্যে এটি সবচেয়ে বেশি ফিচার সমৃদ্ধ, যার মধ্যে ভয়েস ও ভিডিও কল এবং একটি অমনিচ্যানেল ইনবক্স রয়েছে। এই ইনবক্সটি ইমেইল এবং সোশ্যাল মিডিয়া চ্যানেল থেকে গ্রাহকদের কথোপকথন একই ইন্টারফেসে নিয়ে আসে। যদি এই ইনবক্সটিই আপনার মূল উদ্দেশ্য হয়, তবে একটি ডেডিকেটেড Chatwoot সাপোর্ট ডেস্ক-এর সাথে তুলনা করে দেখুন। কারণ সাপোর্ট কাজের জন্য একটি চ্যাট সার্ভার এবং টিমওয়ার্কের জন্য একটি চ্যাট সার্ভারের কাজের ধরন ভিন্ন।

Matrix হলো একটি প্রোটোকল, কোনো পণ্য নয়। Synapse হলো এর রেফারেন্স সার্ভার (Python, PostgreSQL) এবং Element হলো সেই ক্লায়েন্ট যা অধিকাংশ মানুষ ব্যবহার করে। এই তালিকায় এটিই একমাত্র বিকল্প যেখানে আপনার সার্ভার আপনার নিয়ন্ত্রণাধীন নয় এমন সার্ভারের সাথেও যোগাযোগ করতে পারে।

Zulip হলো একটি Python সার্ভার (Django এবং Tornado), যার পেছনে PostgreSQL, RabbitMQ, memcached এবং Redis কাজ করে। এটি নিজস্ব স্ক্রিপ্টের মাধ্যমে একটি ইউনিট হিসেবে ইনস্টল হয়। এর মডেলটি হলো চ্যানেলের ভেতরে টপিক, যার ফলে মঙ্গলবারের কথোপকথন শুক্রবারও সহজে খুঁজে পাওয়া যায়। 2026 সালের এপ্রিল মাসে এর 12.0 ভার্সন মুক্তি পেয়েছে।

10 জন এবং 100 জন ব্যবহারকারীর ক্ষেত্রে কতটুকু RAM এবং কোন ডাটাবেস প্রয়োজন

নিচের চার্টের প্রতিটি সংখ্যা 2026 সালের আগস্ট মাসে প্রকল্পের নিজস্ব ডকুমেন্টেশন থেকে নেওয়া হয়েছে। এর কোনোটিই আমার নিজস্ব পরিমাপ নয় এবং কোনোটিই মনগড়া নয়। প্রতিটি সারির ভিত্তি একই: প্রকল্পের প্রকাশিত সর্বনিম্ন কনফিগারেশন, যেখানে ডাটাবেসকে আলাদাভাবে গণনা করা হয়েছে যদি প্রকল্পটি সেটিকে আলাদাভাবে নির্ধারণ করে।

ChartRAM in the smallest deployment each project documents (vendor figures, August 2026)
The data behind this chart
[
  {
    "label": "Synapse",
    "published_ram_gb": 1,
    "notes": "Synapse install docs: at least 1 GB free RAM if you want to join large public rooms. PostgreSQL is required for production and is not sized."
  },
  {
    "label": "Mattermost",
    "published_ram_gb": 2,
    "notes": "Mattermost requirements: 1 to 1,000 users on 1 vCPU and 2 GB RAM, single server, database included."
  },
  {
    "label": "Zulip",
    "published_ram_gb": 2,
    "notes": "Zulip requirements: under 100 users on 1 CPU, 2 GB RAM and 2 GB swap. 100 users and above needs 2 CPUs and 4 GB."
  },
  {
    "label": "Rocket.Chat",
    "published_ram_gb": 8,
    "notes": "Rocket.Chat requirements: smallest published tier is 4 GiB for the app plus 4 GiB for MongoDB, rated up to 500 concurrent users."
  }
]

সারিগুলোর গঠন অভিন্ন নয়, এবং এটিই প্রথম গুরুত্বপূর্ণ পর্যবেক্ষণ। Synapse-এর 1 GB হলো Synapse প্রসেসের জন্য একটি সর্বনিম্ন সীমা, যার সাথে একটি শর্ত যুক্ত আছে: আপনি যদি বড় পাবলিক রুমে যোগ দিতে চান তবে ডকুমেন্টেশনে অন্তত ততটুকু ফ্রি RAM রাখার পরামর্শ দেওয়া হয়েছে। PostgreSQL এই হিসাবের বাইরে। Mattermost-এর 2 GB হলো পুরো মেশিনের জন্য, ডাটাবেসসহ, এবং এটি একটি vCPU-তে 1 থেকে 1,000 জন ব্যবহারকারী পর্যন্ত কাভার করে। Zulip 100 জন ব্যবহারকারীর নিচে 2 GB RAM এবং একটি CPU-এর কথা উল্লেখ করে, সাথে 2 GB swap; এরপর 100 জন বা তার বেশি ব্যবহারকারীর জন্য 4 GB RAM এবং দুটি CPU-এর প্রয়োজন হয়। Rocket.Chat এখানে সবচেয়ে বড় সংখ্যাটি প্রকাশ করে, 8 GB, কারণ তারা অ্যাপ্লিকেশনটিকে 4 GiB এবং MongoDB-কে 4 GiB হিসেবে নির্ধারণ করে, এবং এই টিয়ারটি 500 জন পর্যন্ত কনকারেন্ট ব্যবহারকারীর জন্য উপযুক্ত।

দশজন ব্যবহারকারীর ক্ষেত্রে, এই 4টি অ্যাপ্লিকেশনই এমন হার্ডওয়্যারে চলে যা নিয়ে আপনাকে দ্বিতীয়বার ভাবতে হবে না। একশজন ব্যবহারকারীর ক্ষেত্রে উত্তরগুলো ভিন্ন হয়ে যায়: Mattermost এখনও তার 2 GB টিয়ারের মধ্যেই থাকে, Zulip-এর 4 GB RAM এবং দ্বিতীয় একটি CPU প্রয়োজন হয়, এবং Rocket.Chat-এর সর্বনিম্ন নথিভুক্ত টিয়ার 8 GB-তেই অপরিবর্তিত থাকে, কারণ MongoDB-এর মেমোরির চাহিদা আপনার ব্যবহারকারীর সংখ্যার চেয়ে মেশিনের ক্ষমতার ওপর বেশি নির্ভর করে।

আপনার দৈনন্দিন পারফরম্যান্সের চেয়ে ডাটাবেস নির্বাচন আপনার ভবিষ্যতের আপগ্রেড নির্ধারণে বেশি ভূমিকা রাখে। Mattermost-এর PostgreSQL 14 বা তার নতুন সংস্করণ প্রয়োজন এবং v11 থেকে MySQL সাপোর্ট বাতিল করা হয়েছে, তাই আজকের MySQL ইনস্টলেশন মানেই ভবিষ্যতে মাইগ্রেশনের প্রস্তুতি। Synapse চলে SQLite-এ এবং এর নিজস্ব ডকুমেন্টেশনে স্পষ্টভাবে বলা হয়েছে যে SQLite শুধুমাত্র পরীক্ষার জন্য গ্রহণযোগ্য, কারণ বড় রুমে এটি খারাপ পারফরম্যান্স দেয়। Rocket.Chat 8-এর জন্য MongoDB 8.0 প্রয়োজন, যার অর্থ হলো ডাটাবেস আপগ্রেড এবং চ্যাট আপগ্রেড দুটি আলাদা কাজ নয়, বরং একটি একক প্রজেক্ট।

2 GB VPS আসলে আপনাকে কী দেয়

অধিকাংশ প্রোভাইডারের ক্ষেত্রে 2 GB প্ল্যানটি হলো প্রাথমিক সাইজ, এবং এই চারটি অ্যাপের মধ্যে দুটির জন্য এটি একটি কার্যকর সমাধান।

  • Mattermost চলে। এটিই একমাত্র অ্যাপ যার ভেন্ডর 1,000 ব্যবহারকারী পর্যন্ত এবং একই বক্সে PostgreSQL চালানোর জন্য এই নির্দিষ্ট সাইজের কথা উল্লেখ করেছে। 2 GB-তে দশজন ব্যবহারকারী খুব স্বাচ্ছন্দ্যে কাজ করতে পারে।
  • Zulip চলে, তবে swap প্রয়োজন। ডকুমেন্টেশনে 5 GB-এর কম র‍্যামের মেশিনে swap ব্যবহারের পরামর্শ দেওয়া হয়েছে। সতর্ক করা হয়েছে যে, কম র‍্যামের মেশিনে আপগ্রেডের সময় আউট অফ মেমোরি (OOM) এরর দেখা দেয়, যেখানে tools/webpack ধাপটি ব্যর্থ হয়। এটি এমন একটি বাস্তব সমস্যা যা আপনি ইন্সটলেশনের সময় নয়, বরং আপগ্রেডের সময় পাবেন।
  • Synapse শান্ত থাকলে চলে। অলস অবস্থায় (idle) এটি খুব কম মেমোরি খরচ করে। সমস্যা হয় যখন এটি স্পাইক করে, এবং নিচের ফেডারেশন সংক্রান্ত সেকশনে এর কারণ ব্যাখ্যা করা হয়েছে।
  • Rocket.Chat 2 GB-তে এড়িয়ে চলাই ভালো, এর কারণ হলো MongoDB-এর স্টোরেজ ইঞ্জিন। WiredTiger তার ইন্টারনাল ক্যাশের সাইজ নির্ধারণ করে (RAM minus 1 GB)-এর 50% অথবা 256 MB-এর মধ্যে যেটি বড় তার ওপর ভিত্তি করে। তাই 2 GB মেশিনে Node.js শুরু হওয়ার আগেই এটি প্রায় 512 MB মেমোরি দখল করে নেয়। এর ফলাফল সরাসরি কোনো এরর মেসেজ নয়। এটি ইন্সটল হবে, চলবে, হিস্ট্রি বাড়ার সাথে সাথে ধীর হয়ে যাবে এবং শেষ পর্যন্ত কার্নেল আউট অফ মেমোরি কিলার (OOM killer) সেই সময়ের সবচেয়ে বড় প্রসেসটিকে বন্ধ করে দেবে।

সিদ্ধান্ত নেওয়ার আগে আপনার কাছে আসলে কী আছে তা যাচাই করুন, কারণ প্রোভাইডাররা free থেকে ভিন্নভাবে র‍্যাম গণনা করে:

free -h
swapon --show

মনে রাখবেন, চ্যাট সার্ভারই বক্সের একমাত্র জিনিস নয়। TLS (transport layer security) টার্মিনেশন, ব্যাকআপ এবং কন্টেইনার রানটাইম—সবকিছুর জন্যই মেমোরি প্রয়োজন। আপনি যে সার্ভারই বেছে নিন না কেন, সেটিকে আপনার পরিচিত একটি রিভার্স প্রক্সি, যেমন Nginx, Caddy বা Traefik-এর পেছনে রাখুন। আর যদি কন্টেইনার ব্যবহার করে ডিপ্লয় করেন, তবে Docker Compose-এর মৌলিক বিষয়গুলো আগে ভালোভাবে বুঝে নেওয়া জরুরি।

মোবাইল অ্যাপের কি নিজস্ব পুশ সার্ভার প্রয়োজন

এটি এমন একটি বিষয় যা মানুষ সার্ভার ডেপ্লয় করার পর বুঝতে পারে এবং বেশিরভাগ ক্ষেত্রে সিদ্ধান্ত নেওয়ার জন্য এটিই প্রধান ভূমিকা পালন করে।

এর কার্যপদ্ধতি হলো নিম্নরূপ। Apple Push Notification service (APNs) এবং Firebase Cloud Messaging (FCM) শুধুমাত্র সেই পক্ষ থেকেই নোটিফিকেশন গ্রহণ করে, যার কাছে নির্দিষ্ট অ্যাপটির সাইনিং ক্রেডেনশিয়াল থাকে। আপনি যে অ্যাপটি তৈরি করেননি, সেটিতে আপনার সার্ভার সরাসরি পুশ পাঠাতে পারে না। তাই ভেন্ডরের অ্যাপ স্টোর বিল্ড ব্যবহার করা একটি সেলফ-হোস্টেড চ্যাট সার্ভারকে অবশ্যই ভেন্ডরের গেটওয়ের কাছে নোটিফিকেশন পাঠাতে হয় এবং ভেন্ডরই এর শর্তাবলী নির্ধারণ করে।

  • Mattermost. বিনামূল্যে ব্যবহারের পথ হলো https://push-test.mattermost.com-এ অবস্থিত Test Push Notification Service (TPNS), যা ডকুমেন্টেশন অনুযায়ী প্রোডাকশন এনভায়রনমেন্টের জন্য সুপারিশ করা হয় না এবং এর কোনো সার্ভিস লেভেল এগ্রিমেন্ট (SLA) নেই। এটি শুধুমাত্র অ্যাপ স্টোর এবং প্লে স্টোর বিল্ডের সাথেই কাজ করে। Hosted Push Notification Service (HPNS) প্রোডাকশন গ্রেডের এবং এর জন্য পেইড সাবস্ক্রিপশন প্রয়োজন। তৃতীয় উপায় হলো পুশ প্রক্সি নিজে কম্পাইল করা, যার জন্য আপনার নিজস্ব APNs এবং FCM ক্রেডেনশিয়ালসহ নিজস্ব অ্যাপ বিল্ড তৈরি করতে হবে।
  • Rocket.Chat. পুশ ব্যবহারের জন্য ওয়ার্কস্পেসটিকে Rocket.Chat Cloud-এ রেজিস্টার করতে হয় এবং কমিউনিটি ওয়ার্কস্পেসের জন্য প্রতি মাসে 10,000 পুশ নোটিফিকেশনের সীমা নির্ধারণ করা আছে। এটি পুরো ওয়ার্কস্পেসের জন্য দিনে প্রায় 330টি নোটিফিকেশন। কোটা শেষ হয়ে গেলে মাস রিসেট না হওয়া পর্যন্ত নোটিফিকেশন আসা বন্ধ হয়ে যায়, যা ব্যবহারকারীদের কাছে অ্যাপটি অকেজো মনে হতে পারে।
  • Matrix with Element. Synapse একটি পুশ গেটওয়েতে নোটিফিকেশন পাঠায় এবং অফিসিয়াল Element অ্যাপগুলো https://matrix.org/_matrix/push/v1/notify-এ matrix.org দ্বারা পরিচালিত গেটওয়ের দিকে নির্দেশ করা থাকে। পেলোডে মেসেজের টেক্সটের পরিবর্তে ইভেন্ট এবং রুম আইডেন্টিফায়ার থাকে এবং অ্যাপটি আপনার সার্ভার থেকে কন্টেন্ট সংগ্রহ করে, তাই গেটওয়ে কথোপকথনের পরিবর্তে শুধুমাত্র মেটাডেটা দেখতে পায়। নিজস্ব Sygnal গেটওয়ে চালানো সমর্থিত, যার অর্থ হলো আপনাকে নিজস্ব অ্যাপ তৈরি এবং বিতরণ করতে হবে। অ্যান্ড্রয়েডের ক্ষেত্রে একটি মধ্যবর্তী পথ রয়েছে: আপনার হোস্ট করা ntfy সার্ভারের সাথে UnifiedPush ব্যবহার করা।
  • Zulip. ফ্রি প্ল্যানে 10 জন ব্যবহারকারী পর্যন্ত মোবাইল পুশ সার্ভিস অন্তর্ভুক্ত থাকে। 10 জনের বেশি ব্যবহারকারীর ক্ষেত্রে একটি প্ল্যান প্রয়োজন হয় এবং ফ্রি কমিউনিটি প্ল্যানটি অনেক অ-বাণিজ্যিক প্রতিষ্ঠানের জন্য প্রযোজ্য। Zulip 12.0, যা এপ্রিল 2026-এ মুক্তি পায়, পুশ পেলোডের জন্য এন্ড-টু-এন্ড এনক্রিপশন যুক্ত করেছে।

দশজন ব্যবহারকারীর ক্ষেত্রে এর প্রতিটিই আপনাকে বিনামূল্যে কার্যকর নোটিফিকেশন দেয়। কিন্তু একশ ব্যবহারকারীর ক্ষেত্রে পরিস্থিতি বদলে যায়: Zulip-এর জন্য প্ল্যান প্রয়োজন হয়, Mattermost কোনো SLA বা সাপোর্ট ছাড়াই টেস্ট সার্ভিসে চলতে থাকে, Rocket.Chat-এর মাসিক সীমা একটি সীমাবদ্ধতা হয়ে দাঁড়ায় এবং Matrix-এর ক্ষেত্রে কোনো প্রভাব পড়ে না কারণ এর গেটওয়ে বিনামূল্যে ব্যবহার করা যায়।

কোনগুলো বিনামূল্যে সিঙ্গেল সাইন-অন (SSO) সুবিধা দেয়

সিঙ্গেল সাইন-অন (SSO) হলো এমন একটি ক্ষেত্র যেখানে ওপেন কোর বিজনেস মডেল সবচেয়ে স্পষ্টভাবে ফুটে ওঠে।

  • Zulip-এর সেলফ-হোস্টেড সার্ভারে কোনো খরচ ছাড়াই SAML (security assertion markup language) এবং LDAP (lightweight directory access protocol) অন্তর্ভুক্ত থাকে। এর জন্য আলাদা কোনো প্রিমিয়াম টায়ার কেনার প্রয়োজন নেই।
  • Synapse তার নিজস্ব কনফিগারেশন ফাইলে বিনামূল্যে OpenID Connect (OIDC), SAML এবং CAS সমর্থন করে। নতুন ডেপ্লয়মেন্টগুলোতে ক্রমশ Matrix Authentication Service ব্যবহার করা হচ্ছে, যা একটি আলাদা সার্ভিস। এতে ক্লাসিক Synapse অথেন্টিকেশন থেকে একমুখী মাইগ্রেশনের ব্যবস্থা রয়েছে, তাই বিষয়টি আগে থেকেই পরিকল্পনা করে রাখুন।
  • Rocket.Chat কমিউনিটি এডিশন মৌলিক LDAP এবং SAML লগইন সুবিধা দেয়। তবে বর্ধিত ইউজার অ্যাট্রিবিউট সিঙ্ক করা, গ্রুপ ও টিম ম্যাপিং এবং ব্যাকগ্রাউন্ড সিনক্রোনাইজেশনের জন্য এন্টারপ্রাইজ লাইসেন্স প্রয়োজন।
  • Mattermost ফ্রি টিম এডিশনে শুধুমাত্র GitLab OAuth সুবিধা পাওয়া যায়। SAML, AD/LDAP এবং OpenID Connect ব্যবহারের জন্য অর্থ প্রদান করতে হয়।

আপনি যদি একটি লগইনের মাধ্যমে একাধিক সার্ভিস পরিচালনা করতে চান, তবে সেগুলোর সামনে একটি সেলফ-হোস্টেড Authentik আইডেন্টিটি প্রোভাইডার বসিয়ে নিন এবং আপনার কাছে থাকা লাইসেন্স অনুযায়ী এই চারটি সার্ভিসের কোনটি তার সাথে সংযোগ স্থাপন করতে পারে তা যাচাই করে দেখুন।

ফেডারেশন আসলে আপনার কী খরচ বাড়ায়

ফেডারেশন হলো Matrix-এর অস্তিত্বের মূল কারণ। আপনার ব্যবহারকারী অন্য কারো সার্ভারে হোস্ট করা কোনো রুমে যোগ দেন এবং সেখানে থাকা অ্যাকাউন্টধারীদের সাথে কথা বলেন, ঠিক যেভাবে মেইল সার্ভারগুলো একে অপরের সাথে মেইল আদান-প্রদান করে। এই পৃষ্ঠায় থাকা অন্য কোনো বিকল্প এটি করতে পারে না। যদি আপনার এটি প্রয়োজন হয়, তবে এই পৃষ্ঠার অন্য কোনো কিছুই এর বিকল্প হতে পারে না।

এটিই কারণ যে Synapse একটি ভিন্ন ধরনের কাজের চাপ তৈরি করে। যখন আপনার ব্যবহারকারী কোনো ফেডারেশন রুমে যোগ দেন, তখন আপনার সার্ভার সেই রুমের স্টেট এবং ইভেন্টগুলোর একটি কপি গ্রহণ করে এবং অন্যান্য সার্ভারের ব্যবহারকারীরা যে মিডিয়া পোস্ট করে—যেমন অবতার, ছবি এবং ফাইল—সেগুলো ক্যাশ (cache) করে রাখে। ফলে আপনার ডিস্কের ব্যবহার এমন সব রুমের কারণে বৃদ্ধি পায় যা আপনি তৈরি করেননি এবং এমন সব মানুষের কারণে যাদের আপনার সার্ভারে কোনো অ্যাকাউন্ট নেই। এই কারণেই Synapse ইনস্টলেশনগুলোতে তাদের নিজস্ব ব্যবহারকারীদের পাঠানো বার্তার পরিমাণের চেয়ে অনেক বড় মিডিয়া স্টোর তৈরি হয়। আর এই কারণেই বড় কোনো পাবলিক রুমে যোগ দেওয়াকে ডকুমেন্টেশনে মেমোরি সংক্রান্ত শর্তের সাথে যুক্ত করা হয়েছে।

ডিস্ক পূর্ণ হওয়ার দিনটির জন্য অপেক্ষা না করে প্রথম দিনেই রিটেনশন পলিসি (retention policy) সেট করুন:

media_retention:
  local_media_lifetime: 90d
  remote_media_lifetime: 14d

Synapse সংস্করণ 1.61-এ media_retention সুবিধাটি যুক্ত করেছে, যেখানে লোকাল এবং রিমোট মিডিয়ার জন্য আলাদা আলাদা লাইফটাইম নির্ধারণ করা যায়। রিমোট মিডিয়া একটি ক্যাশ, তাই যদি কোনো ব্যবহারকারী মুছে ফেলা ফাইল পুনরায় দেখতে চান, তবে Synapse যে সার্ভার থেকে ফাইলটি এসেছিল সেখান থেকে তা আবার অনুরোধ করে নিয়ে আসে। লোকাল মিডিয়া ক্যাশ নয়, তাই খুব কম সময়ের local_media_lifetime সেট করলে তা আপনার ব্যবহারকারীদের আপলোড করা ফাইলগুলো স্থায়ীভাবে মুছে ফেলবে।

সতর্ক সারসংক্ষেপ: যদি আপনার ব্যবহারকারীরা কেবল নিজেদের মধ্যেই কথা বলেন, তবে ফেডারেশন আপনাকে কিছুই দেয় না বরং ডিস্ক, ব্যান্ডউইথ এবং আপগ্রেড প্রক্রিয়ার জটিলতা বাড়িয়ে দেয়। এটি বন্ধ রাখুন অথবা অন্য কোনো সার্ভার বেছে নিন।

আপগ্রেড প্রক্রিয়া কেমন হয়

Zulip সবচেয়ে সহজ। মাত্র একটি স্ক্রিপ্ট, এবং বড় কোনো ডাটাবেস মাইগ্রেশন না থাকলে এর ডাউনটাইম 30 সেকেন্ডের কম। সার্ভারে আপনার চালানো ইনস্টল এবং আপগ্রেড প্রক্রিয়াটি এমন:

cd $(mktemp -d)
curl -fLO https://download.zulip.com/server/zulip-server-latest.tar.gz
tar -xf zulip-server-latest.tar.gz

ইনস্টলারটি root হিসেবে চালান। ইনস্টল করার সময় --push-notifications ফ্ল্যাগটি সার্ভারকে মোবাইল পুশ সার্ভিসের সাথে রেজিস্টার করে। সেই মুহূর্তে এটি আপনাকে টার্মস অফ সার্ভিস গ্রহণ করতে বলবে, তাই শুরু করার আগে সেগুলো পড়ে নিন।

sudo ./zulip-server-*/scripts/setup/install --push-notifications --certbot \
    --email=YOUR_EMAIL --hostname=YOUR_HOSTNAME

পরবর্তী আপগ্রেডগুলো একই টারবল (tarball) এবং একটি কমান্ডের মাধ্যমে করা হয়:

curl -fLO https://download.zulip.com/server/zulip-server-latest.tar.gz
sudo /home/zulip/deployments/current/scripts/upgrade-zulip zulip-server-latest.tar.gz

Mattermost বেশ অনুমানযোগ্য। বাইনারি ফাইলটি প্রতিস্থাপন করুন, রিস্টার্ট দিন, এবং স্টার্টআপের সময় মাইগ্রেশনগুলো স্বয়ংক্রিয়ভাবে সম্পন্ন হবে। আগস্ট 2025 রিলিজের পর থেকে Extended Support Release (ESR) ট্র্যাক প্রতি 9 মাস অন্তর আসে এবং 12 মাসের সাপোর্ট দেয়। ESR থেকে ESR আপগ্রেড করাই পরীক্ষিত পদ্ধতি। একসাথে কয়েকটি ESR ভার্সন বাদ দিয়ে আপগ্রেড করা সমর্থিত হলেও তা পরীক্ষিত নয়, যার অর্থ বাস্তবে আপনি নিজেই এটি পরীক্ষা করছেন।

Rocket.Chat-এ তিনটি আপগ্রেড একসাথে করতে হয়। আগস্ট 2026 অনুযায়ী 8.x লাইনটি বর্তমান, যার 8.7.0 ভার্সনটি 6 আগস্ট 2026-এ রিলিজ হয়েছে। এটি চালানোর জন্য MongoDB 8.0 এবং সামঞ্জস্যপূর্ণ Node.js ভার্সন প্রয়োজন। মেজর ভার্সন বাদ দিয়ে আপগ্রেড করলে এমন ডাটাবেস তৈরি হতে পারে যা অ্যাপ্লিকেশনটি আর খুলতে পারবে না। Rocket.Chat Docker Compose ইনস্টল গাইড আপনার জন্য এই ভার্সনগুলোকে পিন করে রাখে, যা এখানে কন্টেইনার পদ্ধতি ব্যবহারের প্রধান কারণ।

Synapse-এর ক্ষেত্রে পড়ার প্রয়োজন আছে। প্রতিটি রিলিজের সাথে আপগ্রেড নোট থাকে। আপনি যে ভার্সনে পৌঁছাচ্ছেন শুধু সেটি নয়, বরং মাঝখানের প্রতিটি ভার্সনের নোট আপনাকে পড়তে হবে। আপগ্রেডের পর Synapse ডাটাবেসে ব্যাকগ্রাউন্ড আপডেট চালায়। ছোট সার্ভারে এগুলো কয়েক ঘণ্টা ধরে মেশিনকে ধীরগতির করে রাখতে পারে, এবং এটি কোনো ত্রুটি নয়, বরং প্রত্যাশিত আচরণ।

লাইসেন্সের শর্তাবলী, সহজ ভাষায়

Mattermost তাদের কম্পাইল করা Team Edition বিল্ডগুলো MIT লাইসেন্সের অধীনে বিতরণ করে। এর সোর্স কোড AGPLv3 অথবা বাণিজ্যিক লাইসেন্সের অধীনে পাওয়া যায়। রিপোজিটরির কিছু অংশ Mattermost Source Available License-এর অন্তর্ভুক্ত, যা প্রোডাকশনে চালানোর জন্য পেইড লাইসেন্স প্রয়োজন। Rocket.Chat-এর ক্ষেত্রে ee/ ডিরেক্টরিগুলো বাদে বাকি সব MIT লাইসেন্সভুক্ত, যেগুলোর নিজস্ব এন্টারপ্রাইজ লাইসেন্স রয়েছে। Synapse 1.99.0 ভার্সন থেকে Apache 2.0 থেকে AGPLv3-তে স্থানান্তরিত হয়েছে এবং কন্ট্রিবিউটররা একটি CLA স্বাক্ষর করেন, যা Element-কে সেই লাইসেন্সের ব্যতিক্রম বিক্রির সুযোগ দেয়। Zulip সম্পূর্ণ Apache 2.0 লাইসেন্সভুক্ত এবং এতে কোনো এন্টারপ্রাইজ ডিরেক্টরি নেই, যার ফলে এর SSO ফিচারের সাথে কোনো শর্ত বা অ্যাস্টেরিস্ক নেই।

ব্যবহারিক দিক থেকে: আপনি যদি সার্ভার পরিবর্তন করে অন্যদের কাছে সার্ভিস হিসেবে অফার করতে চান, কেবল তখনই AGPL আপনার জন্য গুরুত্বপূর্ণ। ছোট টিমের জন্য যা বেশি গুরুত্বপূর্ণ তা হলো ওপেন কোর মডেল, অর্থাৎ ফ্রি বিল্ডে কোন ফিচারগুলো নেই। Zulip-এ এই সীমাবদ্ধতা সবচেয়ে কম, আর Mattermost-এ সবচেয়ে বেশি।

কোনটি বেছে নেবেন

একটি অভ্যন্তরীণ টিম টুল। Mattermost। এর ডকুমেন্টেশনে উল্লিখিত ফুটপ্রিন্ট সবচেয়ে ছোট, আপগ্রেড প্রক্রিয়া অত্যন্ত সহজ এবং ইন্টারফেসটি পরিচিত হওয়ায় কাউকে আলাদা করে বোঝাতে হয় না। যেদিন SSO প্রয়োজনীয় হয়ে পড়বে, সেদিনই পেইড প্ল্যানের জন্য প্রস্তুতি রাখুন, কারণ অধিকাংশ টিমের ক্ষেত্রেই এই দিনটি চলে আসে।

একটি কমিউনিটি সার্ভার। Zulip। এর টপিক ফিচার ব্যস্ত পাবলিক চ্যানেলগুলোকে কয়েক মাস পরেও পড়ার উপযোগী রাখে, SAML এবং LDAP-এর জন্য কোনো খরচ নেই এবং একটি কমান্ডেই আপগ্রেড সম্পন্ন হয়। আপনার কমিউনিটি যদি লাইভ চ্যাটের চেয়ে পোস্ট এবং রিপ্লাইয়ের দিকে বেশি ঝুঁকে থাকে, তবে আগে self-hosted forum software যাচাই করে দেখুন, কারণ ফোরাম সার্চ ইঞ্জিনে ভালো ইনডেক্স হয় এবং এতে কোনো পুশ ইনফ্রাস্ট্রাকচারের প্রয়োজন হয় না। যদি ভয়েস, ভিডিও এবং অমনিচ্যানেল ফিচারের প্রয়োজন হয় এবং এর ডকুমেন্টেশনে উল্লিখিত 8 GB র‍্যাম বরাদ্দ করতে পারেন, তবে Rocket.Chat বেছে নিন।

একটি নেটওয়ার্ক যা ইন্টারঅপারেট করতে সক্ষম। Synapse এবং Element সহ Matrix। মিডিয়া ফাইলের আকার বৃদ্ধি মেনে নিন, প্রথম দিন থেকেই রিটেনশন পলিসি সেট করুন, একে PostgreSQL ডাটাবেস দিন এবং আপনার ধারণার চেয়েও বেশি ডিস্ক স্পেস রাখুন। আপনার নিয়ন্ত্রণে নেই এমন সার্ভারের সাথে যোগাযোগের মাধ্যমে আপনি প্রকৃত সুবিধা পাবেন। যে টিম কখনোই ফেডারেশন ব্যবহার করবে না, তাদের জন্য Synapse বেছে নেওয়া মানে অকারণে বাড়তি খরচ করা।

FAQ

ছোট টিমের জন্য সেরা self-hosted Slack বিকল্প কোনটি?

অধিকাংশ অভ্যন্তরীণ টিমের জন্য Mattermost সেরা। এর ডকুমেন্টেশন অনুযায়ী, একটি vCPU এবং 2 GB RAM-এর মেশিনে PostgreSQL সহ 1 থেকে 1,000 ব্যবহারকারী চালানো সম্ভব, যা বেশিরভাগ প্রোভাইডারের এন্ট্রি-লেভেল VPS প্ল্যানের সাথে সামঞ্জস্যপূর্ণ। তবে এর সীমাবদ্ধতা হলো single sign-on: ফ্রি Team Edition-এ শুধুমাত্র GitLab OAuth সাপোর্ট করে, আর SAML, AD/LDAP এবং OpenID Connect ব্যবহারের জন্য পেইড প্ল্যান প্রয়োজন। যদি Slack-এর মতো ইন্টারফেসের চেয়ে ফ্রি SSO বেশি গুরুত্বপূর্ণ হয়, তবে Zulip ব্যবহার করুন।

আমি কি 2 GB VPS-এ self-hosted chat server চালাতে পারব?

Mattermost-এর ক্ষেত্রে হ্যাঁ, এবং Zulip-এর ক্ষেত্রেও হ্যাঁ যদি আপনি swap যোগ করেন (Zulip-এর নিজস্ব ডকুমেন্টেশন 5 GB-এর নিচে RAM থাকলে এটি করার পরামর্শ দেয়)। Rocket.Chat এক্ষেত্রে হতাশ করতে পারে, কারণ MongoDB-এর WiredTiger ইঞ্জিন তার ক্যাশের জন্য (RAM minus 1 GB)-এর 50% অথবা 256 MB-এর মধ্যে যেটি বড় সেটি দখল করে নেয়; ফলে অ্যাপ্লিকেশন শুরু হওয়ার আগেই 2 GB-এর প্রায় 512 MB শেষ হয়ে যায়। এটি ইনস্টল হবে ঠিকই, কিন্তু চ্যাট হিস্ট্রি বাড়ার সাথে সাথে পারফরম্যান্স কমতে থাকবে এবং শেষ পর্যন্ত out of memory error-এর কারণে বন্ধ হয়ে যাবে। Rocket.Chat-এর সর্বনিম্ন প্রস্তাবিত কনফিগারেশন হলো অ্যাপের জন্য 4 GiB এবং MongoDB-এর জন্য 4 GiB RAM।

self-hosted chat server-এর কি নিজস্ব mobile push notification server প্রয়োজন?

সাধারণত না, কারণ Apple-এর APNs এবং Google-এর FCM শুধুমাত্র তাদের কাছ থেকেই নোটিফিকেশন গ্রহণ করে যারা অ্যাপটি সাইন (sign) করেছে, তাই ভেন্ডরের অ্যাপ ভেন্ডরের গেটওয়েই ব্যবহার করে। শর্তাবলী ভিন্ন হয়। Mattermost কোনো SLA ছাড়া একটি ফ্রি টেস্ট সার্ভিস এবং একটি পেইড হোস্টেড সার্ভিস অফার করে। Rocket.Chat কমিউনিটি ওয়ার্কস্পেসের জন্য প্রতি মাসে 10,000 পুশ নোটিফিকেশনের সীমা নির্ধারণ করে দিয়েছে, যার পরে মাস শেষ না হওয়া পর্যন্ত নোটিফিকেশন আসা বন্ধ হয়ে যায়। Zulip 10 জন ব্যবহারকারী পর্যন্ত ফ্রি পুশ সুবিধা দেয় এবং এর বেশি হলে প্ল্যান কিনতে হয়। Matrix homeserver-গুলো কোনো খরচ ছাড়াই Element অ্যাপের মাধ্যমে পুশ সুবিধা দেয়। আপনার নিজস্ব গেটওয়ে তখনই প্রয়োজন হবে যদি আপনি নিজের তৈরি অ্যাপ বিল্ড (app builds) ব্যবহার করেন।

যে টিম অন্য কোনো সার্ভারের সাথে যোগাযোগ করে না, তাদের কি Matrix এবং Synapse self-host করা উচিত?

না। Federation-এর জন্যই Synapse তৈরি, আর এটিই একে ভারী করে তোলে। অন্য সার্ভারের রুমে যোগ দিলে তাদের স্টেট এবং মিডিয়া আপনার ডিস্কে ক্যাশ হয়, ফলে আপনার নিজস্ব ব্যবহারকারীদের কার্যক্রম ছাড়াও স্টোরেজ বাড়তে থাকে। এটি ঘটার আগেই media_retention সেট করে remote_media_lifetime কমিয়ে রাখুন। যে টিম শুধুমাত্র নিজেদের মধ্যে কথা বলে, তাদের জন্য এটি অপ্রয়োজনীয় অপারেশনাল খরচ বাড়ায়; Mattermost বা Zulip একই কাজ কম হার্ডওয়্যারে করতে সক্ষম।

কোন self-hosted Slack বিকল্পে ফ্রি single sign-on পাওয়া যায়?

Zulip এবং Synapse। Zulip-এর self-hosted সার্ভারে SAML এবং LDAP বিনামূল্যে অন্তর্ভুক্ত থাকে। Synapse তার কনফিগারেশনে OpenID Connect, SAML এবং CAS সাপোর্ট করে, এবং নতুন ইনস্টলেশনগুলো আলাদা Matrix Authentication Service-এ স্থানান্তরিত হচ্ছে। Rocket.Chat-এর কমিউনিটি এডিশন সাধারণ LDAP এবং SAML লগইন সাপোর্ট করলেও attribute sync, group mapping এবং background sync-এর জন্য এন্টারপ্রাইজ লাইসেন্স প্রয়োজন হয়। Mattermost-এর ফ্রি Team Edition শুধুমাত্র GitLab OAuth সাপোর্ট করে।