Matrix & Synapse: a self-hosted, federated chat network
Matrix is an open protocol for decentralised, end-to-end-encrypted chat; Synapse is its reference server. What it means and how to run your own homeserver.
Matrix is an open standard for real-time communication. Instead of one company running one server everyone connects to (Slack, Discord, WhatsApp), Matrix is federated: anyone can run a server ("homeserver"), and servers talk to each other so users on different ones can chat. Synapse is the reference implementation of a Matrix homeserver; Element is the most popular client.
What it does
Rooms and direct messages across servers — you can talk to someone on a completely different Matrix server, like email but for chat.
End-to-end encryption on by default for private rooms, so the server does not see your messages.
Bridges — connect Matrix to other networks (IRC, Telegram, Slack, Discord, WhatsApp) so your one client reaches them all.
Voice and video via Element Call / Jitsi, plus file and image sharing.
A public identity — register
@you:yourdomain.com, an address you own, not one a platform assigns you.
Synapse vs Element
Synapse is the server — it stores rooms, messages and accounts, and federates.
Element is the client — the web/desktop/mobile app you actually chat in. You can run Element for anyone to use, or just point your users at Element's own app with your server address.
Who it is for
Communities and organisations that want their chat to be independent of any single company, and to interoperate with the wider Matrix network.
Privacy-conscious groups who want end-to-end encryption and self-hosted data.
Bridging enthusiasts who want one client for many chat networks.
Where to use it
A single homeserver on a VPS serves a community. Synapse is written in Python and is more resource-hungry than a simple chat app — budget 2–4 vCPU and 4 GB RAM for a small server, more for busy/federated instances (and disk grows with message history and media). You need a domain and valid TLS for federation to work at all — other servers will refuse to talk to a homeserver without a proper certificate. Federation also needs the standard HTTPS port reachable from the internet.
The part that surprises people
Federation is a public-facing service. Your homeserver accepts connections from other homeservers, so it must be properly hardened: keep Synapse updated, watch for abuse, rate-limit registrations, and consider closing registration and inviting users instead. This is more operational work than a single-tenant chat app.
How to get running
Domain + VPS + valid TLS (federation requires it — no self-signed certs).
Deploy Synapse (Docker or the matrix-docker-ansible-deploy stack), pointing it at PostgreSQL for production.
Configure federation correctly (
server_name, delegation, well-known files) so@you:yourdomain.comresolves for other servers.Decide your registration policy — invite-only is the sane default.
Deploy Element for the web UI, and connect the mobile/desktop apps.
Back up the database and media store; set up monitoring.
Specs: /app-hosting/matrix-synapse. Synapse is AGPL-3.0.