Cómo instalar y crear un servidor de chat utilizando Matrix Synapse y Element en Ubuntu 22.04

Matrix es un estándar abierto para la comunicación descentralizada y encriptada de extremo a extremo. Es una colección de servidores y servicios que se comunican entre sí mediante una API estandarizada que se sincroniza en tiempo real. Utiliza servidores domésticos para almacenar la información de las cuentas y el historial de chat. Si un servidor doméstico se cae, otros servidores pueden continuar la comunicación sin problemas debido a la naturaleza de la descentralización. Puedes utilizar un servidor doméstico de Matrix alojado por otra persona o alojar el tuyo propio para mantener el control sobre tus datos.

En este tutorial, aprenderás a instalar y crear un servidor de chat utilizando Synapse, una implementación de servidor doméstico de Matrix. Element es un cliente web de Matrix construido utilizando el SDK React de Matrix. Esto te permitirá ofrecer el chat de Matrix en la web. También puedes utilizar el servidor con cualquier otro cliente Matrix de tu elección. También instalaremos el servidor Coturn para habilitar las llamadas de voz y vídeo. El servicio Coturn es opcional si no te interesa utilizarlo.

Requisitos previos

  1. Un servidor con Ubuntu 22.04.
  2. Un usuario no usuario con privilegios de root.
  3. El Cortafuegos sin complicaciones(UFW) está activado y en ejecución.
  4. Nombres de dominio completos (FQDN) para Matrix, Element y Coturn que apunten a tu servidor. Utilizaremos matrix.example.com, element.example.com, y coturn.example.com respectivamente para los tres servicios.
  5. Asegúrate de que todo está actualizado.
    $ sudo apt update && sudo apt upgrade
    

Paso 1 – Configurar el Cortafuegos

Antes de instalar ningún paquete, el primer paso es configurar el cortafuegos para que abra los puertos para HTTP, HTTPS y Synapse.

Comprueba el estado del cortafuegos.

$ sudo ufw status

Deberías ver algo como lo siguiente

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

Abre los puertos HTTP, HTTPS y Synapse en el cortafuegos.

$ sudo ufw allow 8448
$ sudo ufw allow http
$ sudo ufw allow https

Vuelve a comprobar el estado para confirmarlo.

$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
8448                       ALLOW       Anywhere                  
80/tcp                     ALLOW       Anywhere                  
443                        ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
8448 (v6)                  ALLOW       Anywhere (v6)             
80/tcp (v6)                ALLOW       Anywhere (v6)             
443 (v6)                   ALLOW       Anywhere (v6)

Paso 2 – Instala Matrix Synapse

Añade la clave GPG de Matrix.

$ sudo wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg

Añade el repositorio APT de Matrix.

$ 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

Actualiza la lista de repositorios del sistema.

$ sudo apt update

Instala Matrix Synapse.

$ sudo apt install matrix-synapse-py3

Durante la instalación, se te pedirá el nombre del servidor, que forma parte de tu ID de Matrix. Introduce en su lugar tu nombre de dominio Matrix. Éste actuará como dirección de tu servidor doméstico.

También se te preguntará si deseas enviar estadísticas anónimas sobre tu servidor doméstico a Matrix. Escribe N para rechazarlo.

Puedes cambiar estos ajustes más adelante en el archivo /etc/matrix-synapse/conf.d/server_name.yaml.

El servicio de Matrix Synapse se activa e inicia durante la instalación. Comprueba el estado del servicio.

