Matrix es una red de chat abierta. Cuando ejecutas tu propio homeserver Matrix, tus mensajes y cuentas viven en tu servidor, y aun así puedes hablar con personas de otros servidores Matrix. Esta guía instala Synapse, el homeserver de referencia, con Docker y PostgreSQL detrás de HTTPS.
Qué debes saber primero
- Federación. Tu servidor puede hablar con otros, lo que significa que usa ancho de banda y disco para almacenar las salas a las que te unes. Los servidores privados pequeños son ligeros. Unirse a salas públicas muy grandes no lo es.
- Tamaño. 2 vCPU y 4 GB de RAM sirven para un grupo pequeño. Consulta el hosting para servidores Matrix.
- Dominio. Necesitas un dominio. El nombre del servidor (por ejemplo
example.com) forma parte de cada ID de usuario y no se puede cambiar después.
Paso 1: genera la configuración
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
Paso 2: cambia a PostgreSQL
SQLite es la opción por defecto, pero PostgreSQL es mejor para cualquier cosa más allá de una prueba. Edita data/homeserver.yaml y reemplaza el bloque database:
database:
name: psycopg2
args:
user: synapse
password: CHANGE_ME
database: synapse
host: db
cp_min: 5
cp_max: 10
Paso 3: archivo 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
Paso 4: HTTPS y federación
Sirve Synapse en matrix.example.com y publica un archivo de delegación para que el nombre de tu servidor siga siendo 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"}}`
}
}
Prueba la federación con el Matrix Federation Tester cuando el DNS esté activo.
Paso 5: crea usuarios y bloquea el registro
docker compose exec synapse register_new_matrix_user -c /data/homeserver.yaml http://localhost:8008
Mantén enable_registration en false en homeserver.yaml a menos que quieras registros abiertos.
Clientes y precauciones
Usa Element o cualquier cliente Matrix e inicia sesión con el nombre de tu servidor. Haz copia de seguridad de la carpeta data y de los datos de Postgres, y mantén Synapse actualizado. Lee primero el refuerzo del servidor.