15%

Ahorra 15%<\/span> en todos los servicios de hosting

Pon a prueba tus habilidades y obtén Descuento<\/span> en cualquier plan de hosting

Usa el código:

Skills
Comenzar
01.11.2024
1 +1

Cómo instalar Mattermost en Ubuntu: Guía completa paso a paso

Mattermost es una plataforma poderosa, de código abierto, de mensajería y colaboración en equipo que brinda a las organizaciones control total sobre su infraestructura de comunicación. Como alternativa autohospedada a Slack y Microsoft Teams, Mattermost ofrece seguridad de nivel empresarial, propiedad completa de datos y amplia personalización, todo sin costos recurrentes de suscripción SaaS.

Esta guía completa te guía a través de cada paso de la instalación y configuración de Mattermost en un servidor Ubuntu, incluyendo la configuración de la base de datos PostgreSQL, la configuración del proxy inverso Nginx e integración de certificados SSL.

Tabla de Contenidos

  1. Requisitos Previos
  2. Actualizar Tu Sistema
  3. Instalar Dependencias Requeridas
  4. Descargar e Instalar Mattermost
  5. Configurar la Base de Datos PostgreSQL
  6. Configurar Mattermost
  7. Crear un Servicio Systemd
  8. Configurar Nginx como Proxy Inverso
  9. Asegurar Mattermost con SSL (HTTPS)
  10. Verificación Final

1. Requisitos Previos

Antes de comenzar, asegúrate de que los siguientes requisitos estén en su lugar:

  • Un servidor ejecutando Ubuntu 20.04 o Ubuntu 22.04 LTS (Ubuntu 18.04 ha llegado al final de su vida útil y no se recomienda para producción)
  • Privilegios sudo o root en el servidor
  • Un nombre de dominio apuntado a la dirección IP de tu servidor (altamente recomendado para implementaciones en producción)
  • Hardware mínimo: 1 vCPU, 2 GB RAM, 10 GB de espacio en disco (para equipos pequeños); escala hacia arriba para implementaciones más grandes

> Consejo de Hosting: Para un despliegue fluido de Mattermost, considera un plan confiable de Hosting VPS de AlexHost. Con almacenamiento SSD, acceso root completo y tiempo de actividad garantizado, las instancias VPS de AlexHost son ideales para herramientas de colaboración autohospedadas.

2. Actualizar Tu Sistema

Siempre comienza actualizando tu índice de paquetes y aplicando todas las actualizaciones de seguridad y sistema pendientes:

sudo apt update
sudo apt upgrade -y

Reinicia el servidor si se aplicó una actualización del kernel:

sudo reboot

3. Instalar Dependencias Requeridas

Mattermost depende de tres componentes clave: PostgreSQL (base de datos), Nginx (proxy inverso) y Certbot (gestión de certificados SSL).

Instala todos los paquetes requeridos en un paso:

sudo apt install -y postgresql postgresql-contrib
sudo apt install -y nginx
sudo apt install -y certbot python3-certbot-nginx

Verifica que PostgreSQL y Nginx se estén ejecutando:

sudo systemctl status postgresql
sudo systemctl status nginx

Ambos servicios deben mostrar active (running).

4. Descargar e Instalar Mattermost

Paso 1: Descargar la Última Versión de Mattermost

Visita la página oficial de lanzamientos de Mattermost para encontrar la última versión estable. Usa wget para descargarlo directamente a tu servidor:

wget https://releases.mattermost.com/9.5.0/mattermost-team-9.5.0-linux-amd64.tar.gz

> Nota: Reemplaza 9.5.0 con el número de versión más reciente disponible. Siempre usa la versión estable más reciente para parches de seguridad y nuevas características.

Paso 2: Extraer el Archivo

tar -xvzf mattermost-team-9.5.0-linux-amd64.tar.gz

Paso 3: Mover Mattermost al Directorio del Sistema

Mueve la carpeta extraída a /opt, que es la ubicación estándar de Linux para software opcional de terceros:

sudo mv mattermost /opt/mattermost

Paso 4: Crear un Usuario del Sistema Mattermost Dedicado

Ejecutar Mattermost como un usuario dedicado sin privilegios es una práctica de seguridad crítica:

sudo useradd -r -m -d /opt/mattermost -s /bin/false mattermost

Paso 5: Crear el Directorio de Datos y Establecer Permisos

sudo mkdir -p /opt/mattermost/data
sudo chown -R mattermost:mattermost /opt/mattermost
sudo chmod -R 750 /opt/mattermost

5. Configurar la Base de Datos PostgreSQL

Mattermost requiere una base de datos PostgreSQL dedicada y un usuario. Sigue estos pasos cuidadosamente.

Paso 1: Cambiar al Usuario del Sistema PostgreSQL

sudo -i -u postgres

Paso 2: Abrir el Shell Interactivo de PostgreSQL

psql

Paso 3: Crear la Base de Datos, Usuario y Otorgar Privilegios

Ejecuta los siguientes comandos SQL uno por uno:

CREATE DATABASE mattermost_db;
CREATE USER mattermost WITH PASSWORD 'YourStrongPassword123!';
GRANT ALL PRIVILEGES ON DATABASE mattermost_db TO mattermost;

> Nota de Seguridad: Reemplaza YourStrongPassword123! con una contraseña fuerte y única. Usa un gestor de contraseñas para generarla y almacenarla de forma segura.

Para PostgreSQL 15 y posteriores, también necesitas otorgar privilegios de esquema:

c mattermost_db
GRANT ALL ON SCHEMA public TO mattermost;

