Cómo configurar Mattermost en Ubuntu 20.04

El autor seleccionó el Fondo de Código Libre y Abierto para recibir una donación como parte del programa Write for DOnations.
Introducción
Mattermost es una plataforma de colaboración y mensajería de código abierto creada con la seguridad y la capacidad de configuración en mente, que ofrece una funcionalidad comparable a Discord o Slack. Ofrece mensajería grupal, en cadena y uno a uno, historial de búsqueda ilimitado y capacidades para compartir archivos, autorización de dos factores y notificaciones. Mattermost también ofrece webhooks e integración de bots para una mayor personalización. Es accesible desde cualquier tipo de dispositivo moderno gracias a su interfaz web responsiva y aplicaciones móviles dedicadas.
En este tutorial, configurarás Mattermost Team Edition en tu servidor Ubuntu 20.04. Primero, lo instalarás y lo expondrás en tu dominio, protegido con un certificado TLS Let's Encrypt gratuito. Luego, habilitarás las notificaciones por correo electrónico, personalizarás la marca y crearás tu tablero de mensajes (llamado equipo en Mattermost).
Prerrequisitos
- Un servidor con Ubuntu 20.04 y al menos 2 GB de RAM, acceso root y una cuenta sudo que no sea root. Puedes configurarlo siguiendo esta Guía de configuración inicial del servidor.
- MariaDB instalado en su servidor. Para ver cómo hacerlo, visite Cómo instalar MariaDB en Ubuntu 20.04. Puede seguir la versión corta que se describe al principio del tutorial.
- Postfix instalado en modo de solo envío en su servidor. Visite el tutorial Cómo instalar y configurar Postfix como un servidor SMTP de solo envío en Ubuntu 20.04 para configurarlo. Lo usará para habilitar el envío de notificaciones por correo electrónico desde Mattermost.
- Nginx instalado en su servidor. Para obtener una guía sobre cómo hacerlo, complete los pasos 1 a 4 de Cómo instalar Nginx en Ubuntu 20.04.
- Un nombre de dominio completamente registrado para alojar Mattermost, que apunte a su servidor. Este tutorial se utilizará en todo momento. Puede comprar un nombre de dominio en Namecheap, obtener uno gratis en Freenom o utilizar el registrador de dominios que prefiera. Para DigitalOcean, puede seguir esta introducción a los DNS de DigitalOcean para obtener detalles sobre cómo agregarlos.
mattermost.your_domain
Nota : Para que su servidor SMTP Postfix funcione correctamente, los registros PTR de su servidor deben coincidir your_domain
. Puede verificar el nombre de host del servidor escribiendo hostname
en el símbolo del sistema. El resultado debe coincidir con el nombre que le dio a su servidor cuando lo creó.
Paso 1: Instalación de Mattermost
En esta sección, configurará Mattermost en su servidor. Esto implica descargar la última versión, configurarla para usar la base de datos MariaDB y crear un systemd
servicio que mantendrá a Mattermost siempre ejecutándose en segundo plano.
Descargando Mattermost
Almacenarás todos los datos relacionados con la instalación de Mattermost en una carpeta llamada ~/mattermost
. Créala ejecutando el siguiente comando:
- mkdir ~/mattermost
Navega hasta él:
- cd ~/mattermost
Deberás dirigirte a la página de descarga de Mattermost en el sitio web oficial y copiar el enlace para obtener la última versión. Al momento de escribir esto, la última versión era 5.24.2
. Descárgala wget
con el siguiente comando:
- wget https://releases.mattermost.com/5.24.2/mattermost-5.24.2-linux-amd64.tar.gz
Luego, descomprima el archivo ejecutando:
- tar -xvzf mattermost*.gz
Este comando descomprimirá todos los archivos del directorio cuyos nombres comiencen con mattermost
.
Obtendrás una carpeta con el mismo nombre que el archivo original que descargaste, que contiene los binarios de Mattermost. Cópiala para /opt
que puedas acceder a ella desde todo el sistema ejecutando lo siguiente:
- sudo cp -r mattermost /opt
Luego, crea una carpeta para Mattermost, donde almacenará los datos del usuario:
- sudo mkdir /opt/mattermost/data
Nota: Mattermost almacenará archivos e imágenes que usted y su equipo compartirán en este directorio, así que asegúrese de tener suficiente espacio libre en la unidad donde se encuentra.
A continuación, cree un usuario y un grupo para Mattermost:
- sudo useradd --system --user-group mattermost
Luego, haga que el usuario recién creado y su grupo sean propietarios de la carpeta de datos:
- sudo chown -R mattermost:mattermost /opt/mattermost
Esto se hace para que, en caso de una violación, el atacante quede confinado al directorio de Mattermost y no pueda acceder fácilmente al resto del sistema.
Por último, haga que el /opt/mattermost
directorio sea escribible por grupos:
- sudo chmod -R g+w /opt/mattermost
Ahora que los binarios de Mattermost están en su lugar con permisos seguros, configuremos una base de datos para ellos.
Configuración de la base de datos
Comience ingresando al indicador de MariaDB ejecutando lo siguiente:
- sudo mysql
Cree un usuario de base de datos mmuser
ejecutando el siguiente comando y reemplácelo your_mmuser_password
con una contraseña de su elección:
- CREATE USER 'mmuser'@'%' IDENTIFIED BY 'your_mmuser_password';
Luego, crea una base de datos para Mattermost:
- CREATE DATABASE mattermost;
Para permitir mmuser
el acceso a la mattermost
base de datos, concédale privilegios de acceso ejecutando:
- GRANT ALL PRIVILEGES ON mattermost.* TO 'mmuser'@'%';
Luego, vuelva a cargar las tablas de concesiones para aplicar inmediatamente los cambios:
- FLUSH PRIVILEGES;
Cuando haya terminado, salga del mensaje:
- exit
Una vez creada la base de datos y el usuario correspondiente, ahora editará el archivo de configuración principal de Mattermost y configurará la cadena de conexión de base de datos correcta.
Ábrelo para editarlo:
- sudo nano /opt/mattermost/config/config.json
Encuentra las líneas que se parecen a las siguientes:
/opt/mattermost/config/config.json
. . ."DriverName": "...""DataSource": "...". . .
Modifíquelos como se muestra aquí, reemplazándolos your_mmuser_password
con la contraseña que estableció para la mmuser
cuenta de la base de datos:
/opt/mattermost/config/config.json
..."DriverName": "mysql""DataSource": "mmuser:your_mmuser_password@tcp(localhost:3306)/mattermost?charset=utf8mb4,utf8readTimeout=30swriteTimeout=30s"...
Guarde y cierre el archivo cuando haya terminado.
Ya has configurado Mattermost para que use la base de datos recién creada donde almacenará usuarios, equipos y mensajes. Ahora estás listo para continuar con la creación de un systemd
servicio para ella.
Creación de un servicio systemd
Ejecutar Mattermost como un servicio systemd
garantiza que se ejecutará en segundo plano en todo momento.
Almacenarás la configuración del servicio en un archivo llamado mattermost.service
, en el /lib/systemd/system
directorio donde systemd
se almacenan sus servicios. Créalo usando tu editor de texto:
- sudo nano /lib/systemd/system/mattermost.service
Añade las siguientes líneas:
/lib/systemd/system/mattermost.servicio
[Unit]Description=MattermostAfter=network.targetAfter=mysql.serviceRequires=mysql.service[Service]Type=notifyUser=mattermostGroup=mattermostExecStart=/opt/mattermost/bin/mattermostTimeoutStartSec=3600Restart=alwaysRestartSec=10WorkingDirectory=/opt/mattermostLimitNOFILE=49152[Install]WantedBy=mysql.service
Aquí primero se especifica la descripción del servicio. Luego, se indica que el mysql
servicio debe iniciarse antes que el servicio Mattermost, ya que este último necesita que MariaDB se ejecute para funcionar. Después de la [Unit]
sección, se define el tipo de servicio. notify
significa que el proceso informará systemd
que está cargado. Se proporciona el comando que se ejecutará y se establece la política de reinicio en always
. También se define el directorio de trabajo para el proceso y con qué usuario y grupo debe ejecutarse.
En esta [Install]
sección, especifique el servicio de base de datos como valor del WantedBy
parámetro para garantizar que Mattermost se reinicie junto con la base de datos. Omitir esta configuración puede plantear un problema cuando la base de datos se actualiza automáticamente, ya que Mattermost puede dejar de funcionar si no se reinicia.
Guarde y cierre el archivo, luego vuelva a cargar todos los servicios ejecutando el siguiente comando:
- sudo systemctl daemon-reload
Compruebe que se ha cargado correctamente:
- sudo systemctl status mattermost
Verás el siguiente resultado:
Output● mattermost.service - Mattermost Loaded: loaded (/lib/systemd/system/mattermost.service; disabled; vendor preset: enabled) Active: inactive (dead)
Si systemd
informa un error, vuelva a verificar el nombre del archivo de servicio, su ubicación y la validez de su contenido.
Luego, habilite el servicio Mattermost ejecutando:
- sudo systemctl enable mattermost
En este paso, ha descargado Mattermost, lo ha configurado para utilizar la base de datos MariaDB y ha creado un systemd
servicio para él. En el siguiente paso, lo expondrá en su dominio.
Paso 2: Exponer Mattermost en su dominio
En esta sección, configurará Nginx como un servidor proxy inverso para Mattermost.
Antes de configurar Nginx, deberá especificar su dominio en el archivo de configuración principal de Mattermost. Ábralo para editarlo:
- sudo nano /opt/mattermost/config/config.json
Encuentra la línea que se parece a la siguiente:
/opt/mattermost/config/config.json
. . ."SiteURL": "". . .
Inserta el nombre de tu dominio entre comillas:
/opt/mattermost/config/config.json
..."SiteURL": "http://mattermost.your_domain"...
Guarde y cierre el archivo.
Como aprendió en el paso de requisitos previos de Nginx, sus archivos de configuración del sitio se almacenan en /etc/nginx/sites-available
y luego se deben vincular simbólicamente para /etc/nginx/sites-enabled
que se activen.
Almacenarás la configuración para exponer Mattermost en tu dominio en un archivo llamado mattermost.conf
, en /etc/nginx/sites-available
. Créalo usando tu editor:
- sudo nano /etc/nginx/sites-available/mattermost.conf
Añade las siguientes líneas:
/etc/nginx/sites-available/mattermost.conf
upstream backend { 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.your_domain; 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://backend; } 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://backend; }}
Reemplace con el dominio deseado, luego guarde y cierre el archivo.mattermost.your_domain
En este archivo, se define que Nginx debe escuchar el puerto HTTP 80
. Luego, se especifica un server_name
que le indica a Nginx para qué dominio aceptar solicitudes y aplicar esta configuración en particular. Los dos bloques siguientes configuran aún más las conexiones proxy, de modo que Mattermost funcione correctamente.
Para activar esta configuración del sitio, deberá crear un enlace simbólico en la /etc/nginx/sites-enabled
carpeta ejecutando:
- sudo ln -s /etc/nginx/sites-available/mattermost.conf /etc/nginx/sites-enabled/mattermost.conf
Para probar la validez de la configuración, ejecute el siguiente comando:
- sudo nginx -t
Verás el siguiente resultado:
Outputnginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful
Para que la configuración surta efecto, deberá reiniciar Nginx:
- sudo systemctl restart nginx
Luego, inicie el servicio Mattermost ejecutando:
- sudo systemctl start mattermost
Cuando termine este comando, intenta navegar hasta tu dominio en tu navegador. Deberías ver una página que te pide que te registres:
Ahora tienes tu instalación de Mattermost disponible y accesible en tu dominio. En el siguiente paso, la protegerás aplicando un certificado TLS Let's Encrypt gratuito.
Paso 3: Proteger su dominio
En esta sección, protegerá su dominio utilizando un certificado TLS Let's Encrypt, que aprovisionará mediante Certbot.
Ya deberías haber instalado Certbot como parte de los requisitos previos, por lo que solo necesitarás instalar su complemento Nginx ejecutando:
- sudo apt install python3-certbot-nginx
Además, como parte de los requisitos previos, habilitó ufw
(Uncomplicated Firewall) y lo configuró para permitir el tráfico HTTP sin cifrar. Para poder acceder al sitio seguro, deberá configurarlo para que acepte tráfico cifrado ejecutando el siguiente comando:
- sudo ufw allow https
La salida será:
OutputRule addedRule added (v6)
De manera similar a Nginx, deberá volver a cargarlo para que la configuración surta efecto:
- sudo ufw reload
El resultado mostrará:
OutputFirewall reloaded
Para solicitar certificados para su dominio, ejecute el siguiente comando:
- sudo certbot --nginx -d mattermost.your_domain
En este comando, se ejecuta certbot
para solicitar certificados para su dominio; pasa el nombre de dominio con el -d
parámetro. El --nginx
indicador le indica que cambie automáticamente la configuración del sitio Nginx para que admita HTTPS. Recuerde reemplazarlo con su nombre de dominio.mattermost.your_domain
Si es la primera vez que utiliza Certbot, se le solicitará que proporcione una dirección de correo electrónico para recibir avisos urgentes y que acepte los Términos de servicio de la EFF. A continuación, Certbot solicitará certificados para su dominio a Let's Encrypt. Luego, le preguntará si desea redirigir todo el tráfico HTTP a HTTPS:
OutputPlease choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -1: No redirect - Make no further changes to the webserver configuration.2: Redirect - Make all requests redirect to secure HTTPS access. Choose this fornew sites, or if you're confident your site works on HTTPS. You can undo thischange by editing your web server's configuration.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
Se recomienda seleccionar la segunda opción para maximizar la seguridad. Luego de ingresar su selección, presione ENTER
.
El resultado será similar a esto:
OutputIMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/mattermost.your_domain/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/mattermost.your_domain/privkey.pem Your cert will expire on 2020-09-28. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot renew" - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
Esto significa que Certbot ha generado con éxito certificados TLS y los ha aplicado a la configuración de Nginx para su dominio.
Dado que ahora se puede acceder a tu dominio mediante HTTPS, tendrás que corregir la URL de tu dominio en el archivo de configuración principal de Mattermost. Ábrelo para editarlo:
- sudo nano /opt/mattermost/config/config.json
Una vez más, busque la línea que se parece a esto:
/opt/mattermost/config/config.json
. . ."SiteURL": "http://mattermost.your_domain". . .
Cambiar http
a https
:
/opt/mattermost/config/config.json
. . ."SiteURL": "https://mattermost.your_domain". . .
Eso es todo lo que necesitas editar, así que guarda y cierra el archivo.
Reinicie Mattermost ejecutando lo siguiente:
- sudo systemctl restart mattermost
Ahora puedes recargar tu dominio Mattermost en tu navegador y observar un candado a la izquierda de la dirección del sitio, lo que significa que has asegurado correctamente tu conexión.
Ahora que sus certificados TLS están configurados correctamente y su dominio es accesible a través de una conexión segura, está listo para configurar Mattermost.
Paso 4: Configuración de Mattermost
En esta sección, creará su equipo en Mattermost, configurará notificaciones por correo electrónico y cambiará la marca del servidor.
Cuando accedas a Mattermost por primera vez, deberás crear una cuenta con privilegios de administrador en tu servidor. Si ya tienes una cuenta, puedes iniciar sesión. Una vez que hayas iniciado sesión, verás una página que te indicará que no hay equipos a los que puedas unirte.
Para solucionar esto, selecciona Crear un equipo . Verás una página que te pedirá que le pongas un nombre a tu equipo (por ejemplo, Sammy
):
Ingrese un nombre de su elección y haga clic en Siguiente . Luego, se le solicitará que defina una dirección web para su equipo, en su dominio, que será el punto de acceso para su equipo en Mattermost:
Puede dejar la URL sin cambios. Una vez que haya terminado, haga clic en Finalizar . Mattermost creará su equipo y, después de omitir el tutorial, verá la interfaz principal, donde pasará la mayor parte del tiempo comunicándose:
La interfaz se explicará en detalle en el siguiente paso. Para acceder a la configuración, haz clic en tu nombre de usuario en la esquina superior izquierda y luego en Consola del sistema . Podrás acceder a esta opción solo si eres un usuario administrador.
En el lado izquierdo hay un menú que brinda acceso a las secciones de configuración de Mattermost. Primero, deberá configurar las notificaciones por correo electrónico, para lo cual debe hacer clic en la opción SMTP , que se encuentra en Entorno :
Para conectarte al servidor Postfix que instalaste como parte de los requisitos previos, escribe localhost
como Servidor SMTP y 25
como Puerto del servidor SMTP . Haz clic en el botón azul Guardar cuando hayas terminado y luego presiona el botón Probar conexión que se encuentra más abajo. Recibirás un mensaje en un cuadro verde que dice No se informaron errores al enviar un correo electrónico. Revisa tu bandeja de entrada para asegurarte.
Ahora puedes revisar la bandeja de entrada del correo electrónico con el que te registraste. Encontrarás un mensaje de Mattermost que indica que la configuración del correo electrónico está configurada correctamente. Si no lo recibes, revisa tu carpeta de correo no deseado. En caso de que hayas recibido un error de Mattermost, vuelve a verificar lo que ingresaste y, si es necesario, vuelve a realizar el tutorial de requisitos previos.
Ahora que ha verificado que los correos electrónicos funcionan, debe habilitar las notificaciones por correo electrónico seleccionando Notificaciones debajo de Configuración del sitio en el menú. Establezca la configuración Habilitar notificaciones por correo electrónicotrue
en y configure la Dirección de origen de las notificaciones en una dirección de correo electrónico de su elección, como .mattermost@your_domain
Como no es necesario que exista y no se supervisará, escríbalo no-reply
como Nombre para mostrar de la notificación , que es el nombre del remitente que se mostrará en el cliente de correo electrónico. Opcionalmente, puede Habilitar el procesamiento por lotes de correo electrónico para comprimir varios mensajes no leídos en un solo correo electrónico y reducir la cantidad total de correos electrónicos que envía a los miembros de su equipo. Haga clic en Guardar cuando haya terminado de modificar la configuración.
Habilitó las notificaciones por correo electrónico de manera global y ahora puede cambiar opcionalmente la marca del servidor seleccionando la opción Personalización debajo de Configuración del sitio . Aquí puede configurar el Nombre del sitio y la Descripción del sitio , así como cargar una imagen y un texto de marca personalizados.
Puede salir de la Consola del Sistema haciendo clic en su nombre de usuario en la esquina superior izquierda y seleccionando la primera opción del menú desplegable.
Has creado tu equipo en Mattermost y has configurado notificaciones por correo electrónico, de modo que te mantendrás informado sobre las nuevas discusiones que se produzcan en tu equipo.
Conclusión
Ahora tienes tu propia plataforma de mensajería escalable y alojada por ti mismo, que tú y tu equipo pueden usar para colaborar en todos los dispositivos. Ahora podrás comunicarte de manera más eficiente, compartir archivos y buscar en mensajes y canales con facilidad.
Si desea obtener más información sobre el uso de la interfaz de usuario de Mattermost, visite la documentación oficial.
Deja una respuesta