[{"data":1,"prerenderedAt":205},["ShallowReactive",2],{"seo-verification":3,"blog-host-rocketchat-on-your-own-vps-en":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"id":7,"slug":8,"slugs":9,"title":12,"excerpt":13,"readTime":14,"views":15,"isPinned":16,"publishedAt":17,"category":18,"categories":24,"featuredImage":26,"bgImage":27,"posterImage":28,"relatedSolution":29,"intro":31,"sections":32,"ctaTitle":149,"ctaBody":150,"ctaButton":151,"ctaUrl":152,"relatedPosts":153},77,"host-rocketchat-on-your-own-vps",{"fr":10,"en":8,"ar":11},"heberger-rocket-chat","استضافة-rocketchat-على-خادم-vps-الخاص-بك","Host Rocket.Chat on your own VPS","Install Rocket.Chat on your VPS with Docker, MongoDB and SSL. Full guide: omnichannel, administration, updates, monitoring and SSO.",9,0,false,"2026-04-04T00:00:00+00:00",{"id":19,"name":20,"slug":21,"color":22,"icon":23},7,"Self-hosting","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[25],{"id":19,"name":20,"slug":21,"color":22,"icon":23},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fheberger-rocket-chat-poster.svg",{"categorySlug":21,"appSlug":30},"rocket-chat","Rocket.Chat is a very complete open source communication platform: chat, audio\u002Fvideo calls, omnichannel and Matrix federation. Self-hosted on a VPS, it becomes a communication hub entirely under your control — no per-seat fees, no message cap, no data at a third party. This guide takes you from the initial Docker and MongoDB setup through to production: SSL, WhatsApp and e-mail channels, post-deployment administration, update strategy, monitoring and SSO.",[33,37,48,51,76,79,82,85,97,100,103,105],{"type":34,"title":35,"body":36},"h2","Why self-host Rocket.Chat on a VPS","Rocket.Chat goes well beyond a simple team messaging tool: it offers a native omnichannel module (WhatsApp Business, e-mail, website chat widgets), audio and video calls, and federation via the Matrix protocol. For an agency or SMB that wants to centralize both internal communication and customer support, self-hosting on a VPS avoids multiplying subscriptions and keeps all exchanges — including customer conversations — on an infrastructure you control. Rocket.Chat relies on MongoDB, which makes it a bit more resource-hungry than Mattermost, but opens the way to rich integrations and an extension marketplace.",{"type":38,"title":39,"items":40},"ul","Concrete benefits of a self-hosted Rocket.Chat",[41,42,43,44,45,46,47],"Built-in omnichannel module to handle web support, e-mail and messaging from a single interface.","Audio\u002Fvideo calls and screen sharing without depending on a third-party service.","Matrix federation to interconnect your server with other organizations.","App marketplace and a broad catalog of integrations (webhooks, bots).","Extensive customization of the instance theme and branding.","Conversation data and files kept on your own VPS.","SSO (LDAP, SAML, OAuth) included for free — no extra cost unlike Slack or Teams.",{"type":34,"title":49,"body":50},"Hardware and software prerequisites","Rocket.Chat and MongoDB are relatively memory-demanding. For a team of up to 50 users, plan for a VPS with 2 to 4 vCPU and at least 4 GB of RAM; aim for 8 GB for an active instance with omnichannel and video calls. MongoDB must run in replica set mode (even with a single node) because Rocket.Chat uses the oplog for real time. Count on 30 to 50 GB of SSD. You need Docker and Compose, a chat.yourdomain.com subdomain with an A record, and a reverse proxy that handles WebSockets.",{"type":52,"title":53,"steps":54},"steps","Deploy Rocket.Chat with Docker and SSL",[55,58,61,64,67,70,73],{"title":56,"body":57},"Provision the VPS","Install Docker and the Compose plugin, create \u002Fopt\u002Frocketchat. Check that available RAM is sufficient: MongoDB and Rocket.Chat can saturate a 2 GB VPS under load.",{"title":59,"body":60},"Configure MongoDB in a replica set","Declare a mongodb service (image bitnami\u002Fmongodb or mongo) enabling the replica set: it is mandatory for the oplog. Without this step, Rocket.Chat starts but real time and some functions fail. Persist the data in a dedicated volume.",{"title":62,"body":63},"Define the Rocket.Chat service","Add the rocketchat service (image registry.rocket.chat\u002Frocketchat\u002Frocket.chat) with the MONGO_URL, MONGO_OPLOG_URL and ROOT_URL variables set to HTTPS. Make it depend on MongoDB and expose port 3000 internally only.",{"title":65,"body":66},"Start and verify","Run docker compose up -d then docker compose logs -f rocketchat. The first startup migrates the MongoDB schema and can take one to two minutes. Wait for the message indicating that the server is ready on port 3000.",{"title":68,"body":69},"Set up reverse proxy and SSL","With Caddy: chat.yourdomain.com { reverse_proxy localhost:3000 }. With Nginx, proxy to 127.0.0.1:3000 forwarding the Upgrade\u002FConnection headers for the WebSocket, then generate the certificate via certbot.",{"title":71,"body":72},"Close the setup wizard","Left alone, Rocket.Chat shows a wizard on first load that creates the administrator account — any visitor who gets there before you can claim it. Pass ADMIN_USERNAME, ADMIN_PASS, ADMIN_EMAIL and OVERWRITE_SETTING_Show_Setup_Wizard=completed as environment variables from the very first boot: the administrator then exists before the URL ever answers.",{"title":74,"body":75},"Sign in for the first time","On a ServOrbit catalogue install, the administrator account already exists with a random password shown in your client area. Open https:\u002F\u002Fchat.yourdomain.com, sign in, change the password, disable public registration if the instance is private, and configure SMTP for invitations.",{"type":34,"title":77,"body":78},"Post-deployment administration: rooms, roles and webhooks","Once logged in as administrator, go to Administration > Rooms to create your rooms (public channel, private group, discussion channel). Define a naming convention from the start: for example #team-dev, #customer-support, #general-announcements. Assign roles via Administration > Roles: the Admin, Moderator, User and Guest roles are preconfigured; you can create custom ones with fine-grained permissions (read but not write, see but not invite, moderate but not administer). For large teams, use LDAP groups to automatically assign roles at login. Incoming webhooks let you push notifications from external tools (GitLab, Grafana, your CRM) directly into a room: Administration > Integrations > New Integration > Incoming WebHook. Rocket.Chat generates a unique URL; the caller sends a POST JSON with at least the text field. An optional alias and avatar help identify the message source at a glance. You can also define scripts to filter or transform incoming messages before display, and configure outgoing webhooks (Outgoing WebHook) to notify an external service on every message posted in a given room.",{"type":34,"title":80,"body":81},"Connect the omnichannel: WhatsApp, web widget and e-mail","The Omnichannel module unifies external channels into a ticket queue managed by your agents. Enable it in Administration > Omnichannel > Activation. For the web widget, go to Omnichannel > Livechat > Installation: Rocket.Chat generates a JavaScript snippet to paste on your website; you can customize its color, title and pre-filled fields. For e-mail, configure an IMAP address in Omnichannel > Email Inbox: each incoming e-mail automatically creates a ticket assigned to your support department. For WhatsApp Business API, you need an official provider (BSP) such as 360dialog or Twilio: in the App Marketplace, install the WhatsApp app and enter your BSP credentials. WhatsApp conversations then arrive in the same queue as web chat and e-mail, with a unified history. Agents switch between channels without changing tools — that is the core advantage of a native omnichannel.",{"type":83,"body":84},"tip","SSO included for free when self-hosted. Rocket.Chat supports LDAP\u002FActive Directory, SAML 2.0 and OAuth (Google, GitHub, GitLab, etc.) at no extra subscription cost. On Slack, SAML SSO is reserved for Business+ plans; on a self-hosted Rocket.Chat, enable it under Administration > Settings > LDAP or > SAML. This is a major differentiator for companies that already use an Active Directory or an IdP like Keycloak.",{"type":52,"title":86,"steps":87},"Update Rocket.Chat with Docker (rolling update)",[88,91,94],{"title":89,"body":90},"Back up MongoDB before any update","Run mongodump from the container: docker exec \u003Cmongodb_container> mongodump --out \u002Fdata\u002Fbackup\u002F. Copy the dump off the server (scp or rsync to remote storage). Never skip this step: some Rocket.Chat schema migrations are irreversible.",{"title":92,"body":93},"Update the Docker image","In your docker-compose.yml, replace the image tag (example: rocket.chat:7.4 to rocket.chat:7.5) or switch to latest if you accept automatic updates. Then run docker compose pull && docker compose up -d. Rocket.Chat stops, the new image starts and migrates the database. Watch the logs: docker compose logs -f rocketchat.",{"title":95,"body":96},"Verify the migration and roll back if needed","After restart, log in and check Administration > Info that the displayed version matches the target. If the migration fails, stop the container, restore the MongoDB dump with mongorestore, and reinstate the old image. Rocket.Chat offers no automatic rollback — the dump is your only safety net.",{"type":34,"title":98,"body":99},"Troubleshooting: errors actually encountered","Uninitiated replica set: this is the most common error. Without rs.initiate(), the oplog is unavailable, real-time chat is broken and some admin functions fail silently. If you use the Bitnami image, pass MONGODB_REPLICA_SET_MODE=primary and MONGODB_REPLICA_SET_KEY from the very first boot. WebSocket dropped: if messages arrive via HTTP polling rather than WebSocket, check that your reverse proxy forwards the Upgrade and Connection headers. With Nginx, add proxy_http_version 1.1 and the corresponding proxy_set_header directives. Setup wizard publicly accessible: if you did not pass OVERWRITE_SETTING_Show_Setup_Wizard=completed, anyone can create the admin account. RAM exhausted by MongoDB: WiredTiger can consume up to 50% of available RAM by default — limit it with --wiredTigerCacheSizeGB 0.5. Internal SSL certificate error: verify that ROOT_URL contains your domain in HTTPS without a trailing slash; an incorrect ROOT_URL breaks OAuth redirects and notification e-mails.",{"type":34,"title":101,"body":102},"Monitoring your instance","To detect an outage quickly, set up three layers of monitoring. Container layer: docker stats --no-stream gives CPU, RAM and network I\u002FO in real time. Configure an alert when a container dies using docker events --filter event=die in a systemd or supervisord script; a simple restart loop can also handle non-critical cases automatically. Application layer: Rocket.Chat exposes Prometheus metrics at \u002Fmetrics (enable them in Administration > Settings > General > Enable Prometheus). Pair with Grafana for dashboards on connected users, messages per minute, WebSocket response latency and MongoDB database size. Set alerts on critical thresholds: MongoDB RAM usage above 80%, pending message queue, or SSL certificate expiring within 14 days. Infrastructure layer: an external HTTP check (UptimeRobot, Better Uptime or your own Blackbox Exporter) on https:\u002F\u002Fchat.yourdomain.com\u002F alerts you to global unavailability, including network cuts or VPS shutdown. Also monitor Docker volume sizes regularly: the MongoDB database and files uploaded by users can grow quickly on a heavily used instance.",{"type":83,"body":104},"MongoDB replica set error: if logs show MongoServerError: not primary and secondaryOk=false, your connection is pointing to a secondary node or the replica set has not yet elected a primary. Check with docker exec -it \u003Cmongodb> mongosh that the member state is PRIMARY via rs.status(). If the replica set is not initialized, run rs.initiate() manually once.",{"type":106,"title":107,"headers":108,"rows":112},"comparison","Rocket.Chat versus Mattermost",[109,110,111],"Criterion","Rocket.Chat","Mattermost",[113,117,121,125,129,133,137,141,145],[114,115,116],"Database","MongoDB (replica set required)","PostgreSQL",[118,119,120],"Memory footprint","More resource-hungry (MongoDB)","Leaner at equal load",[122,123,124],"Omnichannel \u002F customer support","Built-in native module","Via third-party integrations",[126,127,128],"Audio\u002Fvideo calls","Built in","Via plugins \u002F Calls (paid edition)",[130,131,132],"Federation","Matrix","Limited",[134,135,136],"SSO (LDAP \u002F SAML)","Free when self-hosted","Paid beyond Pro licence",[138,139,140],"App marketplace","Rich and native","Plugins, a more restricted catalog",[142,143,144],"Target audience","Unified communication + customer support","Technical teams and ChatOps",[146,147,148],"Setup","More configuration (replica set)","More straightforward with PostgreSQL","Deploy Rocket.Chat on a ServOrbit Cloud VPS","With a Cloud VPS with dedicated resources and Docker ready to use, set up Rocket.Chat and MongoDB in a replica set without the headache. Internal communication and customer support brought together on your infrastructure.","Launch my Cloud VPS","\u002Fvps-cloud",[154,175,193],{"id":155,"slug":156,"slugs":157,"title":160,"excerpt":161,"readTime":162,"views":15,"isPinned":16,"publishedAt":163,"category":164,"categories":169,"featuredImage":26,"bgImage":27,"posterImage":171,"relatedSolution":172},262,"migrating-from-slack-to-mattermost-or-rocketchat-on-a-vps",{"fr":158,"en":156,"ar":159},"migration-slack-mattermost-rocketchat-vps","الهجرة-من-slack-إلى-mattermost-أو-rocketchat-على-vps","Migrating from Slack to Mattermost or Rocket.Chat on a VPS","Slack locks history and SSO behind enterprise pricing. Host Mattermost or Rocket.Chat on your VPS: step-by-step migration with Slack history import.",10,"2026-08-14T00:00:00+00:00",{"id":165,"name":166,"slug":167,"color":168,"icon":167},5,"Comparison","comparatif","bg-info\u002F10 text-info",[170],{"id":165,"name":166,"slug":167,"color":168,"icon":167},"\u002Fblog\u002Fcovers\u002Fmigration-slack-mattermost-rocketchat-vps-poster.svg",{"categorySlug":173,"appSlug":174},"collaboration-productivity","mattermost",{"id":176,"slug":177,"slugs":178,"title":181,"excerpt":182,"readTime":183,"views":15,"isPinned":16,"publishedAt":184,"category":185,"categories":190,"featuredImage":26,"bgImage":27,"posterImage":192,"relatedSolution":26},229,"docker-compose-in-production-10-point-checklist",{"fr":179,"en":177,"ar":180},"docker-compose-production-checklist","docker-compose-في-الإنتاج-قائمة-التحقق-من-10-نقاط","Docker Compose in Production: 10-Point Checklist","10 Docker Compose settings to verify before any production deployment: restart, healthchecks, limits, secrets and logs.",14,"2026-08-06T00:00:00+00:00",{"id":186,"name":187,"slug":188,"color":189,"icon":188},3,"Deployment","deploiement","bg-success\u002F10 text-success",[191],{"id":186,"name":187,"slug":188,"color":189,"icon":188},"\u002Fblog\u002Fcovers\u002Fdocker-compose-production-checklist-poster.svg",{"id":194,"slug":195,"slugs":196,"title":199,"excerpt":200,"readTime":162,"views":15,"isPinned":16,"publishedAt":184,"category":201,"categories":202,"featuredImage":26,"bgImage":27,"posterImage":204,"relatedSolution":26},227,"caddy-traefik-or-nginx-proxy-manager-which-to-choose",{"fr":197,"en":195,"ar":198},"choisir-reverse-proxy-vps-caddy-traefik-nginx","caddy-أم-traefik-أم-nginx-proxy-manager-أيهما-تختار","Caddy, Traefik or Nginx Proxy Manager: which to choose?","Caddy, Traefik or Nginx Proxy Manager for your VPS? A practical comparison to choose the right reverse proxy for your Docker stack.",{"id":165,"name":166,"slug":167,"color":168,"icon":167},[203],{"id":165,"name":166,"slug":167,"color":168,"icon":167},"\u002Fblog\u002Fcovers\u002Fchoisir-reverse-proxy-vps-caddy-traefik-nginx-poster.svg",1787581000153]