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 entruesi deseas permitir registro abierto, o enfalsey usa invitaciones.macaroon_secret_key:yform_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-synapseVerifica el estado con
sudo systemctl status matrix-synapsey revisa los logs enjournalctl -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 buildLuego apunta tu navegador a
https://yourdomain.com/elementy 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 upgradeodnf update.- Programa copias de seguridad periódicas del directorio de datos de Synapse (por defecto
~/synapse/media_storey 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
htopynetstatpara 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.


