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

Establecer contrase√Īa MySQL

Mattermost es un sistema de mensajería de código abierto escrito en los lenguajes de programación Golang y React. Es una alternativa de slack, podemos usarla para construir nuestro propio servicio de mensajería como slack o hipchat.

Mattermost lleva la comunicación de su equipo a un solo lugar y la hace accesible desde cualquier lugar. Puede acceder desde su escritorio, dispositivo Android y iPhone.

En este tutorial, le 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 un servicio Systemd en la √ļltima versi√≥n de Debian Buster 10.

Requisito previo

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

¬ŅLo que haremos?

  • Instalar servidor MySQL
  • Crear base de datos MySQL para Mattermost
  • Agregar usuario del sistema y descargar Mattermost
  • Configurar Mattermost
  • Configurar Mattermost como un servicio de Systemd
  • Generar SSL Letsencrypt
  • Instalar y configurar Nginx como proxy inverso
  • Pruebas

Paso 1: instalar la base de datos MySQL

Primero, instalaremos MySQL Server 8.0 desde el repositorio oficial a nuestro servidor Debian. Sp, agregaremos el repositorio oficial de MySQL e instalaremos los paquetes de MySQL.

Instale la herramienta ‘gnupg2’ en el servidor Debian usando el comando apt a continuaci√≥n.

sudo apt install curl wget gnupg2

Descargue y agregue el repositorio MySQL para el sistema Debian usando 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 actualice todos los repositorios de Debian e instale los paquetes del servidor MySQL.

sudo apt update
sudo apt install mysql-server -y

Durante la instalaci√≥n del servidor MySQL, se le pedir√° que configure la contrase√Īa de root para su servidor MySQL.

Escriba su contrase√Īa de root para MySQL y rep√≠tala.

Establecer contrase√Īa MySQL

Una vez completada la instalación, inicie el servicio MySQL y agréguelo al

systemctl start mysql
systemctl enable mysql

Como resultado, MySQL Server ahora est√° instalado en Debian Buster 10. Y se ha configurado la contrase√Īa ra√≠z para MySQL Server.

Iniciar MySQL

Paso 2: crear una base de datos MySQL para Mattermost

De forma predeterminada, Mattermost admite dos controladores de base de datos, las bases de datos PostgreSQL y MySQL. Y para este tutorial, usaremos MySQL como base de datos predeterminada para Mattermost.

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

Inicie sesi√≥n en el shell de MySQL con su usuario ra√≠z y contrase√Īa como se muestra a continuaci√≥n.

mysql -u root -p

Ahora cree 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 [email protected] identified by 'mmuser-password';
grant all privileges on mattermost.* to [email protected];
flush privileges;

Ahora escriba ‘salir’ para cerrar sesi√≥n en el 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: agregar usuario y descargar Mattermost

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

Cree un nuevo usuario del sistema llamado ‘mattermost’ usando el siguiente comando.

useradd --system --user-group mattermost

Ahora vaya al directorio ‘/opt’ y descargue el c√≥digo fuente de Mattermost usando el comando curl a continuaci√≥n.

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

Extraiga el c√≥digo fuente de Mattermost y cree un nuevo directorio de ‘datos’.

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

Despu√©s de eso, cambie la propiedad del directorio ‘/opt/mattermost’ al usuario ‘mattermost’ y haga que se pueda escribir.

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

Como resultado, se cre√≥ el usuario ‘mattermost’ y se descarg√≥ el c√≥digo fuente de Mattermost en el directorio ‘/opt/mattermost’.

Agregar 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 de Mattermost se ejecutará en la dirección IP local en el puerto predeterminado 8065 y utilizará MySQL como sistema de base de datos.

Vaya al directorio ‘/opt/mattermost’ y edite el archivo de configuraci√≥n ‘config.json’ en el directorio ‘config’.

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

En la opci√≥n ‘ListenAddress’, cambie la direcci√≥n IP a ‘127.0.0.1’.

    "ListenAddress": "127.0.0.1:8065",

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

  "SqlSettings": {
    "DriverName": "mysql", 
    "DataSource": "dbuser:[email protected](localhost:3306)/dbname?charset=utf8mb4,utf8\u0026readTimeout=30s\u0026writeTimeout=30s",

Guardar y cerrar.

Luego, inicialice la instalación de Mattermost usando el siguiente comando.

sudo -u mattermost ./bin/mattermost

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

Configurar Mattermost

Como resultado, Mattermost est√° funcionando en la direcci√≥n IP local ‘127.0.0.1’ con el puerto ‘8065’, ahora presione el bot√≥n ‘Ctrl+c’ para salir.

Paso 5: configure Mattermost como un 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 vaya al directorio ‘/lib/systemd/system’ y cree un nuevo archivo de servicio ‘mattermost.service’.

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

Ahora pegue la siguiente configuración en él.

[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


Guardar y cerrar.

A continuación, vuelva a cargar systemd manager en el sistema Debian.

systemctl daemon-reload

Después de eso, inicie el servicio Mattermost y agréguelo al inicio del sistema.

systemctl start mattermost
systemctl enable mattermost

Crear archivo de unidad Systemd

El servicio Mattermost está en funcionamiento, verifíquelo con el siguiente comando.

systemctl status mattermost

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

Consultar estado del servicio

Como resultado, el servicio de Mattermost est√° funcionando en el sistema Debian y se ejecutar√° autom√°ticamente al arrancar el 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.

Instale la herramienta certbot usando el comando apt a continuación.

sudo apt install certbot

Una vez que se complete la instalación, genere el SSL letsencrypt usando el comando certbot a continuación.

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

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

Paso 7: instale y configure Nginx como proxy inverso

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

Instale Nginx usando el comando apt a continuación.

sudo apt install nginx -y

Una vez que se complete la instalación, inicie el servicio Nginx y agréguelo al inicio del sistema.

systemctl start nginx 
systemctl enable nginx

El servidor web Nginx est√° en funcionamiento.

A continuaci√≥n, vaya al directorio de configuraci√≥n ‘/etc/nginx’ y cree una nueva configuraci√≥n de host virtual.

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

Cambie el nombre de dominio y la ruta de los certificados SSL por los suyos propios, luego pegue 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;
}
}


Guardar y cerrar.

A continuaci√≥n, cree el directorio de cach√© de Nginx y cambie la propiedad de ese directorio al usuario predeterminado ‘www-data’.

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

Despu√©s de eso, active Mattermost virtualhost, luego pruebe la configuraci√≥n de nginx y aseg√ļrese de que no haya ning√ļn error.

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

Ahora reinicie el servicio Nginx usando el comando systemctl a continuación.

systemctl restart nginx

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

Configurar Nginx

Paso 8 – Prueba

Abra su navegador web y escriba el nombre de dominio de su URL de instalación de Mattermost en la barra de direcciones. El mio es:

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

Ahora necesita crear una nueva primera cuenta de Mattermost, este ser√° el administrador de Mattermost.

Instalador web de Mattermost

Escriba los detalles de su nombre de usuario, correo electr√≥nico y contrase√Īa y haga clic en el bot√≥n ¬ęCrear cuenta¬Ľ.

Crea un nuevo primer equipo en Mattermost.

crear un equipo

Escriba el nombre de su primer equipo y haga clic en ‘Siguiente’.

Establecer el nombre del equipo

Y la URL del equipo ser√° el nombre del equipo, haga clic en ‘Finalizar’ para continuar.

URL del equipo

Y se unir√° autom√°ticamente al canal predeterminado ¬ęOff-Topic¬Ľ y ¬ęTown Square¬Ľ.

Panel de control m√°s importante

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *