Cómo instalar Mattermost en Rocky Linux 9
Mattermost es un sistema de mensajería de código abierto y autoalojado para tu organización. Es una alternativa a servicios como Slack y Microsoft Teams. Mattermost combina múltiples funciones, como compartir archivos, búsqueda, automatización y numerosas integraciones con terceros. Es una plataforma de colaboración y un sistema de mensajería para tu organización interna y tus empresas.
Esta guía te enseña a instalar Mattermost en el servidor Rocky Linux 9. Configurarás Mattermost con PostgreSQL como base de datos y Nginx como proxy inverso y, a continuación, crearás el primer espacio de trabajo en Mattermost.
Requisitos previos
Para avanzar, asegúrate de que tienes los siguientes requisitos:
- Un servidor Rocky Linux 9
- Un usuario no root con privilegios de administrador
- Un nombre de dominio apuntando a la dirección IP del servidor
- SELinux con el estado permisivo
- Firewalld activado
Instalar PostgreSQL y Nginx
En esta sección, instalarás las dependencias para Mattermost, que incluyen el servidor PostgreSQL, el servidor web Nginx y Certbot. También añadirás el repositorio EPEL y habilitarás el módulo de repositorio para PostgreSQL 16.
En primer lugar, ejecuta el comando«dnf» que aparece a continuación para añadir el repositorio EPEL a tu sistema.
sudo dnf install epel-release -y
A continuación, habilita el módulo de repositorio de PostgreSQL 16 con lo siguiente.
sudo dnf module enable postgresql:16
Ahora instala dependencias como PostgreSQL, el servidor web Nginx y Certbot como dependencias para Mattermost. Introduce‘Y’ para confirmar la instalación.
sudo dnf install postgresql-server postgresql-contrib nginx certbot wget curl
Para que el servidor PostgreSQL funcione, ejecuta el siguiente comando para inicializar el directorio de datos PostgreSQL.
sudo /usr/bin/postgresql-setup --initdb
A continuación, ejecuta el siguiente comando‘systemctl‘ para iniciar y habilitar el servicio ‘postgresql’. A continuación, verifícalo para asegurarte de que PostgreSQL se está ejecutando.
sudo systemctl enable --now postgresql sudo systemctl status postgresql
La siguiente salida muestra que el servidor PostgreSQL está habilitado y en ejecución.
Por último, inicia y habilita el servidor web Nginx con el siguiente comando. A continuación, comprueba el servicio Nginx.
sudo systemctl enable --now nginx sudo systemctl status nginx
Como se ve en la siguiente imagen, Nginx se está ejecutando y está habilitado.
Abrir puertos HTTP y HTTPS
Una vez instaladas las dependencias, necesitas abrir los puertos HTTP y HTTPS en tu sistema. En Rocky Linux, utilizarás firewalld, gestionado a través de la utilidad ‘firewall-cmd’.
Abre ambos servicios HTTP y HTTPS en firewalld utilizando el comando‘firewall-cmd‘ que aparece a continuación. Una vez añadidos, verás una salida‘success’.
sudo firewall-cmd --add-service={http,https} --permanent
Ahora recarga el firewalld con lo siguiente para aplicar las nuevas reglas.
sudo firewall-cmd --reload
Por último, comprueba las reglas en tu firewalld utilizando el comando siguiente. Verás que tanto los servicios HTTP como HTTPS están habilitados en firewalld.
sudo firewall-cmd --list-all
Crear usuario y base de datos PostgreSQL
En esta sección, configurarás el método de autenticación PostgreSQL a ‘scram-sha-256’, y luego crearás una nueva base de datos y un nuevo usuario que utilizará Mattermost mediante ‘psql’ o el shell PostgreSQL.
Para cambiar el método de autenticación de contraseña por defecto, abre la configuración de PostgreSQL‘/var/lib/pgsql/data/pg_hba.conf‘ con el editor ‘nano’.
sudo nano /var/lib/pgsql/data/pg_hba.conf
Cambia el método de autenticación por defecto para conexiones localhost con el‘scram-sha-256‘ como el siguiente:
# TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all all peer # IPv4 local connections: host all all 127.0.0.1/32 scram-sha-256 # IPv6 local connections: host all all ::1/128 scram-sha-256
Guarda el archivo y sal del editor.
Ahora ejecuta el siguiente comando‘systemctl‘ para reiniciar PostgreSQL y aplicar tus cambios.
sudo systemctl restart postgresql
Una vez configurado PostgreSQL, crearás una nueva base de datos y un nuevo usuario para Mattermost.
Accede al servidor PostgreSQL con el comando«psql» que aparece a continuación.
sudo -u postgres psql
Ahora ejecuta las siguientes consultas para crear una nueva base de datos‘mattermost‘, un nuevo usuario‘mmuser‘ con la contraseña‘password’.
CREATE DATABASE mattermost; CREATE USER mmuser WITH PASSWORD 'password'; GRANT ALL ON DATABASE mattermost TO mmuser; ALTER DATABASE mattermost OWNER TO mmuser; GRANT USAGE, CREATE ON SCHEMA PUBLIC TO mmuser;
Comprueba la lista de bases de datos y usuarios en tu PostgreSQL con lo siguiente – Verás que se ha creado la base de datos‘mattermost‘ y el usuario‘mmuser‘.
\l \du
Escribe‘quit‘ para salir del servidor PostgreSQL.
A continuación, ejecuta el comando ‘psql’ que aparece a continuación para iniciar sesión en el servidor PostgreSQL con el usuario ‘mmuser’ en la base de datos ‘mattermost’. Introduce tu contraseña cuando se te solicite.
sudo -u postgres psql --host=localhost --dbname=mattermost --username=mmuser --password
Si tienes éxito, comprueba el estado de la conexión con la siguiente consulta. Verás que te has conectado a la base de datos‘mattermost‘ utilizando el‘mmuser‘.
\conninfo
Por último, escribe‘quit’ para salir.
Descarga de Mattermost
Ahora que ya has configurado PostgreSQL, tendrás que crear un nuevo usuario, descargar el código fuente de Mattermost y, a continuación, configurar el directorio de instalación de Mattermost.
Antes de descargar Mattermost, ejecuta el siguiente comando para añadir un nuevo usuario‘mattermost‘ en tu sistema.
sudo useradd --system --user-group mattermost
Descarga el código fuente de Mattermost con el comando‘wget‘ y extráelo con el comando‘tar’ que aparece a continuación. El código fuente de Mattermost se extraerá al directorio ‘mattermost’.
wget https://releases.mattermost.com/10.0.1/mattermost-10.0.1-linux-amd64.tar.gz tar xf mattermost-10.0.1-linux-amd64.tar.gz
Mueve el directorio‘mattermost‘ a ‘/opt‘ y crea un nuevo directorio‘data‘ sobre él. En este caso, Mattermost se instalará en el directorio‘/opt/mattermost‘.
mv mattermost /opt/ mkdir -p /opt/mattermost/data
Por último, ejecuta el siguiente comando para cambiar la propiedad del directorio‘/opt/mattermost‘ al usuario‘mattermost‘. Asegúrate también de que el grupo‘mattermost‘ tiene acceso de lectura y escritura.
sudo chown -R mattermost:mattermost /opt/mattermost sudo chmod g+rw /opt/mattermost
Configurar Mattermost con PostgreSQL
En esta sección, configurarás Mattermost con PostgreSQL. Editarás el archivo de configuración de Mattermost‘/opt/mattermost/config/config.json‘, establecerás un nombre de dominio para Mattermost y, a continuación, añadirás tu base de datos PostgreSQL a Mattermost.
Abre la configuración por defecto de Mattermost‘/opt/mattermost/config/config.json‘ utilizando el editor‘nano‘.
sudo nano /opt/mattermost/config/config.json
Cambia el‘SiteURL‘ por defecto por tu nombre de dominio Mattermost. En este caso, utilizaremos el nombre de dominio«https://space.howtoforge.local».
"ServiceSettings": { "SiteURL": "https://mattermost.howtoforge.local",
Pasa a la sección‘SqlSettings‘ y cambia la configuración de la base de datos como se indica a continuación. Asegúrate de ajustar el nombre de la base de datos, el usuario y la contraseña.
"SqlSettings": { "DriverName": "postgres", "DataSource": "postgres://mmuser:password@localhost/mattermost?sslmode=disable\u0026connect_timeout=10\u0026binary_parameters=yes",
Cuando hayas terminado, guarda el archivo y sal del editor.
Ejecutar Mattermost como un servicio systemd
Ahora que has integrado Mattermost con PostgreSQL, crearás un nuevo archivo de servicio para Mattermost. Esto te permitirá ejecutar Mattermost en segundo plano y gestionarlo fácilmente a través de la línea de comandos ‘systemctl’.
Crea un nuevo archivo de servicio systemd‘/etc/systemd/system/mattermost.service‘ utilizando el editor‘nano‘.
sudo nano /etc/systemd/system/mattermost.service
Introduce la siguiente configuración para ejecutar Mattermost como un servicio systemd.
[Unit] Description=Mattermost After=network.target After=postgresql.service BindsTo=postgresql.service [Service] Type=notify ExecStart=/opt/mattermost/bin/mattermost TimeoutStartSec=3600 KillMode=mixed Restart=always RestartSec=10 WorkingDirectory=/opt/mattermost User=mattermost Group=mattermost LimitNOFILE=49152 [Install] WantedBy=multi-user.target
Guarda el archivo y sal de él.
Ahora ejecuta el siguiente comando‘systemctl‘ para recargar el gestor systemd y aplicar el nuevo servicio ‘mattermost’.
sudo systemctl daemon-reload
Una vez recargado systemd, ejecuta el siguiente comando‘systemctl‘ para iniciar y habilitar el servicio‘mattermost‘. Y después, verifícalo para asegurarte de que el servicio se está ejecutando.
sudo systemctl enable --now mattermost sudo systemctl status mattermost
Si todo va bien, verás una configuración de que el servicio‘mattermost‘ se está ejecutando y habilitando como la siguiente:
Configurar Nginx como proxy inverso
Llegados a este punto, Mattermost está funcionando en tu servidor Linux Rocky. Para que sea accesible, tendrás que configurar Nginx como proxy inverso con HTTPS seguro activado.
Antes de configurar el servidor web Nginx, ejecuta el siguiente comando para detener el servicio Nginx y generar certificados SSL desde letsencrypt. Asegúrate de cambiar el nombre de dominio y la dirección de correo electrónico con tus datos.
sudo systemctl stop nginx sudo certbot --certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d space.howtoforge.local
Una vez finalizado el proceso, tus certificados SSL estarán disponibles en el directorio‘/etc/letsencrypt/live/domain.com‘.
A continuación, crea una nueva configuración de Nginx ‘/etc/nginx/conf.d/mattermost.conf‘ utilizando el editor ‘nano’.
sudo nano /etc/nginx/conf.d/mattermost.conf
Introduce la siguiente configuración y asegúrate de cambiar el nombre de dominio y la ruta de los certificados SSL con tu información.
upstream backend { server 127.0.0.1:8065; keepalive 32; } server { listen 80; server_name space.howtoforge.local; return 301 https://$server_name$request_uri; } server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name space.howtoforge.local; http2_push_preload on; # Enable HTTP/2 Server Push ssl_certificate /etc/letsencrypt/live/mattermost.howtoforge.local/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/mattermost.howtoforge.local/privkey.pem; ssl_session_timeout 1d; # Enable TLS versions (TLSv1.3 is required upcoming HTTP/3 QUIC). ssl_protocols TLSv1.2 TLSv1.3; # Enable TLSv1.3's 0-RTT. Use $ssl_early_data when reverse proxying to # prevent replay attacks. # # @see: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data ssl_early_data on; ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384'; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:50m; # HSTS (ngx_http_headers_module is required) (15768000 seconds = six 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; add_header X-Early-Data $tls1_3_early_data; 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 $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 60s; send_timeout 300s; lingering_timeout 5s; proxy_connect_timeout 90s; proxy_send_timeout 300s; proxy_read_timeout 90s; proxy_http_version 1.1; proxy_pass http://backend; } location / { client_max_body_size 100M; proxy_set_header Connection ""; proxy_set_header Host $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_http_version 1.1; proxy_pass http://backend; } } # This block is useful for debugging TLS v1.3. Please feel free to remove this # and use the '$ssl_early_data' variable exposed by NGINX directly should you # wish to do so. map $ssl_early_data $tls1_3_early_data { "~." $ssl_early_data; default ""; }
Guarda el archivo y sal del editor cuando hayas terminado.
A continuación, ejecuta el siguiente comando ‘nginx ‘ para verificar tu sintaxis de Nginx. Si la sintaxis es correcta, verás elmensaje «la sintaxis es correcta – la prueba se ha realizado correctamente«.
sudo nginx -t
Por último, ejecuta el siguiente comando «systemctl » para reiniciar el servicio Nginx y aplicar los cambios.
sudo systemctl restart nginx
Crear el primer espacio de trabajo con Mattermost
Abre tu navegador web y visita tu instalación de Mattermost como ‘https://space.howtoforge.local’. Si la instalación se ha realizado correctamente, verás el asistente de instalación.
Haz clic en el botón«Ver en el navegador» para configurar Mattermost a través de un navegador web.
Introduce el nuevo usuario administrador, la dirección de correo electrónico y la contraseña, y haz clic en«Crear cuenta» para continuar.
Introduce el nombre de tu organización.
Por ahora, puedes omitir la integración con aplicaciones de terceros.
Ahora haz clic en«Finalizar configuración» para completar la instalación de Mattermost.
Una vez finalizada, serás redirigido a tu primer espacio de trabajo Mattermost.
Conclusión
¡Enhorabuena! Has completado la instalación de Mattermost en el servidor Rocky Linux 9. Ya tienes Mattermost funcionando en segundo plano como un servicio systemd con PostgreSQL como base de datos y Nginx como proxy inverso. También has asegurado Mattermost con HTTPS y has creado tu primer espacio de trabajo en Mattermost. A partir de aquí, puedes integrar Mattermost con aplicaciones de terceros como GitHub, GitLab y Bitbucket.