所有托管服务节省 15%

测试技能,享折扣

使用代码: Skills 开始使用
China
Linux 管理

如何在 Ubuntu 上安装 Mattermost:完整分步指南

Mattermost 是一个功能强大的开源消息传递和团队协作平台,为组织提供对其通信基础设施的完全控制。作为 Slack 和 Microsoft Teams 的自托管替代方案,Mattermost 提供企业级安全性、完整的数据所有权和广泛的自定义选项——所有这些都无需支付定期的 SaaS 订阅费用。

本综合指南将逐步指导您在 Ubuntu 服务器上安装和配置 Mattermost,包括 PostgreSQL 数据库设置、Nginx 反向代理配置和 SSL 证书集成。

1. 前置条件

在开始之前,请确保满足以下要求:

  • 运行 Ubuntu 20.04 或 Ubuntu 22.04 LTS 的服务器(Ubuntu 18.04 已停止支持,不建议用于生产环境)
  • 服务器上的 Sudo 或 root 权限
  • 一个域名指向您服务器的 IP 地址(强烈建议用于生产部署)
  • 最低硬件配置:1 vCPU、2 GB RAM、10 GB 磁盘空间(适用于小型团队);大型部署需相应扩展

> 托管提示:为了顺利部署 Mattermost,请考虑使用 AlexHost 提供的可靠 VPS 托管方案。AlexHost VPS 实例配备 SSD 存储、完整 root 访问权限和有保障的正常运行时间,非常适合自托管协作工具。

2. 更新您的系统

始终首先刷新您的软件包索引并应用所有待处理的安全和系统更新:

sudo apt update
sudo apt upgrade -y

如果应用了内核更新,请重新启动服务器:

sudo reboot

3. 安装所需依赖项

Mattermost 依赖三个关键组件:PostgreSQL(数据库)、Nginx(反向代理)和 Certbot(SSL 证书管理)。

一步安装所有必需的包:

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

验证 PostgreSQL 和 Nginx 正在运行:

sudo systemctl status postgresql
sudo systemctl status nginx

两个服务都应该显示 active (running)

4. 下载并安装 Mattermost

Step 1: 下载最新的 Mattermost 版本

访问官方 Mattermost 发布页面以找到最新的稳定版本。使用 wget 直接将其下载到您的服务器:

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

> 注意:9.5.0 替换为最新的可用版本号。始终使用最新的稳定版本以获得安全补丁和新功能。

Step 2: 解压存档

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

Step 3: 将 Mattermost 移动到系统目录

将提取的文件夹移动到 /opt,这是可选第三方软件的标准 Linux 位置:

sudo mv mattermost /opt/mattermost

Step 4: 创建专用的 Mattermost 系统用户

以专用的非特权用户身份运行 Mattermost 是一个关键的安全最佳实践:

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

Step 5: 创建数据目录并设置权限

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

5. 设置 PostgreSQL 数据库

Mattermost 需要一个专用的 PostgreSQL 数据库和用户。请仔细按照以下步骤操作。

步骤 1:切换到 PostgreSQL 系统用户

sudo -i -u postgres

步骤 2:打开 PostgreSQL 交互式 Shell

psql

步骤 3:创建数据库、用户并授予权限

逐个执行以下 SQL 命令:

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

> 安全提示:YourStrongPassword123! 替换为强密码。使用密码管理器生成并安全地存储它。

对于 PostgreSQL 15 及更高版本,您还需要授予 schema 权限:

c mattermost_db
GRANT ALL ON SCHEMA public TO mattermost;

步骤 4:退出 PostgreSQL Shell 并返回到您的用户

q
exit

6. 配置 Mattermost

Step 1: 打开 Mattermost 配置文件

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

Step 2: 更新数据库连接设置

找到 SqlSettings 块并使用您的 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
}

Step 3: 配置网站 URL

找到 ServiceSettings 块并设置您的域名:

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

your_domain.com 替换为您的实际域名。

Step 4: 保存并退出

Ctrl+X,然后按 Y,然后按 Enter 以保存并关闭文件。

7. 创建 Systemd 服务

将 Mattermost 作为 systemd 服务运行可确保它在启动时自动启动并在失败时重新启动 — 这对任何生产部署都至关重要。

