Mattermost Linux Server Tutorial en Español

Ya sea pequeña, mediana o una multinacional, una solución de colaboración es fundamental y por eso hablaremos de Mattermost Linux Server.

Esta solución es opensource y la implementaremos con un servidor Linux Centos 8.

Requerimientos para Mattermost Linux Server

  • Servidor Centos 8 minimal
  • Acceso a la cuenta root
  • 1Gb RAM (Mas es mejor)
  • 20Gb disco (Mas es mejor)
  • Conectividad a internet
  • Opcional: Un dominio internet para usarse con el servidor

Todas las tareas las haremos logeados con la cuenta root, por ssh de forma remota o frente al servidor.

Es necesario SELinux con Mattermost?

Algun@s dirán que puede ser un problema de seguridad, yo no lo creo, es mas, pienso que dará mas problemas.

Por lo cual sugiero deshabilitarlo.

Aquí debajo te muestro en vídeo como hacerlo:

Como deshabilitar o activar SELinux en Centos 8

Actualizamos nuestro futuro Mattermost server

En consola ejecutamos el siguiente comando para actualizar nuestro Centos Linux.

dnf update

En caso de haberlas, las aceptamos e instalamos.

Ahora que vamos a comenzar, prefieres verlo en vídeo, aquí debajo lo tienes:

Instalamos dependencias

Nuestro servidor Centos basicamente necesitara tener un servidor de bases de datos y un servidor web.

Para estas tareas usaremos MariaDB y Nginx.

dnf install mariadb-server nginx

Instalamos y configuramos MariaDB para Mattermost

Activamos el servicio de MariaDB para que se ejecute al hacer boot nuestro Centos Server.

systemctl enable mariadb

Iniciamos el servicio de MariaDB.

systemctl start mariadb
systemctl status mariadb

Aseguramos la configuracion de nuestro MariaDB.

El siguiente comando al ejecutarlo nos hara una serie de preguntas.

Primero cambiaremos la contraseña de la cuenta root de MariaDB (no es la de linux).

Y después presionaremos Enter en todas las preguntas para aceptar los defaults.

/usr/bin/mysql_secure_installation

Enter current password for root (enter for none):
Set root password? [Y/n]
New password:
Re-enter new password:

Remove anonymous users? [Y/n]

Disallow root login remotely? [Y/n]

Remove test database and access to it? [Y/n]

Reload privilege tables now? [Y/n]

Creamos db, usuario y contraseña para Mattermost Server

Ya nuestro servidor de bases de datos esta configurado y ejecutandose.

Siguiente paso, crear una base de datos, un usuario y su contraseña para nuestra instalación.

mysql -u root -p
CREATE DATABASE mdb;
GRANT ALL PRIVILEGES on mdb.* TO musr@localhost IDENTIFIED BY 'contraseña';
FLUSH PRIVILEGES;
exit;

Datos a tener en cuenta:

  • mdb: nombre de la base de datos (puedes cambiarlo)
  • musr: usuario para conectarnos a la base de datos
  • contraseña: contraseña del usuario (create una verdaderamente fuerte)

Descargamos e instalamos Mattermost Linux Server

Antes de comenzar a descargar e instalar, debemos primero crear un usuario.

Este usuario tendrá su propio grupo y home en /opt

Dudas, lee mas sobre este comando aquí.

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

A considerar:

  • mamost: usuario (puedes cambiarlo)
  • /opt/mattermost: Directorio donde instalaremos Mattermost Linux Server

Ahora nos moveremos al directorio opt para descargar el archivo a instalar.

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

Descomprimimos el archivo.

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

Creamos un directorio dentro del árbol creado.

mkdir mattermost/data

Cambiamos atributos de usuario y grupo.

Ademas, damos permisos de escritura al grupo de forma recursiva.

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

Configuramos conexión db de Mattermost Server

Debemos configurar la db, usuario y contraseña para nuestro servidor Mattermost.

A partir de este momento editare ficheros con el editor vi pero si no sabes usarlo, cámbialo a nano.

En la linea DataSource cambiaras el usuario, contraseña y base de datos.

En este caso son:

  • musr: usuario
  • contraseña: contraseña
  • mdb: base de datos

No modificamos nada mas y guardamos cambios.

vi mattermost/config/config.json
"SqlSettings": {
"DriverName": "mysql",
"DataSource": "musr:contraseña@tcp(localhost:3306)/mdb?charset=utf8mb4,utf8\u0026readTimeout=30s\u0026writeTimeout=30s",
"DataSourceReplicas": [],
"DataSourceSearchReplicas": [],
"MaxIdleConns": 20,
"ConnMaxLifetimeMilliseconds": 3600000,
"MaxOpenConns": 300,
"Trace": false,
"AtRestEncryptKey": "",
"QueryTimeout": 30
},

