如何在Ubuntu上搭建Mattermost团队协作平台?

来源:PostgreSQL教程作者:蚂蚁头衔:草根站长
导读:本期聚焦于蚂蚁创作的《如何在Ubuntu上搭建Mattermost团队协作平台?》,敬请观看详情。Mattermost的部署本质上由三层组成:PostgreSQL负责持久化存储,Go编写的应用服务处理消息与WebSocket实时通信,Nginx作为统一入口接管TLS与反向代理。在Ubuntu服务器上完成这套架构,需要先创建独立的数据库用户并调整认证方式,然后下载官方二进制包解压到/opt目录,通过config.json连接数据库并指定站点地址。接着编写systemd单元文件让进程开机自启、异常自动拉起,再用Nginx把公网80与443端口流量代理到本机的8065端口,并利用Certbot签发HTTPS证书。按照这个顺序操作后,访问服务器域名即可进入初始化页面,创建管理员账号、建立团队并开始使用。整个过程不依赖外部SaaS服务,数据完全保留在自己的服务器上,适合对合规性和消息留存有要求的团队。后续还需关注数据库备份、日志轮转和版本升级。

搭建Mattermost团队协作平台并不需要复杂的基础设施,理解它的组件关系后,在Ubuntu上可以按步骤稳定完成部署。Mattermost服务本身是一个由Go语言编写的单体应用,负责消息收发、WebSocket实时通信和Web界面渲染,数据持久化则依赖PostgreSQL数据库。生产环境中通常还会在前面放置Nginx,由它处理公网HTTP/HTTPS请求、证书终止和反向代理转发。下面的内容会从一台全新的Ubuntu服务器开始,逐步完成数据库配置、应用安装、进程守护和反向代理设置。

如何在Ubuntu上搭建Mattermost团队协作平台?

一、环境准备与基础依赖安装

首先需要一台具备公网访问能力的Ubuntu服务器,推荐使用长期支持版本,例如Ubuntu 22.04或20.04。硬件方面,小型团队起步配置2核CPU、4GB内存即可满足日常使用,如果文件上传频繁,建议单独挂载数据盘或使用更大的系统盘。部署前还需要准备一个已解析到服务器IP的域名,后续HTTPS证书签发和Nginx反向代理都会用到这个域名。

登录服务器后,建议使用具备sudo权限的普通用户操作,而不是直接使用root。先执行系统更新,再安装PostgreSQL、wget、tar和Nginx等核心软件包。PostgreSQL是Mattermost官方推荐的关系型数据库,经历过大量生产环境验证;wget用于下载Mattermost官方发布的二进制包;tar负责解压;Nginx则作为后续的反向代理服务。

sudo apt update
sudo apt upgrade -y
sudo apt install -y postgresql postgresql-contrib wget tar nginx

安装完成后,PostgreSQL服务通常会自动启动,可以通过systemctl status postgresql查看运行状态。Nginx也是以系统服务形式存在,但此时不需要立即调整配置,等Mattermost应用就绪后再统一处理。接下来先完成数据库层的准备工作,因为后续应用启动时会依赖数据库连接。

二、创建PostgreSQL数据库并调整认证

PostgreSQL安装后默认只允许本机通过Unix socket连接,并且普通数据库用户需要与操作系统用户映射。我们需要为Mattermost创建一个独立数据库、一个专用数据库账号,并设置密码。切换到postgres系统用户后,进入psql命令行执行建库和授权操作。

sudo -u postgres psql
CREATE DATABASE mattermost;
CREATE USER mmuser WITH PASSWORD 'YourStrongPassword';
GRANT ALL PRIVILEGES ON DATABASE mattermost TO mmuser;
ALTER DATABASE mattermost OWNER TO mmuser;
\q