$ sudo systemctl status matrix-synapse
? matrix-synapse.service - Synapse Matrix homeserver
     Loaded: loaded (/lib/systemd/system/matrix-synapse.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2022-09-26 09:38:38 UTC; 1min 19s ago
    Process: 12926 ExecStartPre=/opt/venvs/matrix-synapse/bin/python -m synapse.app.homeserver --config-path=/etc/matrix-synapse/homeserver.yaml --config-path=/etc/matrix-synapse/conf.d/ --generate-key>   Main PID: 12931 (python)
      Tasks: 8 (limit: 2238)
     Memory: 87.3M
        CPU: 4.180s
     CGroup: /system.slice/matrix-synapse.service
             ??12931 /opt/venvs/matrix-synapse/bin/python -m synapse.app.homeserver --config-path=/etc/matrix-synapse/homeserver.yaml --config-path=/etc/matrix-synapse/conf.d/

Sep 26 09:38:36 matrix matrix-synapse[12926]: Generating signing key file /etc/matrix-synapse/homeserver.signing.key
Sep 26 09:38:37 matrix matrix-synapse[12931]: This server is configured to use 'matrix.org' as its trusted key server via the
Sep 26 09:38:37 matrix matrix-synapse[12931]: 'trusted_key_servers' config option. 'matrix.org' is a good choice for a key
Sep 26 09:38:37 matrix matrix-synapse[12931]: server since it is long-lived, stable and trusted. However, some admins may
Sep 26 09:38:37 matrix matrix-synapse[12931]: wish to use another server for this purpose.
Sep 26 09:38:37 matrix matrix-synapse[12931]: To suppress this warning and continue using 'matrix.org', admins should set
Sep 26 09:38:37 matrix matrix-synapse[12931]: 'suppress_key_server_warning' to 'true' in homeserver.yaml.
Sep 26 09:38:37 matrix matrix-synapse[12931]: --------------------------------------------------------------------------------
Sep 26 09:38:38 matrix matrix-synapse[12931]: Config is missing macaroon_secret_key
Sep 26 09:38:38 matrix systemd[1]: Started Synapse Matrix homeserver.

Paso 3 – Instalar y configurar PostgreSQL

Utilizaremos el repositorio oficial APT de PostgreSQL para realizar la instalación. Ejecuta el siguiente comando para añadir la clave GPG de PostgreSQL.

$ curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /usr/share/keyrings/postgresql-key.gpg >/dev/null

Añade el repositorio APT a tu lista de fuentes.

$ sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/postgresql-key.gpg arch=amd64] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

Actualiza el repositorio del sistema.

$ sudo apt update

Ahora, puedes instalar PostgreSQL utilizando el siguiente comando.

$ sudo apt install postgresql postgresql-contrib

Comprueba el estado del servicio PostgreSQL.

$ sudo systemctl status postgresql
? postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
     Active: active (exited) since Mon 2022-09-26 09:41:36 UTC; 2min 14s ago
    Process: 15586 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
   Main PID: 15586 (code=exited, status=0/SUCCESS)
        CPU: 1ms

Sep 26 09:41:36 matrix systemd[1]: Starting PostgreSQL RDBMS...
Sep 26 09:41:36 matrix systemd[1]: Finished PostgreSQL RDBMS.

Puedes ver que el servicio está activado y en ejecución por defecto.

Accede a la cuenta del sistema postgres.

$ sudo -su postgres

Crea un nuevo usuario de base de datos y una base de datos para PostgreSQL.

$ createuser --pwprompt synapse
$ createdb --encoding=UTF8 --locale=C --template=template0 --owner=synapse synapse

Sal de la cuenta postgres.

$ exit

Paso 4 – Instalar Nginx

Para el entorno de producción, se recomienda ejecutar el servidor Synapse utilizando un proxy Nginx.

Ubuntu 22.04 incluye una versión antigua de Nginx. Para instalar la última versión, necesitas descargar el repositorio oficial de Nginx.

Importa la clave de firma de Nginx.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Añadir el repositorio de la versión estable de Nginx.

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list

Actualiza los repositorios del sistema.

$ sudo apt update

Instala Nginx.

$ sudo apt install nginx

Verifica la instalación.

$ nginx -v
nginx version: nginx/1.22.0

Iniciar el servidor Nginx.

$ sudo systemctl start nginx

Paso 5 – Instalar SSL

