Cómo instalar Mattermost con proxy Nginx y SSL gratuito Let’s Encrypt en Ubuntu 24.04

Mattermost es una alternativa de código abierto a Slack y Microsoft Teams. Te permite autoalojar un chat en línea con múltiples funciones, como compartir archivos, búsqueda, automatización e integraciones con terceros.

Mattermost es una plataforma de colaboración diseñada como chat interno para organizaciones y empresas. Combina sistemas de mensajería, automatización, integraciones y seguridad para flujos de trabajo críticos.

En este tutorial, aprenderás a instalar Mattermost en un servidor Ubuntu 24.04. Instalarás Mattermost con PostgreSQL como base de datos y Nginx como proxy inverso. También asegurarás Mattermost con HTTPS, y luego crearás tu primer espacio de trabajo con Mattermost.

Requisitos previos

Para empezar con este tutorial, asegúrate de que tienes lo siguiente:

  • Un servidor Ubuntu 24.04
  • Un usuario no root con privilegios de administrador
  • Un nombre de dominio apuntando a la dirección IP del servidor

Instalar dependencias

Para instalar Mattermost, debes instalar las dependencias en tu servidor, incluyendo el servidor de base de datos PostgreSQL, el servidor web Nginx y Certbot.

En primer lugar, ejecuta el comando‘apt‘ que aparece a continuación para actualizar tu índice de paquetes de Ubuntu e instalar dependencias como PostgreSQL, el servidor web Nginx y Certbot. El servidor PostgreSQL se utilizará como base de datos por defecto para Mattermost, y Nginx se utilizará como proxy inverso.

sudo apt update && sudo apt install postgresql postgresql-contrib nginx certbot

Introduce‘Y’ para confirmar la instalación.

instalar deps

Tras la instalación, comprueba el estado del servicio PostgreSQL para asegurarte de que se está ejecutando.

sudo systemctl is-enabled postgresql
sudo systemctl status postgresql

Puedes ver a continuación que el servidor PostgreSQL está habilitado y en ejecución.

comprobar postgresql

Ahora comprueba el estado del servidor web Nginx utilizando el comando que aparece a continuación. Verás que Nginx también se está ejecutando y está habilitado en tu sistema Ubuntu.

sudo systemctl is-enabled nginx
sudo systemctl status nginx

comprobar nginx

Configurar la base de datos PostgreSQL y el usuario

Tras instalar las dependencias, crearás una base de datos PostgreSQL y un usuario para Mattermost utilizando el intérprete de comandos ‘psql’ o PostgreSQL. Por último, también comprobarás la autenticación en PostgreSQL con tu nuevo usuario.

Accede al shell PostgreSQL con el comando‘psql‘ que aparece a continuación.

sudo -u postgres psql

Ahora ejecuta las siguientes consultas para crear una nueva base de datos‘mattermostdb‘ y un nuevo usuario ‘mmuser ‘ con la contraseña‘password’.

CREATE DATABASE mattermostdb;
CREATE USER mmuser WITH PASSWORD 'password';
GRANT ALL PRIVILEGES ON DATABASE mattermostdb to mmuser;

crear nuevo usuario

Una vez que hayas creado la base de datos y el usuario, ejecuta la consulta siguiente para listar las bases de datos y los usuarios disponibles en tu servidor PostgreSQL.

\du
\l

En la siguiente salida, puedes ver que la base de datos‘mattermostdb‘ y el usuario‘mmuser‘ están disponibles en el servidor PostgreSQL.

Ahora escribe‘quit’ para salir del PostgreSQL.

usuario de la lista

A continuación, ejecuta el siguiente comando‘psql‘ para acceder a la base de datos‘mattermostdb‘ como usuario‘mmuser‘. Introduce tu contraseña cuando se te solicite.

sudo -u postgres psql --host=localhost --dbname=mattermostdb --username=mmuser --password

Por último, verifica tu conexión ejecutando la consulta\conninfo‘ que aparece a continuación. Asegúrate de que estás conectado como usuario«mmuser» a la base de datos«mattermostdb«.

\conninfo

comprueba la conexión

Descarga de Mattermost

Con la base de datos lista, ahora descargarás Mattermost, crearás un directorio de datos, configurarás el nombre de dominio de Mattermost y PostgreSQL como base de datos, y luego configurarás los permisos y la propiedad adecuados para Mattermost.

