Cómo instalar y configurar Mattermost en CentOS 8

Instalador de Mattermost

Mattermost es un sistema de mensajer√≠a de colaboraci√≥n en equipo empresarial gratuito, de c√≥digo abierto y autohospedado. Est√° escrito en Golang y React, y utiliza MySQL/MariaDB/PostgreSQL como base de datos. Ofrece clientes de escritorio para Windows, macOS y Linux y aplicaciones m√≥viles para iOS y Android. Es muy similar a Slack y re√ļne toda la comunicaci√≥n de su equipo en un solo lugar. Ofrece funciones muy √ļtiles que incluyen mensajer√≠a individual y grupal, intercambio de archivos, videollamadas, emojis personalizados, webhooks y comandos, y muchas m√°s.

En este tutorial, le mostraremos cómo instalar Mattermost en CentOS 8.

requisitos previos

  • Un servidor que ejecuta CentOS 8.
  • Una contrase√Īa de root est√° configurada en su servidor.

Instalar y configurar la base de datos MariaDB

Mattermost utiliza MariaDB/MySQL como base de datos. Entonces MariaDB debe estar instalado en su servidor. Si no est√° instalado, puede instalarlo con el siguiente comando:

dnf install mariadb-server -y

Una vez instalado, inicie el servicio MariaDB y habilítelo para que se inicie después de reiniciar el sistema con el siguiente comando:

systemctl start mariadb
systemctl enable mariadb

De manera predeterminada, MariaDB no est√° protegida y la contrase√Īa de root no est√° configurada en CentOS 8. Por lo tanto, puede configurarla con el siguiente comando:

mysql_secure_installation

Responda todas las preguntas como se muestra a continuación:

Enter current password for root (enter for none):
Set root password? [Y/n] Y
New password:
Re-enter new password:
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Una vez que haya terminado, inicie sesión en MariaDB con el usuario root:

mysql -u root -p

Proporcione su contrase√Īa ra√≠z y luego cree una base de datos y un usuario para Mattermost con el siguiente comando:

MariaDB [(none)]> CREATE DATABASE mattermostdb;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON mattermostdb.* TO [email protected] IDENTIFIED BY 'password';

A continuación, elimine los privilegios y salga del shell de MariaDB con el siguiente comando:

MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;

Una vez que haya terminado, puede continuar con el siguiente paso.

Instalar Mattermost

Primero, deber√° crear un usuario separado para ejecutar Mattermost. Puedes crearlo con el siguiente comando:

useradd -d /opt/mattermost -U -M mattermost

A continuaci√≥n, descargue la √ļltima versi√≥n de Mattermost con el siguiente comando:

wget https://releases.mattermost.com/5.21.0/mattermost-5.21.0-linux-amd64.tar.gz

Una vez que se complete la descarga, extraiga el archivo descargado con el siguiente comando:

tar -xvzf mattermost-5.21.0-linux-amd64.tar.gz

A continuación, mueva el directorio extraído a /opt con el siguiente comando:

mv mattermost /opt/

A continuación, cree un directorio de datos dentro de la materia y otorgue los permisos adecuados a la materia con el siguiente comando:

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

Una vez que haya terminado, puede continuar con el siguiente paso.

Configurar Mattermost

A continuación, deberá definir su base de datos en Mattermost. Puedes hacerlo editando el archivo config.json:

nano /opt/mattermost/config/config.json

Cambie las siguientes l√≠neas seg√ļn la configuraci√≥n de su base de datos:

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

Guarde y cierre el archivo cuando haya terminado. Luego, cambie el directorio a /opt/mattermost e inicie el servidor de Mattermost con el siguiente comando:

cd /opt/mattermost
sudo -u mattermost bin/mattermost

Una vez que el servidor se haya iniciado correctamente, debería obtener el siguiente resultado:

{"level":"info","ts":1585379681.8383002,"caller":"utils/i18n.go:83","msg":"Loaded system translations","for locale":"en","from locale":"/opt/mattermost/i18n/en.json"}
{"level":"info","ts":1585379681.83874,"caller":"app/server_app_adapters.go:58","msg":"Server is initializing..."}
{"level":"info","ts":1585379681.8470004,"caller":"sqlstore/supplier.go:221","msg":"Pinging SQL","database":"master"}
{"level":"info","ts":1585379684.7858346,"caller":"sqlstore/upgrade.go:112","msg":"The database schema version has been set","version":"5.21.0"}
{"level":"error","ts":1585379690.8182986,"caller":"app/server_app_adapters.go:129","msg":"SiteURL must be set. Some features will operate incorrectly if the SiteURL is not set. See documentation for details: http://about.mattermost.com/default-site-url"}
{"level":"info","ts":1585379690.821083,"caller":"app/license.go:39","msg":"License key from https://mattermost.com required to unlock enterprise features."}

Luego, presione CTRL + C para detener el servidor de Mattermost.

Crear un archivo de servicio de Systemd para Mattermost

A continuación, deberá crear un archivo de servicio systemd para administrar el servicio Mattermost. Puedes crearlo con el siguiente comando:

nano /etc/systemd/system/mattermost.service

