Get Started

Run your own encrypted chat server for the family, with WhatsApp bridged in

Your family's chats on a server you own, at addresses like @mum:yourname.co.uk, end-to-end encrypted, and able to talk to anyone else on Matrix the way email talks to any other email server. Add bridges and your WhatsApp and Telegram chats appear in the same app. You'll check how a real Matrix server is wired up before you rent anything.

300 minAdvancedTools: A small Linux VPS (around £5 to £15 a month) and your own domain (around £10 a year), software freeStep 1 free
A Matrix homeserverSynapse 1.162.0 on PostgreSQL behind Caddy, with automatic HTTPS
Your own addresses (@you:yourname.co.uk) that federate with every other Matrix server
Invite-only sign-up with one-time tokens, and end-to-end encryption with key backup for everyone
  • WhatsApp and Telegram bridged into the same app with mautrix v0.2609.0
  • A kit: Docker Compose stack, Caddyfile, config edits, delegation files, server checker, invite guide and backup script
Before you start
01/07How Matrix works, and a look at a real server0 done
STEP 01 of 07~20 min

How Matrix works, and a look at a real server

Understand homeservers, federation and delegation, and see them on a live server.

  1. Matrix is email for chatEvery user lives on a homeserver (@mum:yourname.co.uk), and homeservers talk to each other over an open protocol, so your family can chat with friends on matrix.org or any other server. Rooms are copied to every server that has a member in them. Messages are end-to-end encrypted between devices: the server stores ciphertext.

  2. The parts you'll runSynapse is the reference homeserver, maintained by Element. PostgreSQL stores everything. Caddy handles HTTPS. Clients (Element, FluffyChat) talk to Synapse's client API; other servers talk to its federation API.

  3. DelegationYour addresses can end in yourname.co.uk while the server itself runs at matrix.yourname.co.uk. Two small JSON files at https://yourname.co.uk/.well-known/matrix/ tell clients and servers where to go. That's how big organisations host Matrix too. The kit's check_matrix.py shows the whole chain for any domain:

    Any computer with Python
    python check_matrix.py mozilla.org
    Output
    Checking mozilla.org
    
    PASS  well-known client                  https://mozilla.modular.im
    PASS  well-known client CORS header      *
    PASS  well-known server (delegation)     mozilla.modular.im:443
    PASS  client API                         20 spec versions, newest v1.12
    PASS  federation API                     Synapse 1.162.0+pro.1
    PASS  matrix.org federation tester       FederationOK
  4. Mozilla's users are @name:mozilla.org, but their server lives on a hosting provider's domain, on port 443, delegated by those two files. You're about to build exactly this. The kit: Download the kit or open kit.md.

    CarefulChoose your server name carefully: Synapse's server_name is part of every user ID and can't be changed later. Use the domain you'll keep for years.
✓
CheckpointYou've run check_matrix.py against a public server, and decided your server name (yourname.co.uk) and server host (matrix.yourname.co.uk).
Stuck? Ask the community
Next mission · AI engineeringTest your AI prompts like code, so they stop silently breaking
→