OffshoreVps
Tutoriales3 oct 20267 min de lecturaPor el equipo de OffshoreVps

Cómo alojar un servidor Matrix (Synapse) en un VPS

Ejecuta tu propio homeserver Matrix con Synapse, PostgreSQL y Docker: configuración, HTTPS, delegación de federación, usuarios y registro.

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.

Ventana de terminal en un VPS que muestra los comandos usados para alojar un servidor Matrix, empezando por “mkdir -p ~/synapse && cd ~/synapse”
El tipo de comandos que ejecutarás en tu servidor en esta guía.

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
Los pasos de esta guía en orden: 1. Qué debes saber primero; 2. genera la configuración; 3. cambia a PostgreSQL; 4. HTTPS y federación; 5. crea usuarios y bloquea el registro; 6. Clientes y precauciones
Los pasos de esta guía, en orden.

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.