Cómo instalar Matrix Synapse Chat en Ubuntu 20.04 LTS

Matrix es un nuevo ecosistema de comunicación descentralizada en tiempo real para servicios abiertos federados de mensajería instantánea y VoIP. Proporciona API RESTful HTTP JSON para construir servidores de chat distribuidos y federados sin un único punto de control y fallo, y proporciona todas las referencias para las API.

Synapse es una implementación del servidor doméstico de matrix creada por un equipo de matrix y escrita en Python/Twisted. Con este software, podemos implementar la forma matrix de comunicación descentralizada, podemos crear nuestro servidor doméstico y almacenar toda la información personal de los usuarios, el historial de chat, crear la sala para uso propio, etc.

En este tutorial, te mostraremos cómo instalar y configurar Matrix Synapse en Ubuntu 20.04. Configuraremos Matrix Synapse con Nginx como proxy inverso y aseguraremos la instalación utilizando el SSL proporcionado por Letsencrypt.

Requisitos previos

Para esta guía, instalaremos Matrix Synapse en el último Ubuntu 20.04 con 1Gb de RAM, 25GB de espacio libre en disco y 2CPUs. Además, debes tener acceso a tu servidor con privilegios de root.

¿Qué vamos a hacer?

  • Instalar Matrix Synapse
  • Configurar Matrix Synapse
  • Generar SSL Letsencrypt
  • Configurar Nginx como Proxy Inverso
  • Configurar UFW Firewall
  • Registrar nuevo usuario
  • Probando

Paso 1 – Instalar Matrix Synapse

En primer lugar, instalaremos Matrix Synapse en el último servidor Ubuntu 20.04. Para ello, necesitamos añadir la clave GPG y el repositorio oficial de Matrix Synapse.

Antes de continuar, instala algunas dependencias de los paquetes utilizando el comando apt que aparece a continuación.

sudo apt install -y lsb-release wget apt-transport-https

Después, añade la clave GPG y el repositorio de Matrix Synapse para el sistema basado en Debian/Ubuntu.

sudo wget -qO /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main" |
    sudo tee /etc/apt/sources.list.d/matrix-org.list

Añadir repositorio Matrix Synapse para Ubuntu 20.04

Ahora actualiza la lista de repositorios de todos los paquetes e instala los paquetes de Matrix Synapse.

sudo apt update
sudo apt install matrix-synapse-py3

Ahora se te pedirá la configuración del nombre de dominio.

configurar nombre de dominio Sinapsis matricial

Escribe tu nombre de dominio para la instalación de Matrix Synapse y selecciona«Aceptar» para continuar.

Para la «Estadística de datos anónimos», elige«No«.

No enviar datos anónimos

Y la instalación de Matrix Synapse habrá finalizado.

A continuación, inicia el servicio ‘matrix-synapse’ y añádelo al arranque del sistema.

systemctl start matrix-synapse
systemctl enable matrix-synapse

Matrix Synapse ya está en marcha, compruébalo con el siguiente comando.

systemctl status matrix-synapse
ss -plnt

A continuación se muestra el resultado que obtendrás.

Comprueba el estado del servicio Matrix Synapse

Como resultado, Matrix Synapse se está ejecutando con el puerto TCP predeterminado ‘8008’ en Ubuntu 20.04.

Paso 2 – Configurar Matrix Synapse

En este paso, configuraremos las ‘bind-addresses’ para Matrix synapse, desactivaremos el registro en nuestro servidor y configuraremos el secreto compartido de registro.

Antes de continuar, genera el secreto de registro de Matrix Synapse utilizando el siguiente comando.

cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1

Ahora obtendrás la clave aleatoria, copia la clave y guárdala en tu nota.

GH7AP4Zcthz02Cmg58sqUgonm7zlwH0f

A continuación, ve al directorio ‘/etc/matrix-synapse’ y edita la configuración ‘homeserver.yaml’ utilizando el editor vim.

cd /etc/matrix-synapse/
vim homeserver.yaml

