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
- Requisitos Previos
- Actualizar Tu Sistema
- Instalar Dependencias Requeridas
- Descargar e Instalar Mattermost
- Configurar la Base de Datos PostgreSQL
- Configurar Mattermost
- Crear un Servicio Systemd
- Configurar Nginx como Proxy Inverso
- Asegurar Mattermost con SSL (HTTPS)
- 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 -yReinicia el servidor si se aplicó una actualización del kernel:
sudo reboot3. 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-nginxVerifica que PostgreSQL y Nginx se estén ejecutando:
sudo systemctl status postgresql
sudo systemctl status nginxAmbos 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.gzPaso 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/mattermostPaso 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 mattermostPaso 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/mattermost5. 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 postgresPaso 2: Abrir el Shell Interactivo de PostgreSQL
psqlPaso 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
exit6. Configurar Mattermost
Paso 1: Abrir el Archivo de Configuración de Mattermost
sudo nano /opt/mattermost/config/config.jsonPaso 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.servicePaso 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.targetPaso 3: Habilitar e Iniciar el Servicio Mattermost
sudo systemctl daemon-reload
sudo systemctl enable mattermost
sudo systemctl start mattermostPaso 4: Verificar que el Servicio se Está Ejecutando
sudo systemctl status mattermostDeberí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/mattermostPaso 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 -tSalida esperada:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successfulPaso 5: Reiniciar Nginx
sudo systemctl restart nginx9. 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.comCertbot 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-runPaso 3: Reiniciar Nginx
sudo systemctl restart nginxTu 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 nginxProbar Mattermost Directamente en el Puerto 8065
curl -I http://localhost:8065Deberías recibir una respuesta HTTP 200 OK o de redirección.
Completar la Configuración Basada en Web
- Abre tu navegador y navega a
https://your_domain.com - Serás recibido por el asistente de configuración de Mattermost
- Crea tu cuenta de administrador
- Configura tu primer equipo y espacio de trabajo
- Invita a miembros del equipo y comienza a colaborar
Solución de Problemas Comunes
| Problema | Causa Probable | Solución |
|---|---|---|
| El servicio Mattermost falla al iniciar | Credenciales de base de datos incorrectas en config.json | Verifica la cadena DataSource en SqlSettings |
| 502 Bad Gateway en Nginx | Mattermost no se está ejecutando en el puerto 8065 | Ejecuta sudo systemctl restart mattermost |
| Errores de conexión WebSocket | Faltan enc |
