OffshoreVps
Tutoriais3 out. 20267 min de leituraPor a equipe da OffshoreVps

Como hospedar um servidor Matrix (Synapse) em um VPS

Execute o seu próprio homeserver Matrix com Synapse, PostgreSQL e Docker: configuração, HTTPS, delegação de federação, usuários e registro.

O Matrix é uma rede de chat aberta. Quando você executa o seu próprio homeserver Matrix, suas mensagens e contas ficam no seu servidor, e você ainda pode conversar com pessoas em outros servidores Matrix. Este guia instala o Synapse, o homeserver de referência, com Docker e PostgreSQL por trás de HTTPS.

Janela de terminal em um VPS mostrando os comandos usados para hospedar um servidor Matrix, começando com “mkdir -p ~/synapse && cd ~/synapse”
O tipo de comandos que você executará no servidor neste guia.

O que saber primeiro

  • Federação. Seu servidor pode conversar com outros, o que significa que usa banda e disco para armazenar as salas em que você entra. Servidores privados pequenos são leves. Entrar em salas públicas muito grandes não é.
  • Tamanho. 2 vCPUs e 4 GB de RAM atendem a um grupo pequeno. Veja a hospedagem de servidor Matrix.
  • Domínio. Você precisa de um domínio. O nome do servidor (por exemplo example.com) faz parte de cada ID de usuário e não pode ser alterado depois.

Passo 1: gere a configuração

mkdir -p ~/synapse && cd ~/synapse
docker run -it --rm -v $(pwd)/data:/data \
  -e SYNAPSE_SERVER_NAME=example.com \
  -e SYNAPSE_REPORT_STATS=no \
  matrixdotorg/synapse:latest generate

Passo 2: mude para o PostgreSQL

O SQLite é o padrão, mas o PostgreSQL é melhor para qualquer coisa além de um teste. Edite data/homeserver.yaml e substitua o bloco database:

database:
  name: psycopg2
  args:
    user: synapse
    password: CHANGE_ME
    database: synapse
    host: db
    cp_min: 5
    cp_max: 10
Os passos deste guia em ordem: 1. O que saber primeiro; 2. gere a configuração; 3. mude para o PostgreSQL; 4. HTTPS e federação; 5. crie usuários e bloqueie o registro; 6. Clientes e cuidados
Os passos deste guia, em ordem.

Passo 3: arquivo Compose

services:
  db:
    image: postgres:16
    restart: unless-stopped
    environment:
      POSTGRES_USER: synapse
      POSTGRES_PASSWORD: CHANGE_ME
      POSTGRES_DB: synapse
      POSTGRES_INITDB_ARGS: "--encoding=UTF-8 --lc-collate=C --lc-ctype=C"
    volumes:
      - ./pgdata:/var/lib/postgresql/data
  synapse:
    image: matrixdotorg/synapse:latest
    restart: unless-stopped
    depends_on: [db]
    ports:
      - "127.0.0.1:8008:8008"
    volumes:
      - ./data:/data
docker compose up -d
docker compose logs -f synapse

Passo 4: HTTPS e federação

Sirva o Synapse em matrix.example.com e publique um arquivo de delegação para que o nome do seu servidor continue sendo example.com:

matrix.example.com {
  reverse_proxy 127.0.0.1:8008
}

example.com {
  handle /.well-known/matrix/server {
    header Content-Type application/json
    respond `{"m.server": "matrix.example.com:443"}`
  }
  handle /.well-known/matrix/client {
    header Content-Type application/json
    header Access-Control-Allow-Origin *
    respond `{"m.homeserver": {"base_url": "https://matrix.example.com"}}`
  }
}

Teste a federação com o Matrix Federation Tester quando o DNS estiver ativo.

Passo 5: crie usuários e bloqueie o registro

docker compose exec synapse register_new_matrix_user -c /data/homeserver.yaml http://localhost:8008

Mantenha enable_registration definido como false em homeserver.yaml, a menos que você queira cadastros abertos.

Clientes e cuidados

Use o Element ou qualquer cliente Matrix e faça login com o nome do seu servidor. Faça backup da pasta data e dos dados do Postgres e mantenha o Synapse atualizado. Leia primeiro o reforço de segurança do servidor.