Cómo instalar Mattermost en Alma Linux 8

Mattermost es una plataforma gratuita, de código abierto y segura para la comunicación, la colaboración y la orquestación del flujo de trabajo entre herramientas y equipos. Es un servicio de chat autoalojado diseñado para que las organizaciones y empresas implementen un servicio de chat interno. Ofrece varias funciones útiles, como la mensajería individual, el historial de búsqueda ilimitado, el intercambio de archivos, la autenticación de dos factores, las notificaciones y mucho más. Si buscas una solución alternativa a Slack, Mattermost es la mejor opción para ti.

En este tutorial, te mostraremos cómo instalar Mattermost con Nginx en Alma Linux 8.

Requisitos previos

  • Un servidor con Alma Linux 8.
  • Un nombre de dominio válido apuntado con la IP de tu servidor.
  • Una contraseña de root configurada en el servidor.

Instalar el servidor MySQL

Mattermost utiliza MySQL como base de datos. Así que MySQL debe estar instalado en tu servidor. Puedes instalarlo ejecutando el siguiente comando:

dnf install mysql-server -y

Una vez instalado el servidor MySQL, inicia y habilita el servicio MySQL con el siguiente comando:

systemctl start mysqld
systemctl enable mysqld

Ahora, puedes asegurar la instalación de MySQL ejecutando el siguiente script:

mysql_secure_installation

Responde a todas las preguntas que se muestran a continuación para establecer la contraseña de root de MySQL y asegurar la instalación:

Press y|Y for Yes, any other key for No: N
Please set the password for root here.
New password: 
Re-enter new password: 
Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y

Crear una base de datos para Mattermost

A continuación, tendrás que crear una base de datos y un usuario para Mattermost. En primer lugar, inicia sesión en MySQL con el siguiente comando:

mysql -u root -p

Una vez que hayas iniciado la sesión, crea una base de datos y un usuario con el siguiente comando:

mysql> CREATE DATABASE matterdb;
mysql> CREATE USER 'matteruser'@'localhost' IDENTIFIED BY 'password';

A continuación, concede todos los privilegios a la base de datos de Mattermost:

mysql> GRANT ALL PRIVILEGES ON matterdb.* TO matteruser@localhost;

A continuación, vacía los privilegios y sal del MySQL con el siguiente comando:

mysql> FLUSH PRIVILEGES;
mysql> EXIT;

Una vez que hayas terminado, puedes pasar al siguiente paso.

Instalar Mattermost en Alma Linux 8

En primer lugar, crea un usuario dedicado para ejecutar Mattermost con el siguiente comando:

useradd --system --user-group mattermost

A continuación, descarga la última versión de Mattermost utilizando el siguiente comando:

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

Una vez completada la descarga, extrae el archivo descargado con el siguiente comando:

tar -xf mattermost-6.0.2-linux-amd64.tar.gz

A continuación, mueve el directorio extraído al directorio /opt:

mv mattermost /opt

A continuación, crea un directorio de datos para Mattermost y cambia la propiedad y el permiso del mismo:

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

A continuación, edita el archivo de configuración de Mattermost:

nano /opt/mattermost/config/config.json

Define la URL de tu sitio web Mattermost como se muestra a continuación:

    "SiteURL": "http://mattermost.example.com",

A continuación, busca las siguientes líneas:

    "DriverName": "postgres",
    "DataSource": "postgres://mmuser:mostest@localhost/mattermost_test?sslmode=disable\u0026connect_timeout=10",

Y, sustitúyelas por las siguientes líneas:

    "DriverName": "mysql",
    "DataSource": "matteruser:password@tcp(localhost:3306)/matterdb?charset=utf8mb4,utf8\u0026readTimeout=30s\u0026writeTimeout=30s",

Guarda y cierra el archivo cuando hayas terminado.

Crear un archivo de servicio Systemd para Mattermost

A continuación, tendrás que crear un archivo de servicio systemd para gestionar el servicio Mattermost. Puedes crearlo ejecutando el siguiente comando:

nano /etc/systemd/system/mattermost.service

Añade las siguientes líneas:

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

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

[Install]
WantedBy=multi-user.target

Guarda y cierra el archivo y luego recarga el demonio systemd con el siguiente comando:

systemctl daemon-reload

A continuación, inicia el servicio Mattermost y habilítalo para que se inicie al reiniciar el sistema:

systemctl start mattermost
systemctl enable mattermost

Ahora puedes comprobar el estado del servicio Mattermost con el siguiente comando:

systemctl status mattermost

Obtendrás la siguiente salida:

? mattermost.service - Mattermost
   Loaded: loaded (/etc/systemd/system/mattermost.service; disabled; vendor preset: disabled)
   Active: active (running) since Sat 2022-01-15 14:12:29 UTC; 7s ago
 Main PID: 15201 (mattermost)
    Tasks: 32 (limit: 11411)
   Memory: 265.2M
   CGroup: /system.slice/mattermost.service
           ??15201 /opt/mattermost/bin/mattermost
           ??15298 plugins/com.mattermost.plugin-channel-export/server/dist/plugin-linux-amd64
           ??15299 plugins/com.mattermost.nps/server/dist/plugin-linux-amd64
           ??15308 plugins/playbooks/server/dist/plugin-linux-amd64
           ??15313 plugins/focalboard/server/dist/plugin-linux-amd64

