Matrix es un nuevo ecosistema para la comunicación descentralizada en tiempo real para servicios abiertos de mensajería instantánea federada y VoIP. Proporciona API RESTful HTTP JSON para crear servidores de chat federados y distribuidos sin un único punto de control y falla, y proporciona todas las referencias para las API.
Synapse es una implementación del servidor doméstico de matriz creado por un equipo de matriz y escrito en Python/Twisted. Con este software, podemos implementar la forma matricial para la comunicación descentralizada, podemos crear nuestro servidor doméstico y almacenar toda la información personal del usuario, el historial de chat, crear la sala para uso propio, etc.
En este tutorial, le 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 mediante el SSL proporcionado por Letsencrypt.
Requisitos previos
Para esta guía, instalaremos Matrix Synapse en el último Ubuntu 20.04 con 1 Gb de RAM, 25 GB de espacio libre en disco y 2 CPU. Además, debe tener acceso a su servidor con privilegios de root.
¿Qué haremos?
- Instalar Matrix Synapse
- Configurar Matrix Synapse
- Generar SSL Letsencrypt
- Configurar Nginx como proxy inverso
- Configurar el cortafuegos UFW
- Registrar nuevo usuario
- Pruebas
Paso 1:instalar Matrix Synapse
Primero, instalaremos Matrix Synapse en el último servidor Ubuntu 20.04. Para hacer eso, necesitamos agregar la clave GPG y el repositorio oficial de Matrix Synapse.
Antes de continuar, instale algunas dependencias de paquetes usando el comando apt a continuación.
sudo apt install -y lsb-release wget apt-transport-https
Después de eso, agregue 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
Ahora actualice la lista de repositorios de todos los paquetes e instale los paquetes de Matrix Synapse.
sudo apt update
sudo apt install matrix-synapse-py3
Ahora se le pedirá la configuración del nombre de dominio.
Escriba su nombre de dominio para la instalación de Matrix Synapse y seleccione 'OK ' para continuar.
Para la 'Estadística de datos anónimos', elija 'No '.
Y la instalación de Matrix Synapse se ha completado.
A continuación, inicie el servicio 'matrix-synapse' y agréguelo al arranque del sistema.
systemctl start matrix-synapse
systemctl enable matrix-synapse
Matrix Synapse está funcionando, verifíquelo con el siguiente comando.
systemctl status matrix-synapse
ss -plnt
A continuación se muestra el resultado que obtendrá.
Como resultado, Matrix Synapse se ejecuta con el puerto TCP predeterminado '8008' en Ubuntu 20.04.
Paso 2:configurar Matrix Synapse
En este paso, configuraremos las 'direcciones de enlace' para Matrix Synapse, deshabilitaremos el registro en nuestro servidor y configuraremos el secreto compartido de registro.
Antes de continuar, genere el secreto de registro de Matrix Synapse con el siguiente comando.
cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1
Ahora obtendrá la clave aleatoria, copiará la clave y la guardará en su nota.
GH7AP4Zcthz02Cmg58sqUgonm7zlwH0f
Luego, vaya al directorio '/etc/matrix-synapse' y edite la configuración 'homeserver.yaml' usando el editor vim.
cd /etc/matrix-synapse/
vim homeserver.yaml
Vaya a la sección 'oyentes' y cambie el valor 'bind-addresses' con la dirección IP local como se muestra 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 deshabilite Matrix Synapse si está ejecutando el nodo solo para usted.
enable_registration: false
Cambie el 'registration_shared_secret' con la frase de contraseña aleatoria generada en la parte superior.
registration_shared_secret: "GH7AP4Zcthz02Cmg58sqUgonm7zlwH0f"
Guardar y cerrar.
A continuación, reinicie el servicio Matrix Synapse para aplicar la nueva configuración.
systemctl restart matrix-synapse
Verifique el servicio usando el siguiente comando.
ss -plnt
systemctl status matrix-synapse
A continuación se muestra el resultado que obtendrá.
Como resultado, el servicio Matrix Synapse está en funcionamiento 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 la conexión HTTPS segura utilizando los certificados SSL proporcionados por Letsencrypt.
Instale la herramienta certbot usando el comando apt a continuación.
sudo apt install certbot -y
Después de eso, genere un nuevo certificado SSL utilizando el comando certbot a continuación y asegúrese de cambiar la dirección de correo electrónico y el nombre de dominio por los suyos propios.
certbot certonly --rsa-key-size 2048 --standalone --agree-tos --no-eff-email --email [email protected] -d hakase-labs.io
Una vez que todo esté completo, sus certificados SSL estarán disponibles en el directorio '/etc/letsencrypt/live/domain.com/'.
ls -lah /etc/letsencrypt/live/domain.com/
'fullchain.pem' es la clave pública y 'privkey.pem' es la clave privada.
Paso 4:configurar Nginx como proxy inverso
Para este tutorial, ejecutaremos Matrix Synapse bajo el proxy Nginx Reverse. Y para este paso, instalaremos los paquetes de Nginx y lo configuraremos como un proxy inverso.
El servidor web Nginx se ejecutará en 3 puertos, el puerto HTTP predeterminado '80', el puerto HTTPS seguro '443' y el puerto TCP '8448' que se utilizará para la federación Matrix Synapse.
Instale los paquetes Nginx usando el comando apt a continuación.
sudo apt install nginx -y
Una vez completada toda la instalación, vaya al directorio '/etc/nginx/sites-available' y cree una nueva configuración de virtualhost llamada 'matrix' usando el editor vim.
cd /etc/nginx/sites-available/
vim matrix
Cambie el nombre de dominio y la ruta de los certificados SSL por los suyos propios, luego pegue 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;
}
}
Guardar y cerrar.
A continuación, active el virtualhost 'matrix' y pruebe la configuración de Nginx. Además, asegúrese de que no haya ningún error.
ln -s /etc/nginx/sites-available/matrix /etc/nginx/sites-enabled/
nginx -t
Ahora reinicie el servicio Nginx y agréguelo al arranque del sistema.
systemctl restart nginx
systemctl enable nginx
Después de eso, verifique el servicio Nginx usando el siguiente comando.
ss -plnt
systemctl status nginx
A continuación se muestra el resultado que obtendrá.
Como resultado, el servicio Nginx está funcionando en Ubuntu 20.04 con tres puertos diferentes, el puerto HTTP predeterminado 80 que se redirigirá automáticamente al puerto HTTPS seguro y el puerto '8448' que se usará para Matrix Synapse Federation.
Paso 5 - Cortafuegos UFW
Para este tutorial, ejecutaremos Matrix Synapse en Ubuntu 20.04 con el firewall UFW habilitado.
Agregue ssh, http, https y el puerto TCP '8448' al firewall UFW usando el siguiente comando.
for svc in ssh http https 8448
do
ufw allow $svc
done
Después de eso, ejecute y habilite el firewall UFW.
ufw enable
Escriba 'y ' para confirmar que el cortafuegos de UFW está en funcionamiento, verifique todas las reglas disponibles en el cortafuegos de UFW usando el siguiente comando.
ufw status numbered
A continuación se muestra el resultado que obtendrá.
Como resultado, se ha completado la configuración del cortafuegos UFW.
Paso 6 - Registrar usuario
En esta etapa, se completa la instalación y configuración del servidor principal Matrix Synapse. Y en este paso, le mostraremos cómo agregar un nuevo usuario de matriz desde el servidor de línea de comandos.
Para crear un nuevo usuario de matriz, ejecute el siguiente comando.
sudo register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml http://localhost:8008
Ahora escriba el nombre de usuario y la contraseña de su usuario, para convertir al usuario en administrador, escriba 'sí'.
New user localpart [root]: changbin
Password:
Confirm password:
Make admin [no]:
Sending registration request...
Success!
Como resultado, se ha creado el nuevo usuario de Matrix.
Paso 7 - Prueba
Para este paso, probaremos la instalación de nuestro servidor Matrix Synapse.
- Prueba de Matrix Synapse Federation
Vaya a la URL de Matrix Synapse Federation Tester a continuación.
https://federationtester.matrix.org/
Ahora escriba su nombre de dominio de Matrix Synapse y haga clic en 'Ir ', y obtendrá el resultado exitoso como se muestra a continuación.
Como se puede ver, Matrix Synapse Federation está trabajando a través del puerto '8448'.
- Inicio de sesión de Test Matrix con usuario y contraseña
Vaya al cliente Matrix basado en la web llamado 'riot.im' como URL a continuación.
https://riot.im/app/
Haga clic en 'Iniciar sesión ' y puede usar su servidor Matrix Synapse personalizado.
Escriba su nombre de dominio y haga clic en 'Siguiente '.
Ahora escriba su nombre de usuario y contraseña, luego haga clic en 'Iniciar sesión botón '.
Se le pedirán preguntas de seguridad adicionales.
Una vez que haya iniciado sesión, obtendrá la siguiente página.
Como resultado, la instalación de Matrix Synapse con el proxy inverso de Nginx y la federación habilitada en Ubuntu 20.04 se completó con éxito.