Cómo instalar Mattermost en Debian 12

Mattermost es una alternativa de código abierto a Slack y Microsoft Teams. Te permite alojar tú mismo el chat en línea y ofrece muchas funciones, como compartir archivos, búsqueda, automatización y numerosas 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.

Esta guía te mostrará cómo instalar Mattermost en un servidor Debian 12. Instalarás Mattermost con PostgreSQL y Nginx, y también asegurarás Mattermost con certificados SSL.

Requisitos previos

Para empezar con esta guía, asegúrate de que tienes lo siguiente

  • Un servidor Debian 12
  • Un usuario no root con privilegios de administrador
  • Un nombre de dominio listo y apuntando a la dirección IP del servidor

Instalación de dependencias

Antes de instalar Mattermost, tienes que instalar sus dependencias. Esto incluye el servidor de base de datos PostgreSQL, el servidor web Nginx y Certbot.

En primer lugar, ejecuta el siguiente comando para actualizar el índice de paquetes de Debian.

sudo apt update

actualizar repo

Ahora instala dependencias como PostgreSQL, Nginx, Certbot, Gnupg y curl utilizando el siguiente comando‘apt‘. Introduce ‘Y’ para confirmar la instalación.

sudo apt install postgresql postgresql-contrib nginx certbot gnupg curl

instalar deps

Una vez finalizada la instalación, comprueba el estado del servicio PostgreSQL con el comando‘systemctl‘. Verás que PostgreSQL se está ejecutando en tu sistema.

sudo systemctl is-enabled postgresql
sudo systemctl status PostgreSQL

comprobar postgresql

Por último, comprueba el estado del servicio Nginx con el siguiente comando. El servicio Nginx debería estar funcionando en tu sistema Debian.

sudo systemctl is-enabled nginx
sudo systemctl status nginx

comprobar el estado de nginx

Configurar el usuario y la base de datos PostgreSQL

Una vez instaladas las dependencias, crearás una nueva base de datos y un nuevo usuario para Mattermost. Para ello, utilizarás la shell PostgreSQL «psql», que se instala por defecto al instalar un servidor PostgreSQL.

Accede a PostgreSQL con el siguiente comando ‘psql’.

sudo -u postgres psql

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

CREATE DATABASE mattermost;
CREATE USER mmuser WITH PASSWORD 'password';
GRANT ALL ON DATABASE mattermost TO mmuser;
ALTER DATABASE mattermost OWNER TO mmuser;
GRANT USAGE, CREATE ON SCHEMA PUBLIC TO mmuser;

crear base de datos y usuario

A continuación, comprueba la lista de bases de datos y usuarios de tu servidor PostgreSQL con lo siguiente:

\l
\du

A continuación, puedes ver que se ha creado la base de datos y el usuario‘mattermost‘.

Escribe‘quit‘ para salir del intérprete de comandos‘psql‘.

listado base de datos y usuario

Con el nuevo usuario PostgreSQL y la base de datos creados, vas a verificar tu usuario PostgreSQL para asegurarte de que puede iniciar sesión en el servidor PostgreSQL.

Ahora ejecuta el comando‘psql‘ que aparece a continuación para iniciar sesión en el servidor PostgreSQL con el usuario‘mattermost‘. Introduce tu contraseña cuando se te solicite.

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

Una vez conectado, comprueba tu conexión con la siguiente consulta:

\conninfo

Verás el estado de la conexión al PostgreSQL como el siguiente:

información de conexión

Instalando Mattermost

En este punto, tu servidor está listo para la instalación de Mattermost. Ahora deberás descargar el código fuente de Mattermost, configurar el directorio de instalación, configurar Mattermost con PostgreSQL, configurar el nombre de dominio de Mattermost y, a continuación, configurar el permiso y la propiedad adecuados del directorio de instalación de Mattermost.

Antes de descargar Mattermost, añade el nuevo usuario del sistema‘mattermost‘ con lo siguiente:

sudo useradd --system --user-group mattermost

Ahora ejecuta el siguiente comando‘wget‘ para descargar Mattermost y extráelo utilizando el siguiente comando‘tar‘. El servidor Mattermost estará disponible en el directorio‘mattermost‘.

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

A continuación, mueve el directoriomattermost’ al directorio‘/opt‘ con lo siguiente. Así, el directorio de instalación de Mattermost estará disponible en‘/opt/mattermost‘.

mv mattermost /opt/

Y a continuación crea un nuevo directorio de datos‘/opt/mattermost/data‘. Éste se utilizará para almacenar los datos de los usuarios.

sudo mkdir -p /opt/mattermost/data

A continuación, abre la configuración por defecto de Mattermost‘/opt/mattermost/config/config.json‘ con el editor‘nano‘.

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

