¿Que es Mattermost?
Mattermost es un servicio de chat en línea de código abierto y autohospedable con intercambio de archivos, búsqueda e integraciones. Está diseñado como un chat interno para organizaciones y empresas, y se comercializa principalmente como una alternativa de código abierto para Slack y Microsoft Teams.
Actualizar el sistema
sudo apt update && apt upgrade -y
Instalar servidor de bases de datos PostgreSQL
sudo apt install postgresql postgresql-contrib
Nota: ahora puedes iniciar el servidor de bases de datos con:
/usr/lib/postgresql/10/bin/pg_ctl -D /var/lib/postgresql/10/main -l logfile start
Nota: Despues de la instalacion se ha creado un usuario en nuestro sistema GNU/Linux con nombre “postgres”
Iniciar sesion con usuario postgres
sudo --login --user postgres
Iniciar la terminal PostgreSQL
psql
Crear base de datos para Mattermost
postgres=# CREATE DATABASE mattermost;
Crear usuario para la base de datos de Mattermost
postgres=# CREATE USER mmuser WITH PASSWORD 'mmuser-password';
Garantizar todos los privilegios al usuario sobre la base de datos de Mattermost
postgres=# GRANT ALL PRIVILEGES ON DATABASE mattermost to mmuser;
Salir de la terminal de PostgreSQL
postgres=# \q
Salir de la sesion en GNU/Linux del usuario postgres
exit
Modificar el archivo pg_hba.conf para que se comunique con la base de datos
sudo nano /etc/postgresql/10/main/pg_hba.conf
Buscar la linea:
local all all peer
Y modificarla por:
local all all trust
Reiniciar el servicio PostgreSQL
sudo systemctl reload postgresql
Verificar si te puedes conectar a la base de datos de Mattermos en PosgreSQL
psql --dbname=mattermost --username=mmuser --password
Si todo salio bien entraremos a la terminal de PostgreSQL y solo debemos salir
\q
Instalar Servidor Mattermost 5.17.1
Descargar Mattermost
wget https://releases.mattermost.com/5.17.1/mattermost-5.17.1-linux-amd64.tar.gz
Descomprimir el archivo descargado
tar -xvzf mattermost-5.17.1-linux-amd64.tar.gz
Mover la carpeta extraida a /opt
sudo mv mattermost /opt
Crear el almacenamiento para los archivos de los usuario en Mattermost
sudo mkdir /opt/mattermost/data
Crear usuario mattermost y grupo de usuario mattermost
sudo useradd --system --user-group mattermost
Definir al usuario y gupo de usuario mattermost como dueño de la ruta /opt/mattermost
sudo chown -R mattermost:mattermost /opt/mattermost
Definir permisos de escritura al usuario y grupo de usuarios mattermost de la ruta /opt/mattermost
sudo chmod -R g+w /opt/mattermost
Configurar el archivo /opt/mattermost/config/config.json para la conexion a la base de datos
sudo nano /opt/mattermost/config/config.json
Nota: Buscar la linea
"postgres://mmuser:mmuser-password@localhost:5432/mattermost?sslmode=disable\u0026connect_timeout=10",
Y reemplazar por los valores correctos de tu base de datos. No olvides cambiar la linea -> “mysql” y cambiarla por “postgres”
Probar Mattermost ingresando al directorio
cd /opt/mattermost
Ejecutar el servidor Mattermost como usuario mattermost
sudo -u mattermost ./bin/mattermost
Si todo salio bien se debe ejecutar el servicio y mostrar en una linea el texto “Server is listening on :8065”
Cancelar la orden para continuar con ctrl+c
Configurar systemd para iniciar automáticamente el servicio de Mattermost
Ejecutar el servidor Mattermost como usuario mattermost
Crear el archivo .service correspondiente a Mattermost
sudo nano /lib/systemd/system/mattermost.service
Recomendamos utilizar la siguiente configuración aunque puedes elegir la que prefieras
[Unit] Description=Mattermost After=network.target After=postgresql.service Requires=postgresql.service [Service] Type=notify ExecStart=/opt/mattermost/bin/mattermost TimeoutStartSec=3600 Restart=always RestartSec=10 WorkingDirectory=/opt/mattermost User=mattermost Group=mattermost LimitNOFILE=49152 [Install] WantedBy=postgresql.service
Hacer que systemd lea el nuevo archivo
sudo systemctl daemon-reload
Iniciar el servicio
sudo systemctl start mattermost.service
Debemos leer un texto como el siguiente:
● mattermost.service - Mattermost Loaded: loaded (/lib/systemd/system/mattermost.service; disabled; ven Active: active (running) since Thu 2048-XX-XX 00:00:00 UTC; 0s ago
Asegurarse que Mattermost funciona mostrando un código HTML
curl http://localhost:8065
Configurar el servicio de Mattermost para que se inicie cuando encienda el servidor
sudo systemctl enable mattermost.service
Configurar el servidor Mattermost
Configurar el reverse proxy (en nuestro caso usamos NGINX) por lo que crearemos el archivo TUDOMINIO.conf
nano /etc/nginx/conf.d/TUDOMINIO.conf
y dentro colocaremos la siguiente configuración reemplazando TUDOMINIO con tu dominio asignado
Nota: Estas especificaciones contienen también la configuración del certificado de seguridad que se genero con Let’s Encrypt en lo que no profundizaremos ahora
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=mattermost_cache:10m max_size=3g inactive=120m use_temp_path=off; upstream mattermost_backend { server 127.0.0.1:8065; } server { listen 80; server_name TUDOMINIO www.TUDOMINIO; include snippets/letsencrypt.conf; return 301 https://TUDOMINIO$request_uri; } server { listen 443 ssl http2; server_name www.TUDOMINIO; ssl_certificate /etc/letsencrypt/live/TUDOMINIO/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/TUDOMINIO/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/TUDOMINIO/chain.pem; include snippets/ssl.conf; return 301 https://TUDOMINIO$request_uri; } server { listen 443 ssl http2; server_name TUDOMINIO; ssl_certificate /etc/letsencrypt/live/TUDOMINIO/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/TUDOMINIO/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/TUDOMINIO/chain.pem; include snippets/ssl.conf; access_log /var/log/nginx/TUDOMINIO-access.log; error_log /var/log/nginx/TUDOMINIO-error.log; 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; proxy_read_timeout 600s; proxy_pass http://mattermost_backend; } location / { proxy_http_version 1.1; 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_pass http://mattermost_backend; } }
Reiniciar nuestro servicio de NGINX
systemctl restart nginx
Ir a nuestro navegador a la dirección http:localhost:8065
Al entrar a Mattermost debemos crear el primer usuario y equipo; El primer usuario en el sistema cumplirá el rol de administrador y tendrá acceso a la consola del sistema
Dentro de las configuraciones podrás modificar lo que quieras y todas las cuestiones generales de Mattermost, te recomendamos leer la documentación oficial de Mattermost y también leer esta guía de instalación de Linuxize
Esperamos que esta documentación les sirva y Happy hacking