最稳方式是用 docker compose 部署 mattermost,必须指定 docker-compose.without-nginx.yml 使服务监听宿主机 8065 端口;.env 中 domain 应填可直连的 ip(如 192.168.1.100)而非域名;持久化目录权限需设为 uid 2000:2000;外网访问前须放行防火墙及云厂商安全组的 8065 端口。

直接用 Docker 部署最稳,不推荐源码编译或手动解压二进制包——后者要自己配 systemd、权限、数据库连接、反向代理,出错率高且升级麻烦。
docker compose 部署 Mattermost 时 docker-compose.yml 必须禁用 Nginx
官方仓库默认带 docker-compose.with-nginx.yml,但本地测试或内网使用时,它会把 8065 端口藏在 Nginx 后面,导致你访问 http://IP:8065 打不开;而直接用 docker-compose.without-nginx.yml 才能让 Mattermost 监听宿主机的 8065 端口。
启动命令必须明确指定该文件:
docker compose -f docker-compose.yml -f docker-compose.without-nginx.yml up -d
常见错误现象:
- 浏览器访问
http://192.168.1.100:8065显示 “Connection refused” -
docker ps看到mattermost-app容器在运行,但netstat -tuln | grep 8065没有监听
原因就是没加 -f docker-compose.without-nginx.yml,容器实际监听的是内部网络端口(如 8065 只对 mattermost-db 可见)。
.env 文件里 DOMAIN 不是域名,而是可被客户端直连的 IP 或主机名
很多人填 DOMAIN=example.com,结果桌面客户端或手机 App 连不上——因为本地局域网根本解析不了这个域名。此时应填宿主机真实 IP,比如 DOMAIN=192.168.1.100 或 DOMAIN=mattermost.local(前提是局域网 DNS 或 hosts 已配好)。
这个值会影响:
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
- Mattermost 生成邮件链接里的 Host 头
- 桌面客户端自动填充服务器地址
- Websocket 连接的 origin 校验(填错会导致登录后白屏、消息不推送)
改完 .env 后必须重启容器:docker compose down && docker compose -f docker-compose.yml -f docker-compose.without-nginx.yml up -d
持久化目录权限必须设为 UID 2000,不是 mattermost 用户名
Docker 镜像里 Mattermost 进程以 UID 2000 运行,不是系统用户 mattermost。所以这一步不能写 chown mattermost:mattermost ./volumes/app/mattermost,否则容器启动失败,日志里报:
failed to create directory /mattermost/config: permission denied
正确做法是:
mkdir -p ./volumes/app/mattermost/{config,data,logs,plugins,client/plugins,bleve-indexes}
sudo chown -R 2000:2000 ./volumes/app/mattermost
注意:2000 是硬编码在官方镜像里的,不可修改;CentOS/Rocky 上若用 useradd --system 创建的用户默认 UID 从 1000 起,和镜像不匹配,所以别碰系统用户。
外网访问前先确认 8065 端口在防火墙和云厂商安全组中已放行
即使容器跑起来了、curl http://localhost:8065 返回 HTML,外网仍可能连不上。关键检查点:
-
sudo ufw status(Ubuntu)或sudo firewall-cmd --list-ports(Rocky/CentOS)是否包含8065/tcp - 阿里云/腾讯云控制台的“安全组规则”,入方向是否开放了
8065端口(来源 IP 建议先设为0.0.0.0/0测试) - 家用路由器是否做了端口映射(
WAN:8065 → LAN:192.168.1.100:8065)
别急着上内网穿透工具(如路由侠),先确保本地局域网其他设备能用 http://192.168.1.100:8065 正常打开初始化页面——这是验证部署成功的最小闭环。










