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.
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.
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
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;
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.
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
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.
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
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.
- 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.
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.