Introduction
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.
Previous requirements
- 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.gitcd synapsepython3 -m venv venvsource venv/bin/activatepip install --upgrade pippip 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 archivohomeserver.yamly las claves criptográficas necesarias.
python -m synapse.app.homeserver --server-name yourdomain.com --config-path homeserver.yaml --generate-config --report-stats=no
Editahomeserver.yamlpara 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:andform_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-nginxsudo 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-reloadsudo systemctl enable matrix-synapsesudo systemctl start matrix-synapseVerifies the status with
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 nginxsudo rm -rf /var/www/html/*sudo git clone https://github.com/vector-im/element-web.git /var/www/html/elementcd /var/www/html/elementgit checkout developcp config.sample.json config.json# Edita config.json y establece 'default_server_config': {'base_url': 'https://yourdomain.com'}npm installnpm 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 upgradeordnf 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
htopandnetstatpara detectar anomalías.Conclusion
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.