Cambia el ‘SiteURL’ por tu nombre de dominio, por ejemplo‘https://mattermost.howtoforge.local’.

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

En las secciones «SqlSettings» y«DataSource«, cambia las credenciales de la base de datos por tus datos, como se indica a continuación:

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

Guarda el archivo y sal del editor.

Por último, ejecuta el siguiente comando para cambiar la propiedad del directorio‘/opt/mattermost‘ al usuario‘mattermost‘. Asegúrate también de que el grupo «mattermost» puede escribir en el directorio«/opt/mattermost«.

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

Crear el servicio systemd para Mattermost

En esta sección, crearás un nuevo archivo de servicio systemd para Mattermost. Con esto, Mattermost se ejecutará en segundo plano y podrás gestionar fácilmente el proceso Mattermost con la utilidad ‘systemctl’.

Crea un nuevo archivo de servicio systemd‘/etc/systemd/system/mattermost.service‘ utilizando 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.

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

sudo systemctl daemon-reload

Por último, ahora puedes iniciar, habilitar y verificar el servicio‘mattermost‘ con el siguiente comando.

sudo systemctl enable --now mattermost
sudo systemctl status mattermost

Como se ve a continuación, el servicio‘mattermost‘ se está ejecutando y está habilitado.

servicio mattermost

Configurar Nginx como proxy inverso

Llegados a este punto, Mattermost se está ejecutando en tu servidor Debian 12. En esta sección, generarás certificados SSL de Letsencrypt y, a continuación, crearás un nuevo bloque de servidor Nginx que se utilizará como proxy inverso para Mattermost.

Antes de configurar Nginx, ejecuta el siguiente comando para detener el servicio Nginx y generar certificados SSL para Mattermost. Asegúrate de cambiar el nombre de dominio y la dirección de correo electrónico con tu información.

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

Una vez finalizado el proceso, tus certificados SSL estarán disponibles en el directorio ‘/etc/letsencrypt/live/mattermost.howtoforge.local’.

A continuación, abre la configuración por defecto de Nginx ‘/etc/nginx/nginx.conf’ con el editor ‘nano’.

sudo nano /etc/nginx/nginx.conf

Añade la siguiente configuración antes de la línea ‘/etc/nginx/nginx.conf’.

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

Guarda y sal del archivo.

Ahora crea una nueva configuración de bloque de servidor Nginx ‘/etc/nginx/sites-available/mattermost’ utilizando el editor ‘nano’.

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

Inserta la configuración que aparece a continuación y asegúrate de cambiar la opción ‘nombre_servidor’ por tu nombre de dominio. Asegúrate también de ajustar la ruta de los certificados SSL.

upstream backend {
server 127.0.0.1:8065;
keepalive 32;
}
server {
listen 80;
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 "";
}

Cuando hayas terminado, guarda el archivo y sal del editor.

Ahora activa el bloque del servidor Nginx para mattermost y verifica tu sintaxis Nginx. Si la sintaxis es correcta, verás una salida«la sintaxis es correcta – la prueba se ha realizado correctamente«.

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

Por último, ejecuta el siguiente comando `systemctl` para reiniciar el servicio Nginx y aplicar tus cambios. Con esto, Mattermost se ejecutará bajo el proxy inverso Nginx.

sudo systemctl restart nginx

configurar proxy inverso nginx

Crear el primer espacio de trabajo en Mattermost

Abre tu navegador web y visita https://mattermost.howtoforge.local. Si la instalación se realiza correctamente, se te pedirá que crees un nuevo administrador para Mattermost.

Introduce el nuevo usuario administrador, el correo electrónico y la contraseña, y haz clic en«Crear cuenta».

crear cuenta de administrador

Introduce el nombre de tu organización y haz clic en«Continuar«.

nombre organización

Para la integración con GitHub, Gitlab, Jira y/o Zoom, selecciona según sea necesario. Y vuelve a hacer clic en«Continuar«.

integración

Haz clic en«Finalizar configuración» para completar la configuración.

terminar la configuración

Una vez finalizado el proceso, verás el panel de control de Mattermost como el siguiente:

instalación completa

Conclusión

¡Enhorabuena! Has completado la instalación de Mattermost en el servidor Debian 12. Has puesto en marcha Mattermost con PostgreSQL como base de datos y Nginx como proxy inverso. Por último, también has asegurado Mattermost con HTTPS a través de Certbot y Letsencrypt. Para el siguiente paso, puede que necesites añadir un servidor SMTP a tu instalación de Mattermost para permitir las notificaciones por correo electrónico. Además, también puedes integrar Mattermost con aplicaciones de terceros.

También te podría gustar...