Ve a la sección ‘listeners’ y cambia el valor ‘bind-addresses’ por la dirección IP local como se indica a continuación.

listeners:
- port: 8008
tls: false
type: http
x_forwarded: true
bind_addresses: ['127.0.0.1']

resources:
- names: [client, federation]
compress: false

Ahora desactiva Matrix Synapse si estás ejecutando el nodo sólo para ti.

enable_registration: false

Cambia el valor ‘registration_shared_secret’ con la frase de contraseña aleatoria generada arriba.

registration_shared_secret: "GH7AP4Zcthz02Cmg58sqUgonm7zlwH0f"

Guarda y cierra.

A continuación, reinicia el servicio Matrix Synapse para aplicar la nueva configuración.

systemctl restart matrix-synapse

Comprueba el servicio utilizando el siguiente comando.

ss -plnt
systemctl status matrix-synapse

A continuación se muestra el resultado que obtendrás.

Configurar Matrix Synapse

Como resultado, el servicio Matrix Synapse está funcionando con una nueva configuración.

Paso 3 – Generar SSL Letsencrypt

En este paso, generaremos el SSL Letsencrypt utilizando la herramienta certbot. Matrix Synapse se ejecutará bajo una conexión segura HTTPS utilizando los certificados SSL proporcionados por Letsencrypt.

Instala la herramienta certbot utilizando el comando apt que aparece a continuación.

sudo apt install certbot -y

Después, genera un nuevo certificado SSL utilizando el comando certbot que aparece más abajo, y asegúrate de cambiar la dirección de correo electrónico y el nombre de dominio por los tuyos.

certbot certonly --rsa-key-size 2048 --standalone --agree-tos --no-eff-email --email [email protected] -d hakase-labs.io

Generar SSL Letsencrypt para Matrix Synapse

Una vez completado todo, tus certificados SSL estarán disponibles en el directorio ‘/etc/letsencrypt/live/domain.com/’.

ls -lah /etc/letsencrypt/live/domain.com/

El ‘fullchain.pem’ es la clave pública, y el ‘privkey.pem’ es la clave privada.

Paso 4 – Configurar Nginx como Proxy Inverso

Para este tutorial, ejecutaremos Matrix Synapse bajo el proxy inverso Nginx. Y para este paso, instalaremos los paquetes Nginx y lo configuraremos como Proxy Inverso.

El servidor web Nginx se ejecutará en 3 puertos, el puerto HTTP por defecto ’80’, el puerto HTTPS seguro ‘443’, y el puerto TCP ‘8448’ que se utilizará para la federación de Matrix Synapse.

Instala los paquetes Nginx utilizando el comando apt que se indica a continuación.

sudo apt install nginx -y

Una vez completada la instalación, ve al directorio ‘/etc/nginx/sites-available’ y crea una nueva configuración de virtualhost llamada ‘matrix’ utilizando el editor vim.

cd /etc/nginx/sites-available/
vim matrix

Cambia el nombre de dominio y la ruta de los certificados SSL por los tuyos, y pega la configuración en él.

server {
    listen 80;
    server_name hakase-labs.io;
    return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name hakase-labs.io;

ssl_certificate /etc/letsencrypt/live/hakase-labs.io/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/hakase-labs.io/privkey.pem;

location /_matrix {
proxy_pass http://localhost:8008;
proxy_set_header X-Forwarded-For $remote_addr;
# Nginx by default only allows file uploads up to 1M in size
# Increase client_max_body_size to match max_upload_size defined in homeserver.yaml
client_max_body_size 10M;
}
}

# This is used for Matrix Federation
# which is using default TCP port '8448'
server {
listen 8448 ssl;
server_name hakase-labs.io;

ssl_certificate /etc/letsencrypt/live/hakase-labs.io/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/hakase-labs.io/privkey.pem;

location / {
proxy_pass http://localhost:8008;
proxy_set_header X-Forwarded-For $remote_addr;
}
}

Guárdala y ciérrala.

