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
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
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
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
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;
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‘.
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:
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 directorio‘mattermost’ 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.
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
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».
Introduce el nombre de tu organización y haz clic en«Continuar«.
Para la integración con GitHub, Gitlab, Jira y/o Zoom, selecciona según sea necesario. Y vuelve a hacer clic en«Continuar«.
Haz clic en«Finalizar configuración» para completar la configuración.
Una vez finalizado el proceso, verás el panel de control de Mattermost como el siguiente:
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.