En primer lugar, ejecuta el comando‘useradd‘ que aparece a continuación para crear un nuevo usuario‘mattermost‘ en tu sistema.

sudo useradd --system --user-group mattermost

Descarga el archivo binario de Mattermost utilizando el comando«wget» que aparece a continuación. A continuación, extrae el Mattermost con el comando «tar».

wget https://releases.mattermost.com/10.0.1/mattermost-10.0.1-linux-amd64.tar.gz
tar -xf mattermost-10.0.1-linux-amd64.tar.gz

Ahora mueve el directorio extraído a‘/opt/mattermost‘ con el comando que aparece a continuación.

mv mattermost /opt/

A continuación, crea un nuevo directorio de datos‘/var/mattermost/data‘ para almacenar los datos de usuario.

sudo mkdir -p /opt/mattermost/data

Después, edita la configuración por defecto‘/opt/mattermost/config/config.json‘ con el editor‘nano‘.

sudo nano /opt/mattermost/config/config.json

En la sección«ServiceSettings«, introduce el nombre de tu dominio en la línea«SiteURL«.

"ServiceSettings": {
 "SiteURL": "mattermost.howtoforge.local",

En la sección‘SqlSettings‘, cambia la base de datos de detalles por los detalles de tu base de datos PostgreSQL.

"SqlSettings": {
 "DriverName": "postgres",
 "DataSource": "postgres://mmuser:password@localhost/mattermostdb?sslmode=disable\u0026connect_timeout=10\u0026binary_parameters=yes",

Guarda el archivo y sal cuando hayas terminado.

Por último, ejecuta los siguientes comandos para cambiar la propiedad del directorio‘/opt/mattermost‘ al usuario ‘mattermost’ y habilitar el acceso de escritura en ese directorio.

sudo chown -R mattermost:mattermost /opt/mattermost
sudo chmod -R g+w /opt/mattermost

Además, para realizar pruebas, puedes iniciar Mattermost manualmente con el comando siguiente.

cd /opt/mattermost
sudo -u mattermost ./bin/mattermost

Ejecutar Mattermost como un servicio systemd

En esta sección, crearás un nuevo archivo de servicio systemd para Mattermost. De este modo, Mattermost se ejecutará en segundo plano y podrás gestionarlo fácilmente mediante el comando «systemctl».

Crea un nuevo archivo de servicio systemd‘/etc/systemd/system/mattermost.service‘ con el editor ‘nano’.

sudo nano /etc/systemd/system/mattermost.service

Introduce la siguiente configuración en el archivo.

[Unit]
Description=Mattermost
After=network.target
After=postgresql.service
BindsTo=postgresql.service
[Service]
Type=notify
ExecStart=/opt/mattermost/bin/mattermost
TimeoutStartSec=3600
KillMode=mixed
Restart=always
RestartSec=10
WorkingDirectory=/opt/mattermost
User=mattermost
Group=mattermost
LimitNOFILE=49152

[Install]
WantedBy=multi-user.target

Guarda el archivo y sal del editor cuando hayas terminado.

Ahora ejecuta el comando‘systemctl‘ que aparece a continuación para recargar el gestor systemd.

sudo systemctl daemon-reload

Por último, inicia y habilita el servicio‘mattermost‘ mediante el siguiente comando, y después comprueba que se está ejecutando.

sudo systemctl enable --now mattermost
sudo systemctl status mattermost

Si Mattermost se está ejecutando, verás la siguiente salida en tu pantalla.

servicio mattermost

Configurar Nginx como proxy inverso

Llegados a este punto, Mattermost está en funcionamiento, y ahora tendrás que generar certificados SSL/TLS para Mattermost mediante Certbot, y luego configurar Nginx como proxy inverso. Así que asegúrate de que tu nombre de dominio apunta a una dirección IP de servidor.

Antes de configurar Nginx, ejecuta el siguiente comando‘certbot‘ para generar certificados SSL/TLS para tu instalación de Mattermost. Asegúrate de cambiar la dirección de correo electrónico y el nombre de dominio con tus datos.

sudo systemctl stop nginx
sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d mattermost.howtoforge.local

Ahora abre el archivo de configuración por defecto de Nginx‘/etc/nginx/nginx.conf‘ utilizando‘nano‘.

sudo nano /etc/nginx/nginx.conf

Inserta la siguiente línea antes de la línea‘include /etc/nginx/conf.d/*.conf;‘.

server_names_hash_bucket_size 64;
include /etc/nginx/conf.d/*.conf;

Guarda el archivo y sal de él cuando hayas terminado.

A continuación, crea una nueva configuración de bloque de servidor Nginx‘/etc/nginx/sites-available/mattermost‘ con el siguiente editor‘nano‘.

sudo nano /etc/nginx/sites-available/mattermost

Inserta la siguiente configuración y asegúrate de cambiar el nombre de dominio con tu información.

upstream backend {
server 127.0.0.1:8065;
keepalive 32;
}
server {
listen 80 default_server;
server_name mattermost.howtoforge.local;
return 301 https://$server_name$request_uri;
}

server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name mattermost.howtoforge.local;

http2_push_preload on; # Enable HTTP/2 Server Push

ssl_certificate /etc/letsencrypt/live/mattermost.howtoforge.local/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mattermost.howtoforge.local/privkey.pem;
ssl_session_timeout 1d;

# Enable TLS versions (TLSv1.3 is required upcoming HTTP/3 QUIC).
ssl_protocols TLSv1.2 TLSv1.3;

# Enable TLSv1.3's 0-RTT. Use $ssl_early_data when reverse proxying to
# prevent replay attacks.
#
# @see: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data
ssl_early_data on;

ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384';
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:50m;
# HSTS (ngx_http_headers_module is required) (15768000 seconds = six months)
add_header Strict-Transport-Security max-age=15768000;
# OCSP Stapling ---
# fetch OCSP records from URL in ssl_certificate and cache them
ssl_stapling on;
ssl_stapling_verify on;

add_header X-Early-Data $tls1_3_early_data;

location ~ /api/v[0-9]+/(users/)?websocket$ {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
client_max_body_size 50M;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Frame-Options SAMEORIGIN;
proxy_buffers 256 16k;
proxy_buffer_size 16k;
client_body_timeout 60s;
send_timeout 300s;
lingering_timeout 5s;
proxy_connect_timeout 90s;
proxy_send_timeout 300s;
proxy_read_timeout 90s;
proxy_http_version 1.1;
proxy_pass http://backend;
}

location / {
client_max_body_size 100M;
proxy_set_header Connection "";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Frame-Options SAMEORIGIN;
proxy_buffers 256 16k;
proxy_buffer_size 16k;
proxy_read_timeout 600s;
proxy_http_version 1.1;
proxy_pass http://backend;
}
}

# This block is useful for debugging TLS v1.3. Please feel free to remove this
# and use the '$ssl_early_data' variable exposed by NGINX directly should you
# wish to do so.
map $ssl_early_data $tls1_3_early_data {
"~." $ssl_early_data;
default "";
}

Guarda el archivo y sal del editor.

Ahora ejecuta el siguiente comando para activar el bloque de servidor ‘mattermost’ y verificar tu sintaxis Nginx. Si la sintaxis de Nginx es correcta, verás un mensaje como‘syntax is ok – test is successful‘.

sudo ln -s /etc/nginx/sites-available/mattermost /etc/nginx/sites-enabled/
sudo nginx -t

Por último, ejecuta el siguiente comando‘systemctl‘ para iniciar de nuevo el servidor web Nginx. Con esto, la instalación de Mattermost estará lista con HTTPS también habilitado.

sudo systemctl start nginx

configuración de nginx

Acceder a Mattermost

Abre tu navegador web y visita tu nombre de dominio https://mattermost.howtoforge.local/. Desde aquí, puedes crear tu primer espacio de trabajo en Mattermost.

configuración de mattermost

  • Haz clic en«Ver en el navegador» para configurar Mattermost.
  • Introduce los datos de tu cuenta y haz clic en‘Crear cuenta‘.
  • Introduce el nombre de tu organización y haz clic en«Continuar«.
  • Haz clic en«Finalizar configuración» para completar la configuración.

Ahora verás el siguiente panel de control de tu espacio de trabajo.

mattermost

Conclusión

¡Enhorabuena! Has completado la instalación de Mattermost en el servidor Ubuntu 24.04. Mattermost se está ejecutando con PostgreSQL como base de datos y Nginx como proxy inverso. También has asegurado Mattermost con el SSL de Let’s Encrypt.

También te podría gustar...