−25%

on annual Windows plans, until 31 Oct. See plans

EQVPS
Get started

Self-host Matrix Synapse on a VPS: your own encrypted, federated chat server

Sep 3, 2026 · 2 min read · EQVPS Team

Centralised chat apps own your identity, your contacts and your message history — and can lock any of it away. Matrix is an open, federated protocol for end-to-end encrypted messaging, and Synapse is its reference homeserver. Run it on a VPS and your account, rooms and history live on a server you control — with bridges to other networks and no platform gatekeeper. Pay for the server in crypto, no KYC.

What Synapse needs

  • A dedicated IPv4, a domain and HTTPS. Clients use https://matrix.yourdomain.com and federation uses port 8448 — so you need a domain, valid TLS and inbound ports, a dedicated-IP plan. NAT plans don't take inbound. A Small or Medium plan is a sensible start.
  • RAM for federation + Postgres. Synapse uses more memory than a static site; more RAM keeps it responsive as you federate and grow rooms.
  • Disk for media and history. Scale disk to your uploads and message retention.

Set it up (Ubuntu 24.04, Docker)

# docker-compose.yml — Matrix Synapse + PostgreSQL (client API proxied on 443, federation 8448)
services:
  synapse:
    image: matrixdotorg/synapse:latest
    restart: always
    environment:
      SYNAPSE_SERVER_NAME: yourdomain.com
      SYNAPSE_REPORT_STATS: "no"
    volumes: ["/srv/synapse:/data"]
    ports:
      - "127.0.0.1:8008:8008"   # client API (proxied by Caddy)
      - "8448:8448"             # server-to-server federation
    depends_on: [db]
  db:
    image: postgres:16-alpine
    restart: always
    environment:
      POSTGRES_USER: synapse
      POSTGRES_PASSWORD: change-me-strong
      POSTGRES_DB: synapse
      POSTGRES_INITDB_ARGS: "--encoding=UTF8 --locale=C"
    volumes: ["/srv/synapse-db:/var/lib/postgresql/data"]

Put a TLS reverse proxy in front of the client API:

# TLS + reverse proxy for the client API; matrix.yourdomain.com resolves to your dedicated IP
apt install -y caddy
echo 'matrix.yourdomain.com { reverse_proxy 127.0.0.1:8008 }' > /etc/caddy/Caddyfile
systemctl restart caddy && ufw allow 80,443,8448/tcp

Generate the config, create your first user with register_new_matrix_user, then log in from Element (web/desktop/mobile) pointed at matrix.yourdomain.com — chat you own and federate.

Make it yours

  • End-to-end encryption per room; you hold nothing readable as the operator.
  • Federation policy — open, invite-only, or a closed private server.
  • Bridges to IRC, Telegram, Signal and more; voice/video via Element Call.
  • Keep Postgres on localhost; expose 443 (client) and 8448 (federation).

Why EQVPS for Matrix Synapse

  • Dedicated IPv4 from $8/mo, domain + HTTPS friendly, all ports, self-service rDNS.
  • EU locations (Germany, Finland) — clean routes, real data-protection law.
  • No KYC, crypto payment. Email to register, USDC/USDT to pay — fitting for private, federated chat.
  • Root in ~60 seconds, NVMe. Bring up the stack, add Caddy, and your homeserver is live.

Self-host Nextcloud (files, calendar) → · Anonymous VPS hosting explained →

VPS for Mastodon: run your own small instance →

VPS for Jitsi Meet: private video calls →

FAQ

Why self-host a Matrix homeserver?

Matrix is an open, federated protocol for end-to-end encrypted chat — like email, but for real-time messaging. Running your own Synapse homeserver means your account, rooms and message history live on a server you control, you set the registration and federation policy, and you can bridge to other networks. You can pay for the server in crypto without ID.

What plan and resources does Synapse need?

Synapse is heavier than a static app — federation and encryption use CPU and RAM, and Postgres benefits from memory. A Small or Medium plan with a dedicated IPv4 is a sensible start for a personal or community server; scale RAM up if you federate widely or host large rooms.

Do I need a dedicated IP and a domain?

Yes. Clients connect over https://matrix.yourdomain.com and federation uses port 8448 — both need a domain, valid TLS and inbound ports, so a dedicated-IPv4 plan. Our NAT plans don't accept inbound. A reverse proxy (Caddy) handles the client API on 443.

Is the chat really end-to-end encrypted?

Yes — Matrix supports end-to-end encryption per room, so message content is encrypted on the client and even you as the server operator can't read it. Because you own the homeserver, no third party holds your metadata or accounts either.

Do you ask for ID or a card?

No. Register with an email, pay in USDC or USDT. No documents, no card, no KYC.

Comments

No comments yet. Be the first.

Leave a comment

Comments are moderated before they appear.