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.
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
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.