Matrix Server VPS

Synapse, the reference Matrix homeserver, from matrix.org's packages with PostgreSQL ready. A homeserver's name is permanent, so it starts when you name it with one command, which also sets up HTTPS and your admin account.

Who it suits

Private, end-to-end encrypted chat for a family, team or community, using Element or any Matrix app, with federation to the rest of Matrix. Synapse is the mature reference server; lighter servers such as Conduit and continuwuity are younger and make no production-ready claim.

Which plan

Standard (2 vCPU, 4 GB) is the smallest plan we offer it on: Synapse's install guide asks for at least 1 GB of free memory to join large rooms, and PostgreSQL runs alongside. Joining big public rooms is what makes Synapse heavy; a private server for a family stays light.

What we install

We add matrix.org's package repository, download matrix-synapse-py3 and create a PostgreSQL database with the C collation Synapse requires. vps9-https matrix.example.com names the server, installs and configures Synapse (PostgreSQL, registration off), creates an admin with a generated password in /root/matrix-admin.txt, and serves the Matrix APIs and .well-known files on 443 through Caddy.

$ apt Debian family (apt)
  • ca-certificates
  • curl
  • postgresql
  • debconf-utils
  • matrix-synapse-py3

From order to ready

  1. Server ready. We email you when the server is running, and you can log in with SSH. The installer starts on that same first boot.
  2. Installer running. It logs to /var/log/vps9-setup.log; tail -f it to watch.
  3. Application ready. /var/lib/vps9-setup.exit appears when the installer has finished, holding 0 if it worked. After vps9-https, Synapse is ready when curl http://127.0.0.1:8008/health answers OK on the server and https://<your domain>/.well-known/matrix/client answers from outside.

What you still do

  1. Choose the server's name: it's in every user ID (@you:matrix.example.com) and can never change. Point that domain at the server and allow ports 80 and 443 in the panel firewall.
  2. Run vps9-https matrix.example.com. Synapse starts, Caddy gets a certificate, and your admin login (@admin:matrix.example.com) is written to /root/matrix-admin.txt.
  3. Sign in with Element or another Matrix app, with https://matrix.example.com as the homeserver.
  4. Add people with register_new_matrix_user -c /etc/matrix-synapse/conf.d/vps9.yaml http://127.0.0.1:8008; open registration stays off.

Exposure and security

Synapse listens on localhost only. Caddy on 80 and 443 serves the client and federation APIs, with federation on 443 through .well-known, so port 8448 stays closed. Registration is off, and the admin is created with Synapse's registration secret, which only root can read. With federation, servers your users talk to see the rooms and messages shared with them, as with email.

Backups and upgrades

Synapse updates with the system's packages from matrix.org's repository (apt upgrade); the automatic security updates we turn on cover the operating system only, so upgrade Synapse yourself after reading its notes. Back up the PostgreSQL database (pg_dump), /etc/matrix-synapse, which holds the signing key, and /var/lib/matrix-synapse off the server. We run the hardware, the network and the first-boot install; after that, Matrix Synapse is yours to run, and we don't manage, update or back it up for you.

Matrix Synapse questions

Can my user IDs use my main domain?

Our vps9-https names the server after the domain it serves, so IDs end in that domain (@you:matrix.example.com). To have @you:example.com while Synapse runs on a subdomain, the server name must be example.com and that domain must serve Matrix's .well-known files, as Synapse's delegation guide describes. Decide before the first start: the name can't change later.

Why only Ubuntu and Debian?

matrix.org publishes Synapse packages for Debian and Ubuntu only, and they are the install Synapse's guide recommends there. On AlmaLinux, Rocky Linux and Fedora, Synapse would be installed with pip or Docker, which this app doesn't do.

Synapse or a lighter server such as Conduit?

Synapse is the reference implementation, the most complete and the best documented, at the cost of more memory. Conduit and continuwuity use far less memory but are younger, change quickly and don't claim to be production-ready. For a server you depend on, we suggest Synapse.

Order it from your terminal

$ vps9
$ vps9 servers create --plan standard --image ubuntu-24.04 --app synapse --hostname web-1 --key key_8f2c
POST /api/v1/servers
{
  "plan": "standard",
  "image": "ubuntu-24.04",
  "hostname": "web-1",
  "app": "synapse"
}

Be first when orders open

Join the waitlist and we'll send you one email when VPSNine launches. Pick a plan if you already know which one you want, and we'll size the first servers around it.

  • One email, on launch day
  • Monthly or yearly, no lock-in
  • 14-day money-back guarantee