步骤 1:创建服务文件

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

步骤 2:添加服务配置

粘贴以下内容:

[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

步骤 3:启用并启动 Mattermost 服务

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

步骤 4:验证服务是否正在运行

sudo systemctl status mattermost

您应该看到 active (running)。Mattermost 默认在端口 8065 上监听。

8. 将 Nginx 配置为反向代理

Nginx 充当反向代理,将来自端口 80/443 的传入 HTTP/HTTPS 流量转发到 Mattermost 的内部端口 8065。这还启用了 WebSocket 支持,Mattermost 需要此支持来实现实时消息传递。

步骤 1:创建 Nginx 配置文件

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

步骤 2:添加反向代理配置

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;
    }
}

your_domain.com 替换为您的实际域名。

步骤 3:启用站点配置

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

步骤 4:测试 Nginx 配置的语法错误

sudo nginx -t

预期输出:

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

步骤 5:重启 Nginx

sudo systemctl restart nginx

9. 使用 SSL (HTTPS) 保护 Mattermost

在任何生产环境中,通过 HTTPS 运行 Mattermost 是强制性的。它加密用户和服务器之间的所有通信,保护凭据和消息免受拦截。

> SSL 轻松搞定: AlexHost 为所有类型的网站和应用程序提供价格实惠的 SSL 证书。或者,使用下面的免费 Let’s Encrypt 方法。

步骤 1:使用 Certbot 获取免费 SSL 证书

sudo certbot --nginx -d your_domain.com

Certbot 将自动:

  • 验证域名所有权
  • 颁发 Let’s Encrypt 证书
  • 修改您的 Nginx 配置以启用 HTTPS
  • 设置自动证书续期

步骤 2:验证自动续期

sudo certbot renew --dry-run

步骤 3:重启 Nginx

sudo systemctl restart nginx

您的 Mattermost 实例现在可在 https://your_domain.com 访问。

10. 最终验证

检查所有服务是否正在运行

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

直接在端口 8065 上测试 Mattermost

curl -I http://localhost:8065

您应该收到 HTTP 200 OK 或重定向响应。

完成基于网络的设置

  1. 打开浏览器并导航到 https://your_domain.com
  2. 您将看到 Mattermost 设置向导
  3. 创建您的管理员账户
  4. 配置您的第一个团队和工作区
  5. 邀请团队成员并开始协作

故障排除常见问题

问题可能原因解决方案
Mattermost 服务启动失败config.json 中的数据库凭证不正确仔细检查 SqlSettings 中的 DataSource 字符串
Nginx 中的 502 Bad GatewayMattermost 未在端口 8065 上运行运行 sudo systemctl restart mattermost
WebSocket 连接错误Nginx 中缺少 WebSocket 代理头验证 Nginx 配置中的 WebSocket 位置块
SSL 证书错误域名未指向服务器 IP更新 DNS A 记录并等待传播
数据库连接被拒绝PostgreSQL 未运行运行 sudo systemctl start postgresql

为什么选择可靠的 Mattermost 主机?

您的 Mattermost 实例的性能和可靠性在很大程度上取决于底层基础设施。对于小型到中型团队,配置良好的 VPS 是理想选择。对于拥有大量消息的大型组织,请考虑升级到专用服务器以获得最大性能、隔离和控制。

如果您需要为 Mattermost 部署获取域名,AlexHost 提供具有竞争力的域名注册和完整的 DNS 管理。如果您在 Mattermost 旁边运行多个服务,共享网络主机或带有 cPanel 的 VPS 可以通过直观的控制面板简化管理。

总结

您已成功在 Ubuntu 上安装并配置了 Mattermost,包括:

  • ✅ PostgreSQL 作为后端数据库
  • ✅ Nginx 作为生产级反向代理,支持 WebSocket
  • ✅ Let’s Encrypt SSL 用于加密的 HTTPS 连接
  • ✅ systemd 服务用于自动启动和崩溃恢复
  • ✅ 正确的文件权限和专用系统用户以确保安全

Mattermost 现已准备好作为您团队的私有、自托管通信中心——完全由您控制,数据不会离开您的基础设施。