Paso 4: Salir del Shell de PostgreSQL y Volver a Tu Usuario

q
exit

6. Configurar Mattermost

Paso 1: Abrir el Archivo de Configuración de Mattermost

sudo nano /opt/mattermost/config/config.json

Paso 2: Actualizar la Configuración de Conexión de la Base de Datos

Localiza el bloque SqlSettings y actualízalo con tus credenciales de PostgreSQL:

"SqlSettings": {
    "DriverName": "postgres",
    "DataSource": "postgres://mattermost:YourStrongPassword123!@localhost:5432/mattermost_db?sslmode=disable&connect_timeout=10",
    "DataSourceReplicas": [],
    "DataSourceSearchReplicas": [],
    "MaxIdleConns": 20,
    "ConnMaxLifetimeMilliseconds": 3600000,
    "MaxOpenConns": 300,
    "Trace": false,
    "AtRestEncryptKey": "",
    "QueryTimeout": 30
}

Paso 3: Configurar la URL del Sitio

Encuentra el bloque ServiceSettings y establece tu dominio:

"ServiceSettings": {
    "SiteURL": "https://your_domain.com",
    ...
}

Reemplaza your_domain.com con tu nombre de dominio real.

Paso 4: Guardar y Salir

Presiona Ctrl+X, luego Y, luego Enter para guardar y cerrar el archivo.

7. Crear un Servicio Systemd

Ejecutar Mattermost como un servicio systemd asegura que se inicie automáticamente al arrancar y se reinicie en caso de fallo, esencial para cualquier implementación en producción.

Paso 1: Crear el Archivo de Servicio

sudo nano /etc/systemd/system/mattermost.service

Paso 2: Agregar la Configuración del Servicio

Pega el siguiente contenido:

[Unit]
Description=Mattermost Team Messaging Server
After=network.target postgresql.service
Wants=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

Paso 3: Habilitar e Iniciar el Servicio Mattermost

sudo systemctl daemon-reload
sudo systemctl enable mattermost
sudo systemctl start mattermost

Paso 4: Verificar que el Servicio se Está Ejecutando

sudo systemctl status mattermost

Deberías ver active (running). Mattermost escucha en el puerto 8065 por defecto.

8. Configurar Nginx como Proxy Inverso

Nginx actúa como un proxy inverso, reenviando el tráfico HTTP/HTTPS entrante desde los puertos 80/443 al puerto interno 8065 de Mattermost. Esto también habilita el soporte de WebSocket, que Mattermost requiere para mensajería en tiempo real.

Paso 1: Crear el Archivo de Configuración de Nginx

sudo nano /etc/nginx/sites-available/mattermost

Paso 2: Agregar la Configuración del Proxy Inverso

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 your_domain.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;
        proxy_read_timeout 600s;
        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_pass http://backend;
    }
}

Reemplaza your_domain.com con tu nombre de dominio real.

Paso 3: Habilitar la Configuración del Sitio

sudo ln -s /etc/nginx/sites-available/mattermost /etc/nginx/sites-enabled/

Paso 4: Probar la Configuración de Nginx para Errores de Sintaxis

sudo nginx -t

Salida esperada:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Paso 5: Reiniciar Nginx

sudo systemctl restart nginx

9. Asegurar Mattermost con SSL (HTTPS)

Ejecutar Mattermost sobre HTTPS es obligatorio para cualquier entorno de producción. Encripta toda la comunicación entre usuarios y tu servidor, protegiendo credenciales y mensajes de la interceptación.

> SSL Hecho Fácil: AlexHost ofrece Certificados SSL asequibles para todos los tipos de sitios web y aplicaciones. Alternativamente, usa el método gratuito de Let's Encrypt a continuación.

Paso 1: Obtener un Certificado SSL Gratuito con Certbot

sudo certbot --nginx -d your_domain.com

Certbot automáticamente:

  • Verificará la propiedad del dominio
  • Emitirá un certificado de Let's Encrypt
  • Modificará tu configuración de Nginx para habilitar HTTPS
  • Configurará la renovación automática de certificados

Paso 2: Verificar la Renovación Automática

sudo certbot renew --dry-run

Paso 3: Reiniciar Nginx

sudo systemctl restart nginx

Tu instancia de Mattermost ahora es accesible en https://your_domain.com.

10. Verificación Final

Verificar que Todos los Servicios se Están Ejecutando

sudo systemctl status postgresql
sudo systemctl status mattermost
sudo systemctl status nginx

Probar Mattermost Directamente en el Puerto 8065

curl -I http://localhost:8065

Deberías recibir una respuesta HTTP 200 OK o de redirección.

Completar la Configuración Basada en Web

  1. Abre tu navegador y navega a https://your_domain.com
  2. Serás recibido por el asistente de configuración de Mattermost
  3. Crea tu cuenta de administrador
  4. Configura tu primer equipo y espacio de trabajo
  5. Invita a miembros del equipo y comienza a colaborar

Solución de Problemas Comunes

ProblemaCausa ProbableSolución
El servicio Mattermost falla al iniciarCredenciales de base de datos incorrectas en config.jsonVerifica la cadena DataSource en SqlSettings
502 Bad Gateway en NginxMattermost no se está ejecutando en el puerto 8065Ejecuta sudo systemctl restart mattermost
Errores de conexión WebSocketFaltan enc
15%

Ahorra 15%<\/span> en todos los servicios de hosting

Pon a prueba tus habilidades y obtén Descuento<\/span> en cualquier plan de hosting

Usa el código:

Skills
Comenzar