Mattermost es un sistema de mensajería de código abierto escrito en los lenguajes de programación Golang y React. Es una alternativa de slack, podemos usarla para crear nuestro propio servicio de mensajería como slack o hipchat.
Mattermost lleva la comunicación de su equipo a un solo lugar y la hace accesible desde cualquier lugar. Puede acceder desde su escritorio, dispositivo Android y iPhone.
En este tutorial, le mostraremos cómo instalar Mattermost en Debian Buster 10. Instalaremos Mattermost con el servidor de base de datos MySQL, el servidor web Nginx y ejecutaremos Mattermost como un servicio Systemd en la última versión de Debian Buster 10.
Requisito previo
Para este tutorial, probaremos la instalación de Mattermost en Debian 10 con 2 GB de RAM, 25 de espacio libre en disco y 2 CPU.
¿Qué haremos?
- Instalar servidor MySQL
- Crear base de datos MySQL para Mattermost
- Agregar usuario del sistema y descargar Mattermost
- Configurar Mattermost
- Configurar Mattermost como un servicio de Systemd
- Generar SSL Letsencrypt
- Instalar y configurar Nginx como proxy inverso
- Pruebas
Paso 1:instalar la base de datos MySQL
Primero, instalaremos MySQL Server 8.0 desde el repositorio oficial a nuestro servidor Debian. Sp, agregaremos el repositorio oficial de MySQL e instalaremos los paquetes de MySQL.
Instale la herramienta 'gnupg2' en el servidor Debian utilizando el siguiente comando apt.
sudo apt install curl wget gnupg2
Descargue y agregue el repositorio MySQL para el sistema Debian usando el siguiente comando.
wget https://dev.mysql.com/get/mysql-apt-config_0.8.13-1_all.deb
dpkg -i mysql-apt-config_0.8.13-1_all.deb
Ahora actualice todos los repositorios de Debian e instale los paquetes del servidor MySQL.
sudo apt update
sudo apt install mysql-server -y
Durante la instalación del servidor MySQL, se le pedirá que configure la contraseña de root para su servidor MySQL.
Escriba su contraseña de root para MySQL y repítala.
Una vez completada la instalación, inicie el servicio MySQL y agréguelo a
systemctl start mysql
systemctl enable mysql
Como resultado, MySQL Server ahora está instalado en Debian Buster 10. Y se ha configurado la contraseña raíz para MySQL Server.
Paso 2:crear una base de datos MySQL para Mattermost
De forma predeterminada, Mattermost admite dos controladores de base de datos, las bases de datos PostgreSQL y MySQL. Y para este tutorial, usaremos MySQL como base de datos predeterminada para Mattermost.
En este paso, crearemos una nueva base de datos y un nuevo usuario para la instalación de Mattermost.
Inicie sesión en el shell de MySQL con su usuario raíz y contraseña como se indica a continuación.
mysql -u root -p
Ahora cree una nueva base de datos y un nuevo usuario para Mattermost. Crearemos una nueva base de datos 'mattermost' con el usuario 'mmuser' y la contraseña 'mmuser-password'.
create database mattermost;
create user [email protected] identified by 'mmuser-password';
grant all privileges on mattermost.* to [email protected];
flush privileges;
Ahora escriba 'salir' para cerrar sesión en el shell de MySQL.
Y como resultado, se ha creado la base de datos MySQL y el usuario para la instalación de Mattermost.
Paso 3:agregar usuario y descargar Mattermost
En este paso, crearemos un nuevo usuario del sistema y descargaremos el código fuente de Mattermost. El software Mattermost se ejecutará bajo el nombre de usuario 'mattermost', se instalará en el directorio '/opt/mattermost'.
Cree un nuevo usuario del sistema llamado 'mattermost' usando el siguiente comando.
useradd --system --user-group mattermost
Ahora vaya al directorio '/opt' y descargue el código fuente de Mattermost usando el comando curl a continuación.
cd /opt/
curl -o mattermost.tar.gz https://releases.mattermost.com/5.21.0/mattermost-5.21.0-linux-amd64.tar.gz
Extraiga el código fuente de Mattermost y cree un nuevo directorio de 'datos'.
tar -xf mattermost.tar.gz
mkdir -p /opt/mattermost/data
Después de eso, cambie la propiedad del directorio '/opt/mattermost' al usuario 'mattermost' y haga que se pueda escribir.
chown -R mattermost:mattermost /opt/mattermost
chmod -R g+w /opt/mattermost
Como resultado, se creó el usuario 'mattermost' y se descargó el código fuente de Mattermost en el directorio '/opt/mattermost'.
Paso 4:configurar Mattermost
En este paso, configuraremos la dirección de escucha y la base de datos de Mattermost. El servicio de Mattermost se ejecutará en la dirección IP local en el puerto predeterminado 8065 y usará MySQL como sistema de base de datos.
Vaya al directorio '/opt/mattermost' y edite el archivo de configuración 'config.json' en el directorio 'config'.
cd /opt/mattermost/
vim config/config.json
En la opción 'ListenAddress', cambie la dirección IP a '127.0.0.1'.
"ListenAddress": "127.0.0.1:8065",
Uno 'SqlSettings', cambie DriverName a 'mysql' y cambie 'DataSource' con la base de datos MySQL y el usuario que hemos creado.
"SqlSettings": {
"DriverName": "mysql",
"DataSource": "dbuser:[email protected](localhost:3306)/dbname?charset=utf8mb4,utf8\u0026readTimeout=30s\u0026writeTimeout=30s",
Guardar y cerrar.
Luego, inicialice la instalación de Mattermost usando el siguiente comando.
sudo -u mattermost ./bin/mattermost
A continuación se muestra el resultado que obtendrá.
Como resultado, Mattermost está funcionando en la dirección IP local '127.0.0.1' con el puerto '8065', ahora presione el botón 'Ctrl+c' para salir.
Paso 5:configurar Mattermost como servicio
En este paso, configuraremos Mattermost como un servicio systemd, y se ejecutará automáticamente en el arranque del sistema después de que se ejecute el servicio de base de datos MySQL.
Ahora vaya al directorio '/lib/systemd/system' y cree un nuevo archivo de servicio 'mattermost.service'.
cd /lib/systemd/system/
vim mattermost.service
Ahora pegue la siguiente configuración en él.
[Unit]
Description=Mattermost
After=network.target
After=mysql.service
Requires=mysql.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=multi-user.target
Guardar y cerrar.
A continuación, vuelva a cargar systemd manager en el sistema Debian.
systemctl daemon-reload
Después de eso, inicie el servicio Mattermost y agréguelo al inicio del sistema.
systemctl start mattermost
systemctl enable mattermost
El servicio Mattermost está en funcionamiento, verifíquelo con el siguiente comando.
systemctl status mattermost
A continuación se muestra el resultado que obtendrá.
Como resultado, el servicio de Mattermost está funcionando en el sistema Debian y se ejecutará automáticamente al arrancar el sistema.
Paso 6:instalar Certbot Letsencrypt
En este paso, instalaremos la herramienta certbot y generaremos el SSL Letsencrypt. Aseguraremos la instalación de Mattermost usando el SSL de Letsencrypt.
Instale la herramienta certbot usando el comando apt a continuación.
sudo apt install certbot
Una vez que se complete la instalación, genere el SSL letsencrypt usando el comando certbot a continuación.
certbot certonly --standalone --agree-tos -m [email protected] -d mattermost.hakase-labs.io
Como resultado, sus certificados SSL se generarán en el directorio '/etc/letsencrypt/live/mattermost-hakase-labs.io'.
Paso 7:instalar y configurar Nginx como proxy inverso
En este paso, instalaremos el servidor web Nginx y lo configuraremos como proxy inverso para el servicio Mattermost.
Instale Nginx usando el comando apt a continuación.
sudo apt install nginx -y
Una vez completada la instalación, inicie el servicio Nginx y agréguelo al inicio del sistema.
systemctl start nginx
systemctl enable nginx
El servidor web Nginx está en funcionamiento.
A continuación, vaya al directorio de configuración '/etc/nginx' y cree una nueva configuración de host virtual.
cd /etc/nginx/
vim sites-available/mattermost
Cambie el nombre de dominio y la ruta de los certificados SSL por los suyos propios, luego pegue la configuración en él.
upstream backend {
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 edu.initrc.fun;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name edu.initrc.fun
ssl on;
ssl_certificate /etc/letsencrypt/live/edu.initrc.fun/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/edu.initrc.fun/privkey.pem;
ssl_session_timeout 1d;
ssl_protocols TLSv1.2;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:50m;
# HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 months)
add_header Strict-Transport-Security max-age=15768000;
# OCSP Stapling ---
# fetch OCSP records from URL in ssl_certificate and cache them
ssl_stapling on;
ssl_stapling_verify on;
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;
}
}
Guardar y cerrar.
A continuación, cree el directorio de caché de Nginx y cambie la propiedad de ese directorio al usuario predeterminado 'www-data'.
mkdir -p /var/cache/nginx
chown -R www-data:www-data /var/cache/nginx
Después de eso, active Mattermost virtualhost, luego pruebe la configuración de nginx y asegúrese de que no haya ningún error.
ln -s /etc/nginx/sites-available/mattermost /etc/nginx/sites-enabled/
nginx -t
Ahora reinicie el servicio Nginx usando el siguiente comando systemctl.
systemctl restart nginx
Como resultado, se completó la instalación y configuración de Nginx como proxy inverso para Mattermost. Y estamos listos para probar la instalación de Mattermost.
Paso 8 - Prueba
Abra su navegador web y escriba el nombre de dominio de su URL de instalación de Mattermost en la barra de direcciones. El mío es:
https://mattermost.hakase-labs.io/
Ahora necesita crear una nueva primera cuenta de Mattermost, este será el administrador de Mattermost.
Escriba los detalles de su nombre de usuario, correo electrónico y contraseña y haga clic en el botón "Crear cuenta".
Crea un nuevo primer equipo en Mattermost.
Escriba el nombre de su primer equipo y haga clic en 'Siguiente'.
Y la URL del equipo será el nombre del equipo, haga clic en 'Finalizar' para continuar.
Y te unirás automáticamente al canal predeterminado "Off-Topic" y "Town Square".
Como resultado, la instalación de Mattermost en Debian Buster 10 con la base de datos MySQL y el servidor web Nginx se completó con éxito.