Jan 15 14:12:26 almalinux8 mattermost[15201]: {"timestamp":"2022-01-15 14:12:26.344 Z","level":"info","msg":"Sent notification of next survey>
Jan 15 14:12:26 almalinux8 mattermost[15201]: {"timestamp":"2022-01-15 14:12:26.402 Z","level":"info","msg":"Post.Message has size restrictio>
Jan 15 14:12:26 almalinux8 mattermost[15201]: {"timestamp":"2022-01-15 14:12:26.499 Z","level":"info","msg":"info [2022-01-15 14:12:26.497 Z]>
Jan 15 14:12:26 almalinux8 mattermost[15201]: {"timestamp":"2022-01-15 14:12:26.537 Z","level":"info","msg":"\n    -- collation of mattermost>
Jan 15 14:12:28 almalinux8 mattermost[15201]: {"timestamp":"2022-01-15 14:12:28.297 Z","level":"info","msg":"debug [2022-01-15 14:12:28.295 Z>
Jan 15 14:12:28 almalinux8 mattermost[15201]: {"timestamp":"2022-01-15 14:12:28.804 Z","level":"info","msg":"info [2022-01-15 14:12:28.803 Z]>
Jan 15 14:12:29 almalinux8 systemd[1]: Started Mattermost.
Jan 15 14:12:29 almalinux8 mattermost[15201]: {"timestamp":"2022-01-15 14:12:29.149 Z","level":"info","msg":"Starting Server...","caller":"ap>
Jan 15 14:12:29 almalinux8 mattermost[15201]: {"timestamp":"2022-01-15 14:12:29.150 Z","level":"info","msg":"Server is listening on [::]:8065>
Jan 15 14:12:29 almalinux8 mattermost[15201]: {"timestamp":"2022-01-15 14:12:29.150 Z","level":"info","msg":"Sending systemd READY notificati>

En este momento, Mattermost está iniciado y funcionando en el puerto 8065. Puedes comprobarlo con el siguiente comando:

ss -antpl | grep 8065

Obtendrás la siguiente salida:

LISTEN 0      128                *:8065             *:*    users:(("mattermost",pid=15201,fd=35))                   

Una vez que hayas terminado, puedes pasar al siguiente paso.

Configurar Nginx como proxy inverso para Mattermost

Se recomienda instalar y configurar Nginx como proxy inverso para Mattermost. Para ello, tendrás que instalar el servidor Nginx en tu servidor. Puedes instalarlo ejecutando el siguiente comando:

dnf install nginx -y

Una vez instalado el Nginx, crea un archivo de configuración del host virtual Nginx con el siguiente comando:

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

Añade las siguientes líneas:

 server {
        listen       80;
        server_name  mattermost.example.com;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
	proxy_pass http://localhost:8065/;
            index  index.html index.htm;
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

Guarda y cierra el archivo y luego verifica que el Nginx no tenga ningún error de configuración:

nginx -t

Si todo está bien, obtendrás la siguiente salida:

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

Ahora, inicia y habilita el servicio Nginx para que se inicie al reiniciar el sistema:

systemctl start nginx
systemctl enable nginx

Puedes comprobar el estado de Nginx con el siguiente comando:

systemctl status nginx

Obtendrás la siguiente salida:

? nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
   Active: active (running) since Sat 2022-01-15 14:14:05 UTC; 7s ago
  Process: 15356 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
  Process: 15354 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
  Process: 15351 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
 Main PID: 15358 (nginx)
    Tasks: 2 (limit: 11411)
   Memory: 3.8M
   CGroup: /system.slice/nginx.service
           ??15358 nginx: master process /usr/sbin/nginx
           ??15359 nginx: worker process

Jan 15 14:14:05 almalinux8 systemd[1]: nginx.service: Succeeded.
Jan 15 14:14:05 almalinux8 systemd[1]: Stopped The nginx HTTP and reverse proxy server.
Jan 15 14:14:05 almalinux8 systemd[1]: Starting The nginx HTTP and reverse proxy server...
Jan 15 14:14:05 almalinux8 nginx[15354]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Jan 15 14:14:05 almalinux8 nginx[15354]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Jan 15 14:14:05 almalinux8 systemd[1]: nginx.service: Failed to parse PID from file /run/nginx.pid: Invalid argument
Jan 15 14:14:05 almalinux8 systemd[1]: Started The nginx HTTP and reverse proxy server.

En este punto, Nginx está instalado y configurado para servir a Mattermost. Ahora puedes pasar al siguiente paso.

Configurar el cortafuegos

A continuación, tendrás que permitir el puerto 80 a través del cortafuegos. Puedes permitirlo ejecutando el siguiente comando:

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

A continuación, recarga el cortafuegos para aplicar los cambios:

firewall-cmd --reload

Una vez que hayas terminado, puedes pasar al siguiente paso.

Accede a la interfaz web de Mattermost

Ahora, abre tu navegador web y accede a la interfaz web de Mattermost utilizando la URL http://mattermost.example.com. Serás redirigido a la siguiente pantalla:

Formulario de registro de Mattermost

Proporciona tu dirección de correo electrónico, el nombre de usuario de administrador, la contraseña y haz clic en el botón Crear cuenta. Obtendrás la siguiente pantalla:

Únete al equipo

Haz clic en Crear un equipo. Obtendrás la siguiente pantalla:

Establecer el nombre del equipo

Proporciona el nombre de tu equipo y haz clic en el botón Siguiente. Obtendrás la siguiente pantalla:

Configurar la url del equipo en mattermost

Proporciona la URL de tu equipo Mattermost y haz clic en el botón Finalizar. Obtendrás el panel de control de Mattermost en la siguiente pantalla:

Panel de control de Mattermost

Conclusión

En la guía anterior, has aprendido a instalar el servicio de chat Mattermost con Nginx en Alma Linux 8. Ahora puedes implementar Mattermost en tu organización y empezar a utilizarlo como chat interno. No dudes en preguntarme si tienes alguna duda.

También te podría gustar...