Railway

Deploy Rocket.Chat | (Just Updated) Slack Alternative Whose Real-Time Chat Actually Works

Slack alternative with a real replica-set Mongo and no claimable admin

Deploy Rocket.Chat | (Just Updated) Slack Alternative Whose Real-Time Chat Actually Works

Just deployed

/data/db

Deploy and Host Rocket.Chat on Railway

Rocket.Chat is a self-hosted team chat platform — channels, threads, DMs, voice and video calls, file sharing, bots and a full REST/Realtime API. It is the open-source alternative to Slack and Microsoft Teams, and this template runs it on the configuration it actually needs rather than the one that merely boots.

About Hosting Rocket.Chat

Rocket.Chat is a Meteor application, and Meteor delivers messages in real time by tailing MongoDB change streams. Change streams only exist on a replica set. Point Rocket.Chat at a standalone mongod — which is what a stock mongo image gives you — and the server still starts, still serves the web UI and still answers /api/info with HTTP 200, so every healthcheck passes. Underneath, the database watcher fails on a loop with The $changeStream stage is only supported on replica sets and never recovers.

This template ships MongoDB as a single-node replica set with keyfile internal authentication, initiated automatically on first boot. The stock MongoDB entrypoint cannot do this by itself: a replica set member that has not been initiated refuses writes, so the root user has to be created on a standalone instance first and the replica set initiated afterwards, against the service's private Railway hostname. Both images are pinned by digest.

Two services deploy: Rocket.Chat (public) and MongoDB (private, on a volume). Uploads default to GridFS, so files live in MongoDB and persist on that same volume — nothing lands on ephemeral container disk.

Why Deploy Rocket.Chat on Railway?

Railway gives the stack a private IPv6 network between the app and the database, a persistent volume for MongoDB, and a TLS domain that this template wires into ROOT_URL automatically — so invite links, OAuth callbacks and uploaded-file URLs point at your real domain instead of localhost from the first boot.

The admin account is seeded before the public domain answers. A stock Rocket.Chat deploy grants the admin role to the first person who registers, which on a public URL is whoever finds it first; open registration here is set to Secret URL and the administrator already exists with the password Railway generated for you.

Sizing: the Rocket.Chat service settles around 700 MB RSS at idle. That fits Railway's 1 GB Trial limit with little headroom — for a real team, run it on Hobby.

Common Use Cases

  • Internal team chat for a company that wants its message history on its own infrastructure
  • A community or customer support channel, with a public Secret-URL invite flow
  • A chat backend for bots and applications, driven through Rocket.Chat's REST and Realtime APIs

Dependencies for Rocket.Chat

  • MongoDB 8.0 running as a replica set (included in this template, on a volume)

Deployment Dependencies

Post-deploy

  1. Open the public URL and log in as admin with the generated ADMIN_PASS (Railway variables on the Rocket.Chat service).
  2. Change the admin email in Admin → Users, and the password if you want your own.
  3. Invite people: Admin → Settings → Accounts → Registration holds the Secret URL, or switch registration to Public once you want open signups.

Template Content

More templates in this category

View Template
Rocky Linux
Hosted Rocky Linux 9 workspace with SSH and persistent storage. 🚀

codestorm
40
View Template
Foundry Virtual Tabletop
A Self-Hosted & Modern Roleplaying Platform

Lucas
71
View Template
Letta Code Remote
Run a Letta Code agent 24/7. No inbound ports, just deploy.

Letta
51