Mattermost es un servidor de chat de código abierto y auto-hospedado escrito en Golang y React. Es muy similar a Slack y ofrece un servicio de chat con intercambio de archivos, búsqueda e integraciones. Ayuda a los equipos a comunicarse entre sí desde cualquier lugar a través de Internet.
Características
- Las aplicaciones cliente están disponibles para iOS, Android, Windows, Mac, Linux.
- Admite autenticación multifactor.
- Contiene mensajería en cadena, emojis y emojis personalizados.
- Admite la personalización y marca.
- Hay mensajes individuales y grupales disponibles.
- Incluye historial de búsqueda ilimitado.
Con esta guía, aprenderás a instalar el servidor de chat Mattermost en Ubuntu 20.04.
Requisitos Previos
- Un servidor cloud corriendo con Ubuntu 20.04.
- Una contraseña de root configurada en tu servidor.
Instala y Configura MariaDB
Lo primero que has de hacer es instalar el servidor MariaDB utilizando el siguiente comando:
# apt-get install mariadb-server -y
A continuación, haz login en MariaDB con el siguiente comando:
# mysql
Después, crear una base de datos y un usuario con el siguiente comando:
# MariaDB [(none)]> CREATE DATABASE mattermost;
# MariaDB [(none)]> CREATE USER 'mattermost'@'%' IDENTIFIED BY 'password';
Para seguir, concede todos los privilegios a Mattermost con el siguiente comando:
# MariaDB [(none)]> GRANT ALL PRIVILEGES ON mattermost.* TO 'mattermost'@'%';
A continuación, elimina los privilegios y sal de MariaDB con el siguiente comando:
# MariaDB [(none)]> FLUSH PRIVILEGES;
# MariaDB [(none)]> EXIT;
Instala Mattermost
En primer lugar, crea un usuario separado de 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/5.36.1/mattermost-5.36.1-linux-amd64.tar.gz
Una vez que se haya completado la descarga, extrae el archivo descargado con el siguiente comando:
# tar -xzf mattermost-5.36.1-linux-amd64.tar.gz
Para continuar, mueve el directorio extraído a /opt:
# mv mattermost /opt/
Después, crea un directorio de datos para Mattermost:
# mkdir /opt/mattermost/data
En el siguiente paso, establece los permisos y propiedad adecuados con el siguiente comando:
# 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
Establece la URL de tu site como se muestra más abajo:
#"SiteURL": "http://mattermost.example.com",
Busca las siguientes líneas:
# "DriverName": "postgres",
# "DataSource": "postgres://mmuser:mostest@localhost/mattermost_test?sslmode=disable\u0026connect_timeout=10",
Y reemplázalas por éstas:
# "DriverName": "mysql",
# "DataSource": "mattermost:password@tcp(localhost:3306)/mattermost?charset=utf8mb4,utf8\u0026readTimeout=30s\u0026writeTimeout=30s",
Para terminar, guarda y cierra el archivo.
Crea un archivo de servicio Systemd
Necesitarás crear un archivo de servicio systemd. Puedes hacerlo con el siguiente comando:
# nano /lib/systemd/system/mattermost.service
Añade las siguientes líneas:
[Unit]
Description=Mattermost
After=network.target
After=mysql.service
Requires=mysql.service
[Service]
Type=notify
User=mattermost
Group=mattermost
ExecStart=/opt/mattermost/bin/mattermost
TimeoutStartSec=3600
Restart=always
RestartSec=10
WorkingDirectory=/opt/mattermost
LimitNOFILE=49152
[Install]
WantedBy=mariadb.service
Guarda y cierra el archivo y después carga de nuevo el demonio systemd:
# systemctl daemon-reload
Para continuar, inicia el servicio Mattermost y habilítalo para que se inicie con un reinicio del sistema:
# systemctl start mattermost
# systemctl enable mattermost
Configura Nginx como Proxy Inverso
A continuación, instala el servidor Nginx con el siguiente comando:
# apt-get install nginx -y
Una vez instalado, crea un archivo de configuración de host virtual para Nginx:
# 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 después reinicia el servicio Nginx para aplicar los cambios:
# systemctl restart nginx
Accede a Mattermost
Ahora ya puedes acceder a Mattermost utilizando la URL http://mattermost.ejemplo.com. Deberías ver la siguiente pantalla:
Proporciona tu e-mai, nombre de usuario administrador y clica en la pestaña de "Crear Cuenta". Deberías ver la siguiente pantalla:
Haz clic en la pestaña "Crea un equipo". Deberías ver la siguiente pantalla:
Poporciona el nombre de tu equipo y haz clic en la pestaña "Siguiente". Deberías ver la siguiente pantalla:
Define la URL de tu equipo y haz clic en la pestaña "Finalizar". Serás redirigido al panel de control de Mattermost.
Conclusión
¡Ya puedes implementar el chat de Mattermost en tu organización y utilizarlo como una plataforma de chat interna!