Cómo Instalar Mattermost en Ubuntu: Guía Completa Paso a Paso
Mattermost es una plataforma poderosa de mensajería y colaboración en equipo de código abierto 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, incluida la configuración de la base de datos PostgreSQL, la configuración del proxy inverso Nginx e integración de certificados SSL.
1. Requisitos previos
Antes de comenzar, asegúrate de que se cumplan los siguientes requisitos:
- Un servidor con 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 de sudo o root en el servidor
- Un nombre de dominio apuntando 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); aumenta según sea necesario para implementaciones más grandes
> Consejo de hosting: Para un despliegue fluido de Mattermost, considera un plan de VPS Hosting confiable 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. Actualiza 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 estén ejecutándose:
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
Visite la página oficial de versiones de Mattermost para encontrar la última versión estable. Use wget para descargarla directamente a su servidor:
wget https://releases.mattermost.com/9.5.0/mattermost-team-9.5.0-linux-amd64.tar.gz> Nota: Reemplace 9.5.0 con el número de versión más reciente disponible. Siempre use 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
Mueva la carpeta extraída a /opt, que es la ubicación estándar de Linux para software de terceros opcional:
sudo mv mattermost /opt/mattermostPaso 4: Crear un Usuario del Sistema Dedicado para Mattermost
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 versiones 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 garantiza 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
Pegue 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 está en Ejecución
sudo systemctl status mattermostDebería ver active (running). Mattermost escucha en el puerto 8065 de forma predeterminada.
8. Configurar Nginx como Proxy Inverso
Nginx actúa como un proxy inverso, reenviando el tráfico HTTP/HTTPS entrante desde el puerto 80/443 al puerto interno 8065 de Mattermost. Esto también habilita la compatibilidad con WebSocket, que Mattermost requiere para la 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, utiliza 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 del certificado
Paso 2: Verificar 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 Estén Ejecutándose
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 no se inicia | 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 encabezados de proxy WebSocket en Nginx | Verifica el bloque de ubicación WebSocket en la configuración de Nginx |
| Errores de certificado SSL | El dominio no apunta a la IP del servidor | Actualiza el registro DNS A y espera a la propagación |
| Conexión a la base de datos rechazada | PostgreSQL no se está ejecutando | Ejecuta sudo systemctl start postgresql |
¿Por qué elegir un host confiable para Mattermost?
El rendimiento y la confiabilidad de tu instancia de Mattermost dependen en gran medida de la infraestructura subyacente. Para equipos pequeños a medianos, un VPS bien configurado es la opción ideal. Para organizaciones más grandes con altos volúmenes de mensajes, considera actualizar a un Servidor Dedicado para máximo rendimiento, aislamiento y control.
Si necesitas un nombre de dominio para tu implementación de Mattermost, AlexHost ofrece Registro de Dominios competitivo con gestión DNS completa. Y si estás ejecutando múltiples servicios junto a Mattermost, Alojamiento Web Compartido o un VPS con cPanel pueden simplificar la gestión con un panel de control intuitivo.
Resumen
Has instalado y configurado exitosamente Mattermost en Ubuntu con:
- ✅ PostgreSQL como base de datos backend
- ✅ Nginx como proxy inverso de grado producción con soporte WebSocket
- ✅ SSL de Let’s Encrypt para conexiones HTTPS encriptadas
- ✅ Un servicio systemd para inicio automático y recuperación ante fallos
- ✅ Permisos de archivo adecuados y un usuario del sistema dedicado para seguridad
Mattermost ahora está listo para servir como tu centro de comunicación privado y autohospedado para el equipo — completamente bajo tu control, sin que los datos salgan de tu infraestructura.
en todos los servicios de hosting