A continuación, activa el virtualhost ‘matrix’ y prueba la configuración de Nginx. Asegúrate también de que no se produce ningún error.

ln -s /etc/nginx/sites-available/matrix /etc/nginx/sites-enabled/
nginx -t

Ahora reinicia el servicio Nginx y añádelo al arranque del sistema.

systemctl restart nginx
systemctl enable nginx

Configurar Nginx como proxy inverso para Matrix Synapse

Después, comprueba el servicio Nginx utilizando el siguiente comando.

ss -plnt
systemctl status nginx

A continuación se muestra el resultado que obtendrás.

Configurar Nginx como proxy inverso para Matrix Synapse

Como resultado, el servicio Nginx está funcionando en el Ubuntu 20.04 con tres puertos diferentes, el puerto HTTP por defecto 80 que será redirigido automáticamente al puerto seguro HTTPS, y el puerto ‘8448’ que se utilizará para Matrix Synapse Federation.

Paso 5 – Firewall UFW

Para este tutorial, ejecutaremos Matrix Synapse en Ubuntu 20.04 con el cortafuegos UFW activado.

Añade los puertos ssh, http, https y el puerto TCP ‘8448’ al cortafuegos UFW utilizando el siguiente comando.

for svc in ssh http https 8448
do
ufw allow $svc
done

Después, ejecuta y habilita el cortafuegos UFW.

ufw enable

Escribe‘y‘ para confirmar y el cortafuegos UFW estará en funcionamiento, comprueba todas las reglas disponibles en el cortafuegos UFW utilizando el comando que aparece a continuación.

ufw status numbered

A continuación se muestra el resultado que obtendrás.

Activar el cortafuegos UFW para proteger Matrix Synapse

Como resultado, la configuración del cortafuegos UFW se ha completado.

Paso 6 – Registrar Usuario

En este paso, la instalación y configuración del servidor home matrix synapse ha finalizado. Y en este paso, te mostraremos cómo añadir un nuevo usuario matrix desde el servidor de línea de comandos.

Para crear un nuevo usuario matrix, ejecuta el siguiente comando.

sudo register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml http://localhost:8008

Ahora escribe el nombre de usuario y la contraseña de tu usuario, para que el usuario sea administrador, escribe «sí».

New user localpart [root]: changbin
Password: 
Confirm password: 
Make admin [no]: 
Sending registration request...
Success!

Como resultado, se habrá creado el nuevo usuario Matrix.

Paso 7 – Pruebas

En este paso probaremos nuestra instalación del servidor Matrix Synapse.

– Probar la Federación Matrix Synapse

Ve a la siguiente URL para probar la Federación Matrix Synapse.

https://federationtester.matrix.org/

Ahora escribe tu nombre de dominio Matrix Synapse y haz clic en el botón«Ir«, y obtendrás el resultado satisfactorio que se muestra a continuación.

Comprobador de la Federación de Sinapsis Matrix

Como puedes ver, la Federación Matrix Synapse funciona a través del puerto ‘8448’.

– Prueba de inicio de sesión en Matrix con usuario y contraseña

Ve al cliente Matrix basado en web llamado ‘riot.im’ como URL abajo.

https://riot.im/app/

Haz clic en el botón‘Iniciar sesión‘ y podrás utilizar tu servidor Matrix Synapse personalizado.

Matrix Synapse Inicia sesión con Riot

Escribe el nombre de tu dominio y haz clic en «Siguiente«.

Motín con dominio personalizado

Ahora escribe tu nombre de usuario y contraseña, y haz clic en el botón ‘Iniciarsesión‘.

Iniciar sesión en Matrix Synapse mediante Riot

Se te harán preguntas de seguridad adicionales.

Una vez que hayas iniciado sesión, aparecerá la siguiente página.

Has iniciado sesión con éxito en Matrix Synapse utilizando la aplicación web Riot

Como resultado, la instalación de Matrix Synapse con el proxy inverso Nginx y la Federación activados en Ubuntu 20.04 se ha completado con éxito.

También te podría gustar...