Running your own Matrix homeserver is the most complete way to own a team's or a community's chat: your accounts, your rooms, your data, your retention policy, and federation with everyone else's servers when you want it. It is also the self-hosted service most likely to surprise people with its appetite — not for CPU, but for memory and disk, and specifically because of federation.
This is a sizing and hosting guide: which shape to start on, what actually consumes the resources, what federation needs from the network, and what it costs per month on our machines in Europe.
Two decisions before you size anything
Will you federate?
A homeserver that federates joins rooms on other servers, and a large public room means your server tracks the state and membership of that room. Ten users in a handful of big public rooms can cost more resources than a hundred users talking only to each other. If you are building internal team chat with federation switched off, everything below gets a shape smaller.
PostgreSQL, not SQLite
SQLite is fine for a test and wrong for anything with users. Use PostgreSQL from the start — migrating later is a chore nobody enjoys. On a single VPS, the database lives on the same machine; that is normal for small deployments and it means your shape has to hold both. Our PostgreSQL sizing guide covers the settings worth changing once it is running.
Shape by deployment size
| Deployment | Shape | RAM / vCPU / disk | Bucharest | Frankfurt · Vienna |
|---|---|---|---|---|
| Personal or family server, federation on, few small rooms | VPS II KVM | 4 GB / 2 / 40 GB | €6.00 | €9.00 |
| Small team, 10–30 users, federation off or light | VPS II KVM | 4 GB / 2 / 40 GB | €6.00 | €9.00 |
| Community server, 30–150 users, joined to large public rooms | VPS III / IV KVM | 8–16 GB / 2–4 / 60–80 GB | €10.00–€16.00 | €16.00–€26.00 |
| Busy community, several hundred users, heavy federation | VPS V / VI KVM | 24–32 GB / 6–8 / 100–120 GB | €30.00–€58.00 | €44.00–€78.00 |
The 2 GB entry shape will run a homeserver, and we would not recommend it for one you care about: between the database, the homeserver process and a reverse proxy, you are one large federated room away from swapping. Start at 4 GB.
What consumes what
- Memory: room state and caches. The homeserver keeps room state in memory and the cache factor is the single biggest lever you have. Raising it makes the server faster and hungrier; on a small machine, keep it conservative and let PostgreSQL have the rest.
- Disk: the media store, then the database. Every image, video and file anyone in your rooms sends — including rooms on other servers — can end up cached locally. This is the number that grows while you are not looking. Set a retention policy for remote media early; it is much easier than reclaiming space later.
- CPU: bursty, and mostly federation. Signature verification and state resolution spike when you join a big room. Two vCPU is enough for most small servers; more helps if you run background workers.
- Network: steady and small. Federation traffic is chatty but light, and our VPS plans have no monthly transfer allowance, so there is no overage to plan around.
If the media store is what grows, you do not need a bigger shape — you need more disk. Extra storage comes in 50 GB increments at €4 per month each, up to three increments, so a €10 VPS III can carry 60 GB of plan disk plus 150 GB for media without touching RAM you are not short of.
What federation needs from the host
- A public IPv4 address. One is included with every VPS plan.
- A reachable federation endpoint. Either port 8448 open, or delegation from your domain's
/.well-known/matrix/serverto a host and port you prefer. Delegation is usually cleaner: it lets the homeserver sit behind the same reverse proxy and certificate as everything else on the box. - A valid TLS certificate for the server name. Other servers will refuse to talk to you without one. ACME with HTTP or DNS validation is fine.
- Correct DNS, including the client discovery file.
/.well-known/matrix/clientis what makes clients connect to the right place when users type just the domain. - A server name you will keep. The server name is baked into every event you ever send. Changing it later is effectively starting a new server. Pick the domain you are prepared to live with.
Where to put it
Chat is latency-sensitive in a way people notice — the gap between pressing enter and the message appearing is the whole user experience. Put the server in the location closest to the majority of your users. Our five live locations are Bucharest, Warsaw, Amsterdam, Frankfurt and Vienna, all in the EU, and the price list shows what each city costs.
For a European community, that EU footprint is worth something beyond latency: chat logs are among the most sensitive data a group produces, and keeping them in an EU member state avoids the third-country transfer conversation entirely. Our EU hosting note covers the hosting side; your retention policy and your moderation logs are still your responsibility.
Any of the current Debian or Ubuntu LTS images is a reasonable base — we keep Debian 12 and 13 and Ubuntu 22.04, 24.04 and 26.04 LTS in the image list, plus the enterprise Linux family and FreeBSD.
Trial it on hourly billing first
Homeserver resource use is hard to predict from a spreadsheet because it depends on which rooms your users join. So measure it:
- Order a VPS II on hourly billing — €0.0083 per hour in Bucharest, €0.0125 in Frankfurt.
- Install the homeserver and PostgreSQL, register a couple of accounts, and join the rooms your users will realistically be in, including the big public ones.
- Leave it for a week and watch memory, disk growth and database size. A week on a VPS II in Bucharest is about €1.39.
- If it is comfortable, keep it and switch your permanent server to the monthly price. If it is tight, rebuild one shape up — you have learned that for €1.39 instead of a year of regret.
Note that a stopped machine still bills: destroying it is what stops the meter. And an hourly service needs €5 of account credit before it can be created.
Operating it
- Back up the database and the media store separately. A
pg_dumpplus a file-level copy of the media directory, both shipped off the machine. Test a restore before you need one. - Set retention for remote media. The single most effective thing you can do to stop disk growth.
- Watch the database size, not just the disk. State groups grow; scheduled maintenance keeps them in check.
- Keep the homeserver current. It is a federated service exposed to the internet, and you are the one patching it. Unmanaged means unmanaged — nobody at Noded is watching your upgrade notes.
- Capture an image once it is configured. Up to three images per account, €0.06 per GB per month for the stored data, so rebuilding is a restore rather than a weekend.
Is self-hosting worth it?
If you want control over accounts, retention and who can join, yes — and at €6 to €16 a month for the machine, the hosting is never the expensive part. The cost is attention: a federated homeserver is a service with a public face, and it will want patching, disk management and the occasional look at its logs. If nobody on your side owns that, a hosted service is the honest answer. If somebody does, a single VPS will carry a surprisingly large community.
How Noded Can Help
Start with a VPS II on the hourly VPS page, in whichever of our five locations sits closest to your users, and trial the room set you actually intend to join before choosing a permanent shape. Add storage increments when the media store grows rather than jumping shapes. If you want a sanity check on sizing, or help deciding between a bigger VPS and a dedicated server for a large community, open a ticket — we answer these ourselves.
FAQ
How much RAM does a Matrix homeserver need?
4 GB is a sensible floor for a real deployment with PostgreSQL on the same machine. 2 GB technically runs but leaves no headroom once you join large federated rooms. Communities in big public rooms are comfortable at 8–16 GB.
Why does my homeserver use so much disk?
Almost always the media store caching files from rooms on other servers, followed by database growth from room state. Set a remote-media retention policy early, and add storage increments (50 GB for €4 a month, up to three) rather than upgrading the whole shape.
Do I need a separate database server?
Not for a small or medium deployment — PostgreSQL on the same VPS is the normal layout. Split it out when the database genuinely competes with the homeserver for memory, which is a problem you will see in metrics before you feel it.
Can I turn federation off?
Yes, and if you are running internal team chat you probably should: it removes the largest and least predictable source of resource use, and it shrinks the shape you need.
Where should I host it for a European community?
Closest to your users among our five EU locations. Bucharest is the cheapest, Frankfurt and Vienna are the DACH-facing pair at the same price as each other, Amsterdam is the best fit for Western Europe, and Warsaw for Poland and the Baltics.