Cómo instalar el sistema de mensajería en equipo Mattermost en Debian 10

Mattermost es un sistema de mensajería de código abierto escrito en los lenguajes de programación Golang y React. Es una alternativa a Slack, con la que podemos construir nuestro propio servicio de mensajería como Slack o Hipchat.

Mattermost lleva la comunicación de tu equipo a un único lugar y la hace accesible en cualquier lugar. Puedes acceder a él desde tu escritorio, dispositivo Android y iPhone.

En este tutorial, te mostraremos cómo instalar Mattermost en Debian Buster 10. Instalaremos Mattermost con el servidor de base de datos MySQL, el servidor web Nginx y ejecutaremos Mattermost como servicio Systemd en la última versión de Debian Buster 10.

Requisitos previos

Para este tutorial, probaremos la instalación de Mattermost en Debian 10 con 2GB de Ram, 25 de espacio libre en disco y 2CPUs.

¿Qué haremos?

  • Instalar el servidor MySQL
  • Crear una base de datos MySQL para Mattermost
  • Añadir el usuario del sistema y descargar Mattermost
  • Configurar Mattermost
  • Configurar Mattermost como servicio Systemd
  • Generar SSL Letsencrypt
  • Instalar y configurar Nginx como proxy inverso
  • Prueba de

Paso 1 – Instalar la base de datos MySQL

En primer lugar, instalaremos el servidor MySQL 8.0 desde el repositorio oficial a nuestro servidor Debian. Sp, añadiremos el repositorio oficial de MySQL e instalaremos los paquetes de MySQL.

Instala la herramienta ‘gnupg2’ en el servidor Debian utilizando el comando apt que aparece a continuación.

sudo apt install curl wget gnupg2

Descarga y añade el repositorio de MySQL para el sistema Debian utilizando el siguiente comando.

wget https://dev.mysql.com/get/mysql-apt-config_0.8.13-1_all.deb
dpkg -i mysql-apt-config_0.8.13-1_all.deb

Ahora actualiza todos los repositorios de Debian e instala los paquetes del Servidor MySQL.

sudo apt update
sudo apt install mysql-server -y

Durante la instalación del Servidor MySQL, se te pedirá que configures la contraseña de root para tu servidor MySQL.

Escribe tu contraseña de root para MySQL y repítelo.

Establecer la contraseña de MySQL

Una vez finalizada la instalación, inicia el servicio MySQL y añádelo al

systemctl start mysql
systemctl enable mysql

Como resultado, el Servidor MySQL está ahora instalado en Debian Buster 10. Y se ha configurado la contraseña de root para el Servidor MySQL.

Iniciar MySQL

Paso 2 – Crear la base de datos MySQL para Mattermost

Por defecto, el soporte de Mattermost de dos controladores de base de datos, las bases de datos PostgreSQL y MySQL. Y para este tutorial, utilizaremos MySQL como base de datos por defecto para Mattermost.

En este paso, crearemos una nueva base de datos y un nuevo usuario para la instalación de Mattermost.

Accede al shell de MySQL utilizando tu usuario y contraseña de root como se indica a continuación.

mysql -u root -p

Ahora crea una nueva base de datos y un nuevo usuario para Mattermost. Crearemos una nueva base de datos ‘mattermost’ con el usuario ‘mmuser’ y la contraseña ‘mmuser-password’.

create database mattermost;
create user mmuser@localhost identified by 'mmuser-password';
grant all privileges on mattermost.* to mmuser@localhost;
flush privileges;

Ahora escribe ‘exit’ para salir del shell de MySQL.

Crear base de datos para Mattermost

Y como resultado, se ha creado la base de datos MySQL y el usuario para la instalación de Mattermost.

Paso 3 – Añadir usuario y descargar Mattermost

En este paso, crearemos un nuevo usuario del sistema y descargaremos el código fuente de Mattermost. El software Mattermost se ejecutará bajo el usuario llamado ‘mattermost’, y se instalará en el directorio ‘/opt/mattermost’.

Crea un nuevo usuario del sistema llamado ‘mattermost’ utilizando el siguiente comando.

