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, uso compartido 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
- Un servidor que ejecuta CentOS 8.
- Se ha configurado una contraseña raíz 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 forma predeterminada, MariaDB no está protegida y la contraseña raíz 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 Mattermost y otorgue los permisos adecuados a Mattermost 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. Puede 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:
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
Configure Nginx como proxy inverso para Mattermost
Es una buena idea instalar y configurar Nginx como proxy inverso para mejorar el rendimiento y la 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
Busque 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 cortafuegos 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ía ver la página de creación de usuarios de Mattermost:
Proporcione su dirección de correo electrónico, nombre de usuario, contraseña y haga clic en Crear Cuenta botón. Debería ver la siguiente página:
A continuación, haga clic en Crear un nuevo equipo para crear tu equipo. Debería ver la siguiente página:
Proporcione el nombre de su equipo y haga clic en Siguiente botón. Debería ver la siguiente página:
Proporcione la URL de su equipo y haga clic en Finalizar para completar la instalación. Debería ver el panel de control de Mattermost en la siguiente página:
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.