Self-hosted chat is one of the few workloads where a budget VPS can cover a small team or community without compromise. Matrix, the protocol behind Element, is the most demanding of the popular options because its homeserver runs a database, federation, and media storage together. IRC, XMPP, and simpler chat servers are lighter still. This guide prices each option on real tiers and identifies where a $5 plan is enough and where it is not.
The deciding factor is almost never CPU. A chat server is a database and disk workload: message history, room state, and uploaded media drive both RAM and storage. Getting the storage plan wrong is the usual reason self-hosted chat becomes expensive.
Minimum Specs by Chat Platform
The practical floors for a small deployment of up to roughly twenty regular users:
- InspIRCd or Ergo (IRC): 512 MB RAM, no database to speak of
- Prosody (XMPP): 512 MB-1 GB RAM with an embedded database
- Mattermost or Rocket.Chat: 2 GB RAM minimum, PostgreSQL plus a web app
- Synapse (Matrix): 2 GB RAM practical floor, 4 GB recommended
Synapse is the outlier. It is a Python application that keeps substantial state in memory, runs PostgreSQL, and generates a large database relative to message volume. Below 2 GB it will run but regularly hits the OOM killer under federation load. Mattermost and Rocket.Chat are simpler internally but heavier than a bare protocol daemon.
Why Synapse Costs More Than You Expect
Three factors drive Matrix cost upward on a budget host. First, the database grows faster than you would guess because room state, device lists, and event history all persist. Second, joining or federating with large public rooms pulls in enormous amounts of state, which can multiply database size overnight.
Third, media storage is separate from the database and grows with every image and file shared. A small private room with light text traffic stays modest, but a room that joins public Matrix spaces can see tenfold the storage. Lighter Matrix homeservers such as Conduit and Dendrite reduce memory overhead substantially and fit a 1 GB plan for a private instance, though they are less feature-complete.
Monthly Cost Model
A twenty-user private Matrix deployment with mainly text traffic and moderate media:
- Base plan (2 vCPU, 2 GB RAM, 50 GB NVMe): $7-10
- Automated backups at 20-25 percent of base: $1.50-2.50
- Extra storage or object storage for media: $1-3
- Domain name amortised monthly: $0.80-1.00
- Total: roughly $11-17 per month
An IRC or XMPP server for the same group fits a $3-5 plan with no extra storage, because there is no media archive and the database is tiny. The gap between a protocol daemon and a full Matrix homeserver is the single biggest cost decision in self-hosted chat.
Media Storage Is the Real Budget Risk
Text messages are small; uploaded files are not. A shared screenshot is 200-800 KB, a short video can be 20-50 MB. Ten users posting a few media items a day can generate several gigabytes per month, and that data accumulates permanently unless you set retention.
Two mitigations work well on a budget. Offload media to object storage and let the chat server rewrite links, which costs roughly $0.005-0.023 per GB-month for storage plus minimal egress. Or enable server-side media retention so old attachments expire. Both keep the VPS disk, which is the more expensive place to store bytes, from filling. See our notes on storage tiers in the budget VPS comparison table.
Federation: Joining the Wider Network
Turning on federation for a Matrix homeserver connects it to the global network but multiplies resource use. Joining a large public room pulls its full state history, and each federated room adds ongoing sync traffic. On a 2 GB plan, federating into a handful of busy rooms can consume most of the RAM.
If budget is the priority, keep the instance private and federate selectively, or avoid joining high-traffic public rooms entirely. For a team that just needs its own chat, disabling federation removes the most expensive and least predictable part of the workload.
Operational Notes
Run the database on the same host for small deployments; a separate database VPS doubles cost for little benefit at this scale. Tune PostgreSQL for low memory using conservative connection limits and shared buffers sized to install RAM. Back up the database nightly and the media directory less frequently, since media changes more slowly.
The most common failure modes are database growth outpacing disk and silent federation errors that only appear in logs. Alert on disk at 80 percent and check the homeserver’s own metrics for failed outbound requests. For most small deployments, straightforward monitoring prevents nearly every outage. If you are choosing a host for this workload, compare budget VPS plans on RAM and storage rather than core count.
Bottom Line
Self-hosted chat ranges from nearly free to moderately expensive depending on protocol. IRC and XMPP run on $3-5 plans with plenty of room. Mattermost and Rocket.Chat want 2 GB and roughly $8-12 monthly. Matrix with Synapse is the priciest at $11-17 monthly for a small group, and lighter homeservers or federation limits bring it near a $7 plan. Decide your protocol first, size storage for media second, and the budget follows.