Probamos inicio de nuestro Server Mattermost

Iniciamos el server mattermost por primera vez de forma manual.

cd mattermost/
sudo -u mamost bin/mattermost

Esto nos permitirá mirar en consola si hay algún error.

Esperamos unos segundos y después lo cancelamos con las teclas Ctrl c.

Configuramos un servicio systemd Mattermost

Para automatizar el inicio, reinicio y apagado de nuestro Mattermost Linux Server, crearemos un fichero systemd.service.

vi /etc/systemd/system/mattermost.service
[Unit]
Description=Mattermost
After=syslog.target network.target mariadb.service

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

[Install]
WantedBy=multi-user.target

Ten en cuenta las lineas:

  • WorkingDirectory: Directorio de instalación de Mattermost
  • User: Usuario de la aplicación.
  • ExecStart: Directorio del binario principal.

Reiniciamos el demonio systemd para que tome el nuevo servicio.

systemctl daemon-reload

Activamos y ejecutamos el nuevo servicio.

systemctl enable mattermost
systemctl start mattermost

Verificamos su ejecución.

systemctl status mattermost

Verificamos en que puerto escucha y que proceso.

netstat -antup | grep 8065
ps -ax|grep mattermost

Configuramos Nginx como proxy reverso

Activamos, ejecutamos y verificamos el servicio.

systemctl enable nginx
systemctl start nginx
systemctl status nginx

Creamos un archivo de configuracion para nuestro Mattermost Server.

vi /etc/nginx/conf.d/mattermost.conf
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.drivemeca.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;
}
}

A tener en cuenta:

  • server_name: Sera el dominio por el que conectaremos a nuestro servidor Mattermost.

Verificamos que la sintaxis de nginx este correcta.

nginx -t

Si no hay errores, reiniciamos nuestro servidor Nginx.

systemctl restart nginx

Abrimos puerto y configuramos dominio local

Ya casi terminando, abrimos el puerto 80/tcp (http) en las políticas de firewall.

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

Seguidamente, como realmente no tengo el dominio mattermost.drivemeca.com configurado.

Hare unos ajustes en el fichero hosts del servidor y de los clientes que quieran conectarse.

Si en tu caso, usas un dominio internet ya configurado, no tienes que hacer lo siguiente.

vi /etc/hosts
192.168.5.103 mattermost.drivemeca.com mattermost

La ip mostrada arriba es la ip privada usada por mi servidor Centos en mi LAN.

Creación de cuenta y grupo en Mattermost

Hora de abrir un navegador y apuntar a http://IP-o-Dominio-mattermost.

La pagina web que nos recibe nos pedirá los siguientes datos para nuestra cuenta de administrador web.

  • email: Debe ser un email real
  • username: Nombre de la cuenta que estamos creando
  • password: Contraseña de mínimo 10 caracteres con minúsculas, mayúsculas y caracteres especiales

Al terminar de dar estos datos damos click al botón Create Account.

Ya creada la cuenta, debemos crear un grupo de colaboración.

Damos click al link Create a team

Escribimos un nombre para el grupo en la pagina que nos aparece.

Damos click al botón Next.

Y por ultimo, creamos un URL para nuestro nuevo grupo.

Damos click al botón Finish.

Reconocimiento del dashboard de Mattermost Linux Server

El dashboard o pagina principal del grupo cuenta con:

  • Barra superior de anuncios.
  • Columna izquierda con perfil, menu principal y canales privados y públicos.
  • Columna derecha central donde veremos el contenido de lo seleccionado en la columna izquierda.

Configuración de dashboard web Mattermost

Podemos hacer modificaciones a la interfaz web de mattermost.

Estos cambios los haremos dando click al menu principal (icono pequeño de rayas horizontales a la derecha de nuestro usuario)

Como cambiar el idioma de Mattermost

Ya en el menu principal daremos click a la opción Account Settings.

Seguidamente, en la ventana que nos aparece daremos click a Display.

Al fondo de esta ventana veremos la opción Language, damos click a esta caja y elegimos nuestro idioma Español.

Guardamos cambios y listo.

Ya tenemos nuestro Mattermost Linux Server en español.

Que bien, ya puedes comenzar a colaborar en equipo en ese proyecto que tenias pensado.

Usando opensource, por supuesto.

Satisfech@ con el articulo, hazme una donación, no importa la cantidad, la intención es lo que vale, dale click a este botón

Comparte este articulo opensource en tus redes sociales (compartir es sexy) por medio de los botones de redes sociales para que otros lo conozcan y apoyes mi blog.

Ademas, no olvides escribirme en los comentarios aquí debajo y pasa la voz compartiendo el tweet.