useradd --system --user-group mattermost

Ahora ve al directorio ‘/opt’ y descarga el código fuente de Mattermost utilizando el siguiente comando curl.

cd /opt/
curl -o mattermost.tar.gz https://releases.mattermost.com/5.21.0/mattermost-5.21.0-linux-amd64.tar.gz

Extrae el código fuente de Mattermost y crea un nuevo directorio «data».

tar -xf mattermost.tar.gz
mkdir -p /opt/mattermost/data

Después, cambia la propiedad del directorio ‘/opt/mattermost’ al usuario ‘mattermost’ y hazlo escribible.

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

Como resultado, se ha creado el usuario ‘mattermost’ y se ha descargado el código fuente de Mattermost en el directorio ‘/opt/mattermost’.

Añadir un usuario del sistema Linux para Mattermost

Paso 4 – Configurar Mattermost

En este paso, configuraremos la dirección de escucha y la base de datos de Mattermost. El servicio Mattermost se ejecutará en la dirección IP local, en el puerto por defecto 8065 y utilizando MySQL como sistema de base de datos.

Ve al directorio ‘/opt/mattermost’ y edita el archivo de configuración ‘config.json’ en el directorio ‘config’.

cd /opt/mattermost/
vim config/config.json

En la opción ‘ListenAddress’, cambia la dirección IP a ‘127.0.0.1’.

    "ListenAddress": "127.0.0.1:8065",

En ‘SqlSettings’, cambia el DriverName a ‘mysql’ y cambia el ‘DataSource’ con la base de datos MySQL y el usuario que hemos creado.

  "SqlSettings": {
    "DriverName": "mysql",
    "DataSource": "dbuser:dbpassword@tcp(localhost:3306)/dbname?charset=utf8mb4,utf8\u0026readTimeout=30s\u0026writeTimeout=30s",    

Guarda y cierra.

A continuación, inicializa la instalación de Mattermost con el siguiente comando.

sudo -u mattermost ./bin/mattermost

A continuación se muestra el resultado que obtendrás.

Configurar Mattermost

Como resultado, Mattermost está funcionando en la dirección IP local ‘127.0.0.1’ con el puerto ‘8065’, ahora pulsa el botón ‘Ctrl+c’ para salir.

Paso 5 – Configurar Mattermost como servicio

En este paso, configuraremos Mattermost como un servicio systemd, y se ejecutará automáticamente en el arranque del sistema después de que se ejecute el servicio de base de datos MySQL.

Ahora ve al directorio ‘/lib/systemd/system’ y crea un nuevo archivo de servicio ‘mattermost.service’.

cd /lib/systemd/system/
vim mattermost.service

Ahora pega en él la siguiente configuración.

[Unit]
Description=Mattermost
After=network.target
After=mysql.service
Requires=mysql.service

[Service]
Type=notify
ExecStart=/opt/mattermost/bin/mattermost
TimeoutStartSec=3600
Restart=always
RestartSec=10
WorkingDirectory=/opt/mattermost
User=mattermost
Group=mattermost
LimitNOFILE=49152

[Install]
WantedBy=multi-user.target

Guarda y cierra.

A continuación, vuelve a cargar el gestor systemd en el sistema Debian.

systemctl daemon-reload

Después, inicia el servicio Mattermost y añádelo al arranque del sistema.

systemctl start mattermost
systemctl enable mattermost

Crear un archivo de unidad Systemd

El servicio Mattermost está en marcha, compruébalo con el siguiente comando.

systemctl status mattermost

A continuación se muestra el resultado que obtendrás.

Comprueba el estado del servicio

Como resultado, el servicio Mattermost está en funcionamiento en el sistema Debian, y se ejecutará automáticamente en el arranque del sistema.

Paso 6 – Instalar Certbot Letsencrypt

En este paso, instalaremos la herramienta certbot y generaremos el SSL Letsencrypt. Aseguraremos la instalación de Mattermost utilizando el SSL de Letsencrypt.

Instala la herramienta certbot con el comando apt que aparece a continuación.

sudo apt install certbot

Una vez completada la instalación, genera el SSL letsencrypt utilizando el comando certbot que aparece a continuación.

certbot certonly --standalone --agree-tos -m [email protected] -d mattermost.hakase-labs.io

Como resultado, tus certificados SSL se generarán en el directorio ‘/etc/letsencrypt/live/mattermost-hakase-labs.io’.

Paso 7 – Instalar y configurar Nginx como proxy inverso

En este paso, instalaremos el servidor web Nginx y lo configuraremos como proxy inverso para el servicio Mattermost.

Instala Nginx utilizando el comando apt que aparece a continuación.

sudo apt install nginx -y

Una vez completada la instalación, inicia el servicio Nginx y añádelo al arranque del sistema.

systemctl start nginx 
systemctl enable nginx

El servidor web Nginx está en funcionamiento.

A continuación, ve al directorio de configuración ‘/etc/nginx’ y crea una nueva configuración de host virtual para mattermost.

cd /etc/nginx/
vim sites-available/mattermost

Cambia el nombre de dominio y la ruta de los certificados SSL por los tuyos, y luego pega la configuración en él.

upstream backend {
   server 127.0.0.1:8065;
   keepalive 32;
}

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=mattermost_cache:10m max_size=3g inactive=120m use_temp_path=off;

server {
   listen         80;
   server_name    edu.initrc.fun;
   return         301 https://$server_name$request_uri;
}
 
server {
    listen 443 ssl http2;
    server_name    edu.initrc.fun

    ssl on;
    ssl_certificate /etc/letsencrypt/live/edu.initrc.fun/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/edu.initrc.fun/privkey.pem;
    ssl_session_timeout 1d;
    ssl_protocols TLSv1.2;
    ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:50m;
    # HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 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;

   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 $http_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 60;
       send_timeout 300;
       lingering_timeout 5;
       proxy_connect_timeout 90;
       proxy_send_timeout 300;
       proxy_read_timeout 90s;
       proxy_pass http://backend;
   }

   location / {
       client_max_body_size 50M;
       proxy_set_header Connection "";
       proxy_set_header Host $http_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_cache mattermost_cache;
       proxy_cache_revalidate on;
       proxy_cache_min_uses 2;
       proxy_cache_use_stale timeout;
       proxy_cache_lock on;
       proxy_http_version 1.1;
       proxy_pass http://backend;
   }
}