这里将数据库mattermost的所有者设置为mmuser,这样Mattermost应用在连接后可以执行建表、索引维护、迁移等操作。密码需要替换成足够复杂的实际密码,避免使用示例值。创建完成后,还需要确认客户端认证方式。PostgreSQL默认的本地认证可能是peer模式,该模式要求数据库用户与操作系统用户同名,而mmuser没有对应的系统用户,连接会被拒绝。

检查/etc/postgresql/目录下当前版本对应的pg_hba.conf文件,找到本地IPv4和IPv6连接规则。通常需要将127.0.0.1/32::1/128的认证方式从peer改为md5scram-sha-256。修改完成后重新加载PostgreSQL配置,并使用密码方式测试连接是否成功。

sudo systemctl reload postgresql
psql -h 127.0.0.1 -U mmuser -d mattermost -W

输入密码后如果能进入psql命令行,说明数据库认证已生效。此时可以退出,继续部署Mattermost应用本体。生产环境中建议只允许Mattermost服务通过本地回环地址连接数据库,不要将PostgreSQL的监听地址暴露到公网,这样可以减少被扫描和暴力破解的风险。

三、安装Mattermost并配置systemd服务

Mattermost官方提供打包好的Linux二进制文件,下载后解压到目标目录即可运行。先创建用于运行Mattermost的专用系统用户,该用户不需要登录Shell,仅用于进程隔离和文件权限管理。下载时注意选择与服务器架构匹配的版本,通常x86_64服务器使用linux-amd64包。

sudo useradd --system --user-group mattermost
cd /opt
sudo wget https://releases.mattermost.com/9.5.2/mattermost-9.5.2-linux-amd64.tar.gz
sudo tar -xvzf mattermost-9.5.2-linux-amd64.tar.gz
sudo mkdir -p /opt/mattermost/data
sudo chown -R mattermost:mattermost /opt/mattermost

解压后的目录结构比较清晰:bin目录存放可执行文件,config目录保存配置文件,data目录保存上传的文件和附件,logs目录记录运行日志。其中数据目录和配置文件是备份时需要重点关注的路径。接下来编辑配置文件config.json,至少修改数据库连接字符串和站点URL两个字段。

sudo sed -i 's|"DataSource": ".*"|"DataSource": "postgres://mmuser:YourStrongPassword@127.0.0.1:5432/mattermost?sslmode=disable&connect_timeout=10"|' /opt/mattermost/config/config.json
sudo sed -i 's|"SiteURL": ".*"|"SiteURL": "https://your.domain.com"|' /opt/mattermost/config/config.json

DataSource中的连接串采用了PostgreSQL URL格式,密码和数据库名需要与前面创建的保持一致。SiteURL要填写用户最终访问使用的完整域名,包括https前缀。这个地址会用于生成WebSocket连接、文件链接和邮件中的跳转链接,填写错误可能导致头像、附件无法正常显示。

为了确认应用能正常启动,可以先使用mattermost用户手工运行一次/opt/mattermost/bin/mattermost,观察控制台输出是否出现监听8065端口的日志。手工运行方便排查数据库连接错误、端口冲突或权限问题,确认无误后终止进程,再通过systemd管理服务。创建服务单元文件可以让Mattermost随系统启动,并在进程异常退出后自动拉起。

sudo tee /etc/systemd/system/mattermost.service <<'EOF'
[Unit]
Description=Mattermost
After=network.target postgresql.service

[Service]
Type=simple
User=mattermost
Group=mattermost
ExecStart=/opt/mattermost/bin/mattermost
Restart=always
RestartSec=10
WorkingDirectory=/opt/mattermost
LimitNOFILE=49152

[Install]
WantedBy=multi-user.target
EOF

注意上面的<<'EOF'在代码块中展示时已经进行了HTML转义,原因是代码块内部的尖括号需要写成实体形式,实际执行时应该使用正常的heredoc语法。服务文件中LimitNOFILE提升了进程可打开的文件句柄数量,这对高并发WebSocket连接和文件上传场景有帮助。保存后重新加载systemd配置,并设置开机自启。

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

