Cómo instalar y configurar el servidor Matrix (Synapse) en Linux

Introducción

Matrix es un protocolo de comunicación abierto y descentralizado que permite chats, videollamadas y colaboración en tiempo real. Su implementación más popular, Synapse, se ejecuta de forma nativa en Linux, ofreciendo a administradores y entusiastas una plataforma robusta para crear su propio servidor de mensajería. En este tutorial paso a paso, aprenderás a preparar tu sistema, instalar las dependencias, configurar Synapse y poner en marcha el cliente Element para que tu comunidad pueda comunicarse de forma segura y privada.

Requisitos previos

  • Una distribución Linux reciente (Ubuntu 22.04 LTS, Debian 12 o Fedora 38).
  • Acceso a usuario con privilegios sudo.
  • Un nombre de dominio totalmente registrado y apuntando a la IP del servidor.
  • Puertos 80 y 443 abiertos para el proxy inverso (NGINX o Caddy).
  • Al menos 2 GB de RAM y 20 GB de espacio en disco para un uso moderado.

Actualizar el sistema y instalar dependencias

Antes de comenzar, asegúrate de que el paquete manager esté actualizado. En sistemas basados en Debian/Ubuntu ejecuta:

sudo apt update && sudo apt upgrade -y

Luego instala las herramientas necesarias para compilar Synapse y gestionar el entorno Python:

sudo apt install -y python3-pip python3-venv git build-essential libssl-dev libffi-dev

En Fedora, el equivalente sería:

sudo dnf install -y python3-pip python3-virtualenv git gcc openssl-devel libffi-devel

Crear un usuario dedicado para Synapse

Por razones de seguridad, es recomendable ejecutar el servidor bajo un usuario sin privilegios de root.

sudo adduser --disabled-login --gecos '' matrix

Cambia al nuevo usuario:

sudo -i -u matrix

Descargar e instalar Synapse

Clona el repositorio oficial de Synapse y crea un entorno virtual aislado:

git clone https://github.com/matrix-org/synapse.git
cd synapse
python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install .[postgres]

Si prefieres usar SQLite para pruebas, omite el extra [postgres] y instala solo la base.

Generar el archivo de configuración

Synapse incluye un script de generación que crea el archivo homeserver.yaml y las claves criptográficas necesarias.

python -m synapse.app.homeserver \
    --server-name yourdomain.com \
    --config-path homeserver.yaml \
    --generate-config \
    --report-stats=no

Edita homeserver.yaml para ajustar los siguientes parámetros:

  • listeners: – define el puerto 8008 (o 8448 para federación) y vincúlalo a localhost si usarás un proxy inverso.
  • database: – configura la conexión a PostgreSQL si decidiste usarlo.
  • registration_shared_secret: – una cadena aleatoria para proteger el registro de usuarios.
  • enable_registration: – establece en true si deseas permitir registro abierto, o en false y usa invitaciones.
  • macaroon_secret_key: y form_secret: – ya generados por el script, no los modifiques.

Configurar NGINX como proxy inverso

Para exponer Matrix al mundo mediante HTTPS, configura NGINX:

sudo apt install -y nginx certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com

Luego crea un archivo de sitio, por ejemplo /etc/nginx/sites-available/matrix:

server {
    listen 80;
    server_name yourdomain.com;
    location /.well-known/acme-challenge/ { allow all; }
    location / { return 301 https://$host$request_uri; }
}

server {
    listen 443 ssl http2;
    server_name yourdomain.com;

    ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    location /_matrix/ {
        proxy_pass http://localhost:8008;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
        proxy_buffering off;
    }
}

Activa el sitio y recarga NGINX:

sudo ln -s /etc/nginx/sites-available/matrix /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx

Iniciar Synapse como servicio

Crea un archivo de unit de systemd para que Synapse se ejecute en segundo plano y se reinicie tras fallos.

sudo tee /etc/systemd/system/matrix-synapse.service > /dev/null <

Luego habilita y arranca el servicio:

sudo systemctl daemon-reload
sudo systemctl enable matrix-synapse
sudo systemctl start matrix-synapse

Verifica el estado con sudo systemctl status matrix-synapse y revisa los logs en journalctl -u matrix-synapse -f.

Instalar y usar Element (cliente web)

Element es el cliente oficial de Matrix, disponible como aplicación web, escritorio y móvil. Para probar tu servidor, despliega la versión web:

sudo apt install -y nginx
sudo rm -rf /var/www/html/*
sudo git clone https://github.com/vector-im/element-web.git /var/www/html/element
cd /var/www/html/element
git checkout develop
cp config.sample.json config.json
# Edita config.json y establece 'default_server_config': {'base_url': 'https://yourdomain.com'}
npm install
npm run build

Luego apunta tu navegador a https://yourdomain.com/element y crea tu primera cuenta usando el registro habilitado o una invitación.

Consejos de mantenimiento y seguridad

  • Mantén el sistema y las dependencias actualizadas con apt upgrade o dnf update.
  • Programa copias de seguridad periódicas del directorio de datos de Synapse (por defecto ~/synapse/media_store y la base de datos).
  • Activa la autenticación de dos factores (2FA) en la configuración de Element para mayor protección.
  • Considera usar un servidor de turnos (coturn) para habilitar llamadas de voz y video mediante TURN.
  • Monitorea el uso de recursos con herramientas como htop y netstat para detectar anomalías.

Conclusión

Instalar y correr un servidor Matrix en Linux es una excelente manera de recuperar el control de tus comunicaciones. Con Synapse tendrás una plataforma escalable, federada y totalmente personalizable, mientras que Element brinda una interfaz moderna y multiplataforma para tus usuarios. Siguiendo los pasos descritos, tendrás tu propio servicio de chat seguro funcionando en pocos minutos, listo para crecer junto a tu comunidad.

Esta obra está bajo una Licencia Creative Commons Atribución 4.0 Internacional para Francesc Roig francesc@vivaldi.net .

EspañolesEspañolEspañol