Cómo instalar Mattermost en Debian 11
Mattermost es una plataforma de colaboración y mensajería gratuita y de código abierto creada pensando en la seguridad. Es una alternativa a Discord o Slack y ofrece muchas funciones útiles, entre ellas, mensajería individual, historial de búsqueda ilimitado y capacidad de compartir archivos, autorización de dos factores y notificaciones. Es un servicio de chat online autoalojado escrito en Golang y React. Está especialmente diseñado para organizaciones y empresas y permite a los equipos comunicarse de forma segura desde cualquier lugar.
En este tutorial, te mostraremos cómo instalar el servidor de Mattermost Chat en Debian 11.
Requisitos previos
- Un servidor con Debian 11.
- Un nombre de dominio válido apuntado con la IP de tu servidor.
- Una contraseña de root configurada en el servidor.
Instalar y configurar el servidor de base de datos MariaDB
Mattermost utiliza MySQL o MariaDB como base de datos. Así que tendrás que instalar el servidor MariaDB en tu servidor. Puedes instalarlo con el siguiente comando:
apt-get install mariadb-server -y
Una vez instalado MariaDB, inicia el servicio MariaDB y habilítalo para que se inicie al reiniciar el sistema:
systemctl start mariadb
systemctl enable mariadb
A continuación, conéctate al shell de MariaDB con el siguiente comando:
mysql
Una vez conectado, crea una base de datos y un usuario con el siguiente comando:
MariaDB [(none)]> create database mattermost;
MariaDB [(none)]> create user mattermost@localhost identified by 'password';
A continuación, concede todos los privilegios a la base de datos Mattermost con el siguiente comando:
MariaDB [(none)]> grant all privileges on mattermost.* to mattermost@localhost;
A continuación, vacía los privilegios y sal del intérprete de comandos MariaDB con el siguiente comando:
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit;
Una vez que hayas terminado, puedes pasar al siguiente paso.
Instalar Mattermost
En primer lugar, crea un usuario dedicado para Mattermost con el siguiente comando:
useradd --system --user-group mattermost
A continuación, descarga la última versión de Mattermost con 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 -xvzf mattermost-6.0.2-linux-amd64.tar.gz
A continuación, mueve el directorio extraído a /opt con el siguiente comando:
mv mattermost /opt
A continuación, crea un directorio de datos para mattermost con el siguiente comando:
mkdir /opt/mattermost/data
A continuación, cambia la propiedad del directorio mattermost con el siguiente comando
chown -R mattermost:mattermost /opt/mattermost
chmod -R g+w /opt/mattermost
A continuación, edita el archivo config.json con el siguiente comando
nano /opt/mattermost/config/config.json
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 según la configuración de tu base de datos:
"DriverName": "mysql", "DataSource": "mattermost:password@tcp(127.0.0.1:3306)/mattermost?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 Mattermost. Puedes crearlo con 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 vuelve a cargar el demonio systemd para aplicar los cambios:
systemctl daemon-reload
A continuación, inicia el Mattermost y habilítalo para que se inicie al reiniciar el sistema:
systemctl start mattermost
systemctl enable mattermost
A continuación, verifica el estado de 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: enabled)
Active: active (running) since Fri 2021-11-12 13:56:25 UTC; 4s ago
Main PID: 2888 (mattermost)
Tasks: 31 (limit: 4679)
Memory: 273.3M
CPU: 12.191s
CGroup: /system.slice/mattermost.service
??2888 /opt/mattermost/bin/mattermost
??2915 plugins/com.mattermost.plugin-channel-export/server/dist/plugin-linux-amd64
??2925 plugins/playbooks/server/dist/plugin-linux-amd64
??2931 plugins/focalboard/server/dist/plugin-linux-amd64
Nov 12 13:56:24 debian11 mattermost[2888]: {"timestamp":"2021-11-12 13:56:24.681 Z","level":"info","msg":"Scheduling next survey for Dec 3, 2>
Nov 12 13:56:25 debian11 mattermost[2888]: {"timestamp":"2021-11-12 13:56:25.064 Z","level":"info","msg":"Post.Message has size restrictions">
Nov 12 13:56:25 debian11 mattermost[2888]: {"timestamp":"2021-11-12 13:56:25.084 Z","level":"info","msg":"info [2021-11-12 13:56:25.083 Z] co>
Nov 12 13:56:25 debian11 mattermost[2888]: {"timestamp":"2021-11-12 13:56:25.131 Z","level":"info","msg":"\n -- collation of mattermost's >
Nov 12 13:56:25 debian11 mattermost[2888]: {"timestamp":"2021-11-12 13:56:25.491 Z","level":"info","msg":"debug [2021-11-12 13:56:25.488 Z] i>
Nov 12 13:56:25 debian11 mattermost[2888]: {"timestamp":"2021-11-12 13:56:25.777 Z","level":"info","msg":"info [2021-11-12 13:56:25.777 Z] Se>
Nov 12 13:56:25 debian11 mattermost[2888]: {"timestamp":"2021-11-12 13:56:25.963 Z","level":"info","msg":"Starting Server...","caller":"app/s>
Nov 12 13:56:25 debian11 mattermost[2888]: {"timestamp":"2021-11-12 13:56:25.964 Z","level":"info","msg":"Server is listening on [::]:8065",">
Nov 12 13:56:25 debian11 mattermost[2888]: {"timestamp":"2021-11-12 13:56:25.964 Z","level":"info","msg":"Sending systemd READY notification.>
Nov 12 13:56:25 debian11 systemd[1]: Started Mattermost.
Configurar Nginx como proxy inverso para Mattermost
Por defecto, Mattermost escucha en el puerto 8065. Así que es una buena idea instalar y configurar el Nginx como proxy inverso para acceder a Mattermost en el puerto 80. Primero, instala el Nginx con el siguiente comando:
apt-get 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:
upstream mattermost {
server localhost: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;
}
}
Guarda y cierra el archivo y luego verifica la configuración de Nginx para ver si hay algún error de sintaxis con el siguiente comando:
nginx -t
Deberías ver la siguiente salida:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
A continuación, inicia el servicio Nginx para aplicar los cambios:
systemctl start nginx
También puedes verificar el estado de Nginx con el siguiente comando:
systemctl status nginx
Deberías obtener la siguiente salida:
? nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2021-11-12 13:57:02 UTC; 1min 12s ago
Docs: man:nginx(8)
Process: 3384 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Process: 3392 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Main PID: 3602 (nginx)
Tasks: 3 (limit: 4679)
Memory: 6.6M
CPU: 55ms
CGroup: /system.slice/nginx.service
??3602 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
??3604 nginx: worker process
??3605 nginx: worker process
Nov 12 13:57:01 debian11 systemd[1]: Starting A high performance web server and a reverse proxy server...
Nov 12 13:57:02 debian11 systemd[1]: nginx.service: Failed to parse PID from file /run/nginx.pid: Invalid argument
Nov 12 13:57:02 debian11 systemd[1]: Started A high performance web server and a reverse proxy server.
En este punto, Nginx está instalado y configurado como proxy inverso para Mattermost. Ahora 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 página:

Proporciona tu dirección de correo electrónico de administrador, tu nombre de usuario y tu contraseña, y haz clic en el botón Crear cuenta. Deberías ver la siguiente página:

Ahora, haz clic en el botón Ir a la consola del sistema. Serás redirigido al panel de control de Mattermost como se muestra a continuación:

Conclusión
Enhorabuena! has instalado con éxito Mattermost con Nginx como proxy inverso en Debian 11. Ahora puedes implementar Mattermost en tu organización y permitir que los equipos se comuniquen entre sí desde cualquier lugar.