Guarda y cierra.

A continuación, crea el directorio de caché de Nginx y cambia la propiedad de ese directorio al usuario por defecto ‘www-data’.

mkdir -p /var/cache/nginx
chown -R www-data:www-data /var/cache/nginx

Después, activa el virtualhost de Mattermost, luego prueba la configuración de nginx y asegúrate de que no hay ningún error.

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

Ahora reinicia el servicio Nginx utilizando el comando systemctl que aparece a continuación.

systemctl restart nginx

Como resultado, la instalación y configuración de Nginx como proxy inverso para Mattermost se ha completado. Y estamos listos para probar la instalación de Mattermost.

Configurar Nginx

Paso 8 – Prueba

Abre tu navegador web y escribe el nombre de dominio de la URL de tu instalación de Mattermost en la barra de direcciones. El mío es

https://mattermost.hakase-labs.io/

Ahora tienes que crear una nueva primera cuenta de Mattermost, que será la del administrador de Mattermost.

Instalador web de Mattermost

Escribe los detalles de tu nombre de usuario, correo electrónico y contraseña y haz clic en el botón «Crear cuenta».

Crea un nuevo primer equipo en Mattermost.

Crear un equipo

Escribe el nombre de tu primer equipo y haz clic en «Siguiente».

Establecer el nombre del equipo

Y la URL del equipo será el nombre del equipo, haz clic en ‘Finalizar’ para continuar.

URL del equipo

Y te unirás automáticamente al canal por defecto «Off-Topic» y «Town Square».

Panel de control de Mattermost

Como resultado, la instalación de Mattermost en Debian Buster 10 con base de datos MySQL y servidor web Nginx se ha completado con éxito.

También te podría gustar...