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:
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:
Haz clic en Crear un equipo. Obtendrás la siguiente pantalla:
Proporciona el nombre de tu equipo y haz clic en el botón Siguiente. Obtendrás la siguiente pantalla:
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:
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.