Necesitamos instalar Certbot para generar el certificado SSL. Puedes instalar Certbot utilizando el repositorio de Ubuntu o descargar la última versión utilizando la herramienta Snapd. Nosotros utilizaremos la versión Snapd.

Ubuntu 22.04 viene con Snapd instalado por defecto. Ejecuta los siguientes comandos para asegurarte de que tu versión de Snapd está actualizada.

$ sudo snap install core
$ sudo snap refresh core

Instala Certbot.

$ sudo snap install --classic certbot

Utiliza el siguiente comando para asegurarte de que se puede ejecutar el comando Certbot creando un enlace simbólico al directorio /usr/bin.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Ejecuta el siguiente comando para generar un certificado SSL.

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d matrix.example.com

El comando anterior descargará un certificado en el directorio /etc/letsencrypt/live/matrix.example.com de tu servidor.

Genera un certificado de grupo Diffie-Hellman.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Para comprobar si la renovación SSL funciona correctamente, realiza una ejecución en seco del proceso.

$ sudo certbot renew --dry-run

Si no ves ningún error, ya está todo listo. Tu certificado se renovará automáticamente.

Paso 6 – Configurar Matrix Synapse

Puedes configurar el servidor Matrix a través del archivo /etc/matrix-synapse/homeserver.yaml, pero no es recomendable porque se sobrescribe después de cada actualización. Para uso en producción, debes colocar los archivos de configuración en la carpeta /etc/matrix-synapse/conf.d.

La instalación de Synapse creó dos archivos de configuración en la carpeta /etc/matrix-synapse/conf.d.

$ ls /etc/matrix-synapse/conf.d
report_stats.yaml  server_name.yaml

Crea un nuevo archivo de configuración para la base de datos y ábrelo para editarlo.

$ sudo nano /etc/matrix-synapse/conf.d/database.yaml

Pega las siguientes líneas en el editor. Sustituye el campo your-password por la contraseña de usuario PostgreSQL que creaste en el paso 3. Sustituye localhost por la dirección IP de tu servidor, si alojas la base de datos en otro lugar.

database:
  name: psycopg2
  args:
    user: synapse
    password: 'your-password'
    database: synapsedb
    host: localhost
    cp_min: 5
    cp_max: 10

Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te solicite.

Crea una clave de registro secreta. La clave debe ser segura porque permitirá a cualquiera registrar a un nuevo usuario, aunque el registro esté desactivado.

$ echo "registration_shared_secret: '$(cat /dev/urandom | tr -cd '[:alnum:]' | fold -w 256 | head -n 1)'" | sudo tee /etc/matrix-synapse/conf.d/registration_shared_secret.yaml

Por defecto, Synapse activa indicadores de presencia que muestran si una persona está conectada. Puede causar un uso elevado de la CPU, por lo que puedes desactivarlo. Crea un nuevo archivo de configuración para ello.

$ sudo nano /etc/matrix-synapse/conf.d/presence.yaml

Pega la siguiente línea en el editor.

presence:
  enabled: false

Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te pida.

Reinicia el servicio Synapse para aplicar los cambios.

Crea un nuevo usuario matriz. Se te pedirá el nombre de usuario y la contraseña. Como éste es el primer usuario que estamos creando, escribe yes cuando se te pregunte si quieres que el usuario sea administrador.

$ register_new_matrix_user -c /etc/matrix-synapse/conf.d/registration_shared_secret.yaml http://localhost:8008
New user localpart [navjot]: navjot
Password: 
Confirm password: 
Make admin [no]: yes
Sending registration request...
Success!

Si quieres abrir el registro público, crea un nuevo archivo de configuración.

$ sudo nano /etc/matrix-synapse/conf.d/registration.yaml

Pega en él las siguientes líneas.

enable_registration: true

Por defecto, Synapse no permite registros sin verificación de correo electrónico. Para activar la verificación del correo electrónico, pega las siguientes líneas.

registrations_require_3pid:
  - email