Agregue las siguientes líneas:

[Unit]
Description=Mattermost
After=syslog.target network.target mariadb.service

[Service]
Type=notify
WorkingDirectory=/opt/mattermost
User=mattermost
ExecStart=/opt/mattermost/bin/mattermost
PIDFile=/var/run/mattermost.pid
TimeoutStartSec=3600
LimitNOFILE=49152

[Install]
WantedBy=multi-user.target

Guarde y cierre el archivo cuando haya terminado. Luego, vuelva a cargar el demonio systemd con el siguiente comando:

systemctl daemon-reload

A continuación, inicie el servicio Mattermost y habilítelo para que se inicie después de reiniciar el sistema con el siguiente comando: Publicidad

systemctl start mattermost
systemctl enable mattermost

También puede verificar el estado del servicio de Mattermost con el siguiente comando:

systemctl status mattermost

Deberías obtener el siguiente resultado:

? mattermost.service - Mattermost
   Loaded: loaded (/etc/systemd/system/mattermost.service; disabled; vendor preset: disabled)
   Active: active (running) since Sat 2020-03-28 03:17:07 EDT; 14s ago
 Main PID: 15204 (mattermost)
    Tasks: 21 (limit: 25028)
   Memory: 120.8M
   CGroup: /system.slice/mattermost.service
           ??15204 /opt/mattermost/bin/mattermost
           ??15214 plugins/com.mattermost.nps/server/dist/plugin-linux-amd64

Mar 28 03:17:07 centos8 mattermost[15204]: {"level":"info","ts":1585379827.1131086,"caller":"app/server.go:247","msg":"Printing current workin>
Mar 28 03:17:07 centos8 mattermost[15204]: {"level":"info","ts":1585379827.1131282,"caller":"app/server.go:248","msg":"Loaded config","source">

En este punto, el servidor de Mattermost se est√° ejecutando y escuchando en el puerto 8065. Puede verificarlo con el siguiente comando:

netstat -antup | grep 8065

Deberías obtener el siguiente resultado:

tcp6       0      0 :::8065                 :::*                    LISTEN      15204/mattermost 

Configurar Nginx como proxy inverso para Mattermost

Es una buena idea instalar y configurar Nginx como proxy inverso para un mejor rendimiento y seguridad.

Primero, instale el servidor web Nginx con el siguiente comando:

dnf install nginx -y

Después de instalar el servidor web Nginx, inicie el servicio Nginx y habilítelo para que se inicie después de reiniciar el sistema con el siguiente comando:

systemctl start nginx
systemctl enable nginx

A continuación, cree un nuevo archivo de host virtual Nginx para Mattermost con el siguiente comando:

nano /etc/nginx/conf.d/mattermost.conf

Agregue las siguientes líneas:

upstream mattermost {
   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    mattermost.example.com;

   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://mattermost;
   }
   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://mattermost;
   }
}

Guarde y cierre el archivo cuando haya terminado. Luego, verifique el Nginx para ver si hay alg√ļn error de sintaxis con el siguiente comando:

nginx -t

Deberías obtener el siguiente resultado:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Finalmente, reinicie el servicio Nginx para aplicar los cambios:

systemctl restart nginx

En este punto, el servidor web Nginx est√° configurado para servir a Mattermost. Ahora puede continuar con el siguiente paso.

Configurar SELinux y Firewalld

De manera predeterminada, SELinux est√° habilitado en CentOS 8. Se recomienda deshabilitarlo para Mattermost. Puede desactivarlo editando el archivo /etc/selinux/config:

nano /etc/selinux/config

Encuentra la siguiente línea:

SELINUX=enforcing

Y, reemplácelo con la siguiente línea:

SELINUX=permissive

Guarde y cierre el archivo cuando haya terminado. Luego, reinicie su sistema para aplicar los cambios.

A continuación, deberá permitir el puerto 80 a través de firewalld. Puedes permitirlo con el siguiente comando:

firewall-cmd --add-service=http --permanent

A continuación, vuelva a cargar el firewalld para aplicar los cambios:

firewall-cmd --reload

Acceder a la interfaz web de Mattermost

Ahora, abra su navegador web y escriba la URL http://mattermost.example.com. Deberías ver la página de creación de usuarios de Mattermost:

Instalador de Mattermost

Proporcione su direcci√≥n de correo electr√≥nico, nombre de usuario, contrase√Īa y haga clic en el Crear Cuenta bot√≥n. Deber√≠as ver la siguiente p√°gina:

crear un equipo

A continuación, haga clic en el Crear un nuevo equipo para crear tu equipo. Deberías ver la siguiente página:

Introduce el nombre del equipo

Proporcione el nombre de su equipo y haga clic en el próximo botón. Deberías ver la siguiente página:

URL del equipo

Proporcione la URL de su equipo y haga clic en el Finalizar para completar la instalación. Debería ver el panel de control de Mattermost en la siguiente página:

Panel de control m√°s importante

Conclusión

¡Felicidades! ha instalado y configurado con éxito Mattermost en el servidor CentOS 8. Ahora puede crear un equipo para su organización y comenzar a colaborar con su equipo.

Deja una respuesta

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