状态输出显示active (running)即表示服务已经正常运行。默认监听地址为0.0.0.0:8065,虽然可以直接通过IP访问,但缺少HTTPS和域名管理,不推荐在生产环境直接使用。下一步配置Nginx反向代理,统一处理80和443端口的请求。

四、配置Nginx反向代理并启用HTTPS

Nginx在这里的作用不仅是反向代理,还承担了TLS终止、请求头传递和WebSocket升级等关键任务。Mattermost应用本身不处理HTTPS,而是由Nginx将公网HTTPS请求解密后,再以HTTP形式转发到本机的8065端口。这样做的好处是证书管理集中,应用层无需关心TLS细节,同时Nginx也能更高效地处理静态资源请求。

创建Nginx站点配置文件,将域名请求代理到Mattermost服务。需要特别关注UpgradeConnection头,它们用于WebSocket协议升级,如果缺少这两个请求头,聊天消息将无法实时推送,只能通过轮询获取更新。

server {
    listen 80;
    server_name your.domain.com;

    location / {
        proxy_pass http://127.0.0.1:8065;
        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 Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_http_version 1.1;
        client_max_body_size 100M;
    }
}

配置中的client_max_body_size限制了上传文件的大小,默认Nginx只允许1MB左右,团队协作中常见附件可能超过这个值,因此建议根据实际需求调整。保存配置后,先通过nginx -t检查语法,再重载Nginx。此时使用域名访问站点,Nginx会将请求转发到Mattermost,但仍然是HTTP明文连接。

为了开启HTTPS,使用Certbot自动申请Let's Encrypt证书是最便捷的方式。Certbot支持Nginx插件,可以自动修改Nginx配置并配置证书续期,无需手动处理证书文件。

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d your.domain.com

命令执行过程中会要求输入邮箱,用于证书到期提醒;完成后Certbot会自动改写Nginx配置,把80端口请求重定向到443端口,并加载SSL证书。浏览器再次访问时,地址栏应显示安全锁标志,Mattermost的HTTPS部署就完成了。Let's Encrypt证书有效期为90天,Certbot通常会创建systemd定时器自动续期,可以用systemctl status certbot.timer确认续期任务处于启用状态。

五、初始化Mattermost与日常运维建议

浏览器打开站点域名后,会进入Mattermost初始化流程。首次访问需要创建管理员账号,并设置团队名称、URL标识等基础信息。完成初始化后,建议先进入系统控制台检查各项配置,尤其是通知选项。默认情况下邮件通知可能不可用,生产环境建议接入SMTP服务器,否则用户注册、密码重置和消息通知等功能会受到影响。

安全方面,防火墙只开放22、80和443端口,禁止外部直接访问8065端口。可以使用UFW快速配置规则,允许SSH、HTTP和HTTPS,并阻止其他入站连接。同时检查Mattermost控制台中的“注册”选项,根据团队实际情况选择关闭开放注册,或仅允许特定邮箱域名注册,避免无关人员进入协作空间。

sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status

日常运维中,数据库和文件数据需要定期备份。PostgreSQL可以使用pg_dump导出逻辑备份,Mattermost的data目录存放着上传附件和头像,也需要一并归档。推荐将备份任务写入cron或systemd timer,并定期验证恢复流程,确保备份文件真实可用。

sudo -u postgres pg_dump mattermost > mattermost_backup.sql
sudo tar -czf mattermost_data_backup.tar.gz /opt/mattermost/data

升级Mattermost时,应先停止服务,备份数据库和文件数据,再下载新版本解压覆盖旧版本,最后重新启动并观察迁移日志。不要在服务运行时直接替换二进制文件,也不建议跳过多个大版本升级。结合前面的PostgreSQL、systemd和Nginx配置,这套自托管协作平台可以稳定运行,并支持后续增加多节点、负载均衡等更复杂的架构演进。

MattermostUbuntu服务器团队协作部署修改时间:2026-08-29 01:14:13

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。