email:
  smtp_host: mail.example.com
  smtp_port: 587

  # If mail server has no authentication, skip these 2 lines
  smtp_user: '[email protected]'
  smtp_pass: 'password'

  # Optional, require encryption with STARTTLS
  require_transport_security: true

  app_name: 'HowtoForge Example Chat'  # defines value for %(app)s in notif_from and email subject
  notif_from: "%(app)s <[email protected]>"

Para desactivar la verificación del correo electrónico, pega la siguiente línea.

enable_registration_without_verification: true

Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te pida.

Reinicia Synapse para aplicar la configuración.

$ sudo systemctl restart matrix-synapse

Paso 7 – Configurar Nginx

Abre el archivo /etc/nginx/nginx.conf para editarlo.

$ sudo nano /etc/nginx/nginx.conf

Añade la siguiente línea antes de la línea include /etc/nginx/conf.d/*.conf;.

server_names_hash_bucket_size  64;

Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te solicite.

Crea y abre el archivo /etc/nginx/conf.d/synapse.conf para editarlo.

$ sudo nano /etc/nginx/conf.d/synapse.conf

Pega en él el siguiente código.

# enforce HTTPS
server {
    # Client port
    listen 80;
    listen [::]:80;
    server_name matrix.example.com;
    return 301 https://$host$request_uri;
}

server {
    server_name matrix.example.com;

    # Client port
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    # Federation port
    listen 8448 ssl http2 default_server;
    listen [::]:8448 ssl http2 default_server;

    access_log  /var/log/nginx/synapse.access.log;
    error_log   /var/log/nginx/synapse.error.log;

    # TLS configuration
    ssl_certificate /etc/letsencrypt/live/matrix.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/matrix.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/matrix.example.com/chain.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;

    location ~ ^(/_matrix|/_synapse/client) {
            proxy_pass http://localhost:8008;
            proxy_http_version 1.1;

            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header Host $host;

            # 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 50M;
    }
}

Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te solicite una vez hayas terminado.

Comprueba la sintaxis del archivo de configuración de Nginx.

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Reinicia el servicio Nginx.

$ sudo systemctl restart nginx

Paso 8 – Instalar Coturn

Necesitarás instalar un servidor Traversal Using Relays around NAT (TURN) para habilitar las llamadas de voz y vídeo. Para ello, instalaremos el paquete Coturn. Si no necesitas esta funcionalidad, puedes saltarte este paso.

Ubuntu 22.04 no incluye el paquete Coturn debido a un error que ya se ha resuelto. Sin embargo, hay otra forma de instalar Coturn utilizando un repositorio no oficial. Opcionalmente, también puedes utilizar Docker para instalar Coturn, pero no utilizaremos ese método porque está fuera del alcance de este tutorial.

Añade el repositorio no oficial de Coturn.

$ sudo add-apt-repository ppa:ubuntuhandbook1/coturn

Instala Coturn.

$ sudo apt install coturn

Abre los puertos TURN y UDP.

$ sudo ufw allow 3478
$ sudo ufw allow 5349
$ sudo ufw allow 49152:65535/udp

Genera un certificado SSL para Turn (turn.example.com).

$ sudo certbot certonly --nginx -d turn.example.com

Genera un secreto de autenticación y guárdalo en el archivo de configuración.

$ echo "static-auth-secret=$(cat /dev/urandom | tr -cd '[:alnum:]' | fold -w 256 | head -n 1)" | sudo tee /etc/turnserver.conf

Abre el archivo de configuración para editarlo.

$ sudo nano /etc/turnserver.conf

Pega las siguientes líneas debajo del secreto de autenticación.

use-auth-secret
realm=turn.example.com
cert=/etc/letsencrypt/live/turn.example.com/fullchain.pem
pkey=/etc/letsencrypt/live/turn.example.com/privkey.pem

# VoIP is UDP, no need for TCP
no-tcp-relay

# Do not allow traffic to private IP ranges
no-multicast-peers
denied-peer-ip=0.0.0.0-0.255.255.255
denied-peer-ip=10.0.0.0-10.255.255.255
denied-peer-ip=100.64.0.0-100.127.255.255
denied-peer-ip=127.0.0.0-127.255.255.255
denied-peer-ip=169.254.0.0-169.254.255.255
denied-peer-ip=172.16.0.0-172.31.255.255
denied-peer-ip=192.0.0.0-192.0.0.255
denied-peer-ip=192.0.2.0-192.0.2.255
denied-peer-ip=192.88.99.0-192.88.99.255
denied-peer-ip=192.168.0.0-192.168.255.255
denied-peer-ip=198.18.0.0-198.19.255.255
denied-peer-ip=198.51.100.0-198.51.100.255
denied-peer-ip=203.0.113.0-203.0.113.255
denied-peer-ip=240.0.0.0-255.255.255.255
denied-peer-ip=::1
denied-peer-ip=64:ff9b::-64:ff9b::ffff:ffff
denied-peer-ip=::ffff:0.0.0.0-::ffff:255.255.255.255
denied-peer-ip=100::-100::ffff:ffff:ffff:ffff
denied-peer-ip=2001::-2001:1ff:ffff:ffff:ffff:ffff:ffff:ffff
denied-peer-ip=2002::-2002:ffff:ffff:ffff:ffff:ffff:ffff:ffff
denied-peer-ip=fc00::-fdff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
denied-peer-ip=fe80::-febf:ffff:ffff:ffff:ffff:ffff:ffff:ffff

# Limit number of sessions per user
user-quota=12
# Limit total number of sessions
total-quota=1200

Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te solicite.

Reinicia Coturn para aplicar la configuración.

$ sudo systemctl restart coturn

Crea un nuevo archivo de configuración de Synapse para Coturn.

$ sudo nano /etc/matrix-synapse/conf.d/turn.yaml

Pega en él las siguientes líneas. Sustituye el valor de turn_shared_secret por el valor de static-auth-secret del archivo \etc\turnserver.conf.

turn_uris: [ "turn:turn.example.com?transport=udp", "turn:turn.example.com?transport=tcp" ]
turn_shared_secret: 'static-auth-secret'
turn_user_lifetime: 86400000
turn_allow_guests: True

Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te pida.

Reinicia Synapse para aplicar los cambios.

$ sudo systemctl restart matrix-synapse

Paso 9 – Acceder a Matrix

Puedes acceder al Chat de Matrix utilizando el cliente web de Element en https://app.element.io. Haz clic en el botón Iniciar sesión para continuar.

Página de inicio de sesión de Element Web

Haz clic en el enlace Editar bajo Servidor doméstico. Introduce matrix.example.com como tu servidor doméstico.

Elemento Cliente Servidor personalizado

Si el cliente detecta correctamente tu servidor doméstico, el límite y el texto se volverán de color verde, de lo contrario se mostrarán en rojo. Haz clic en Continuar para continuar.

Inicio de sesión en el servidor doméstico personalizado Element

Haz clic en el botón Iniciar sesión para conectarte. Se te pedirá que crees una copia de seguridad segura y encriptada.

Copia de seguridad Matrix

Selecciona la opción Introducir una frase de seguridad para crear una frase de seguridad que se te pedirá cada vez que inicies sesión. Haz clic en Continuar para proseguir.

Elemento Frase de seguridad

Introduce una frase de seguridad y haz clic en el botón Continuar para proseguir. Se te pedirá que la confirmes de nuevo en la siguiente pantalla.

Elemento Confirmar frase de seguridad

Introduce de nuevo la frase y haz clic en Continuar para proseguir.

Elemento Seguridad Clave Poup

Se te proporcionará un conjunto de claves de seguridad que puedes utilizar si olvidas tu frase de seguridad. Haz clic en el botón Descargar para guardarlas.

Pulsa el botón Continuar para continuar.

Elemento Verificar contraseña

Se te pedirá la contraseña de tu cuenta. Introduce la contraseña y haz clic en el botón Continuar para terminar de configurar la copia de seguridad encriptada.

Panel del Cliente Web Element

Creamos una sala de chat de grupo llamada Howtoforge como se muestra arriba.

Paso 10 – Instalar Element

Instala el paquete jq para instalar el procesador de texto JSON.

$ sudo apt install jq

Crea un directorio para Element.

$ sudo mkdir -p /var/www/element

Crea un nuevo archivo para coger la última versión de Element.

$ sudo nano /var/www/element/update.sh

Añádele las siguientes líneas.

#!/bin/sh
set -e

install_location="/var/www/element"
latest="$(curl -s https://api.github.com/repos/vector-im/element-web/releases/latest | jq -r .tag_name)"

cd "$install_location"

[ ! -d "archive" ] && mkdir -p "archive"
[ -d "archive/element-${latest}" ] && rm -r "archive/element-${latest}"
[ -f "archive/element-${latest}.tar.gz" ] && rm "archive/element-${latest}.tar.gz"

wget "https://github.com/vector-im/element-web/releases/download/${latest}/element-${latest}.tar.gz" -P "archive"
tar xf "archive/element-${latest}.tar.gz" -C "archive"

[ -L "${install_location}/current" ] && rm "${install_location}/current"
ln -sf "${install_location}/archive/element-${latest}" "${install_location}/current"
ln -sf "${install_location}/config.json" "${install_location}/current/config.json"

Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te pida.

Haz que el archivo sea ejecutable.

$ sudo chmod +x /var/www/element/update.sh

Ejecuta el script para descargar Element.

$ sudo /var/www/element/update.sh

Paso 11 – Configurar Element

Copia el mismo archivo de configuración de Element.

$ sudo cp /var/www/element/current/config.sample.json /var/www/element/config.json

Abre el archivo de configuración para editarlo.

$ sudo nano /var/www/element/config.json

Busca las siguientes líneas.

"m.homeserver": {
    "base_url": "https://matrix-client.matrix.org",
    "server_name": "matrix.org"
},

Cambia la dirección por defecto del servidor doméstico de Matrix por la de tu servidor doméstico y elimina la variable server_name.

"m.homeserver": {
    "base_url": "https://matrix.example.com",
    "server_name": "matrix.element.com"  
},

Si quieres utilizar tu propio nombre en lugar de Element en el título del sitio web, cambia el nombre de la marca.

"brand": "Howtoforge Example Chat",

Establece la variable disable_guests como verdadera para no permitir que los invitados utilicen Element.

"disable_guests": true,

Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te solicite.

Genera un certificado SSL para el cliente Element.

$ sudo certbot certonly --nginx -d element.example.com

Crea y abre el archivo /etc/nginx/conf.d/element.conf para editarlo.

$ sudo nano /etc/nginx/conf.d/element.conf

Pega en él las siguientes líneas.

server {
    listen 80;
    listen [::]:80;
    server_name element.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name element.example.com;

    root /var/www/element/current;
    index index.html;

    access_log  /var/log/nginx/element.access.log;
    error_log   /var/log/nginx/element.error.log;

    add_header Referrer-Policy "strict-origin" always;
    add_header X-Content-Type-Options "nosniff" always;
    add_header X-Frame-Options "SAMEORIGIN" always;

    # TLS configuration
    ssl_certificate /etc/letsencrypt/live/element.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/element.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/element.example.com/chain.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
}

Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te solicite.

Comprueba la sintaxis del archivo de configuración de Nginx.

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Reinicia el servicio Nginx.

$ sudo systemctl restart nginx

Puedes acceder al cliente Element a través de la URL https://element.example.com de tu navegador. Inicia sesión y accederás al panel de control de la aplicación.

Panel de control autoalojado Element

Conclusión

Con esto concluye nuestro tutorial sobre la instalación del servidor Matrix Synapse Chat junto con Coturn y el cliente web Element utilizando Nginx como servidor proxy. Si tienes alguna pregunta, publícala en los comentarios a continuación.

También te podría gustar...