1. 项目概述
Mattermost是一款开源的团队协作平台,提供消息传递、文件共享、视频会议等功能,是企业内部沟通的理想选择。社区版作为其免费版本,已经能够满足大多数中小团队的需求。本文将详细介绍如何在Linux环境下通过Docker部署Mattermost社区版。
作为一款自托管的Slack替代方案,Mattermost具有以下优势:
- 完全掌控数据,所有信息都存储在自己的服务器上
- 高度可定制,可以根据企业需求进行个性化配置
- 支持丰富的插件和集成
- 社区活跃,更新频繁
2. 环境准备
2.1 系统要求
在开始安装前,请确保你的服务器满足以下最低要求:
- 操作系统:Ubuntu 20.04/22.04或CentOS 7/8
- CPU:2核以上
- 内存:4GB以上
- 磁盘空间:至少10GB可用空间
- Docker版本:20.10.0或更高
- Docker Compose版本:1.29.0或更高
提示:虽然Mattermost可以在更低配置上运行,但为了保证良好的使用体验,建议在生产环境使用更高配置。
2.2 安装Docker和Docker Compose
如果你的系统尚未安装Docker,可以按照以下步骤进行安装:
对于Ubuntu系统:
bash复制# 更新软件包索引
sudo apt-get update
# 安装必要的依赖
sudo apt-get install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
# 添加Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# 添加Docker仓库
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
# 安装Docker引擎
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
# 验证Docker是否安装成功
sudo docker run hello-world
对于CentOS系统:
bash复制# 卸载旧版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
# 安装必要依赖
sudo yum install -y yum-utils
# 添加Docker仓库
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
# 安装Docker引擎
sudo yum install -y docker-ce docker-ce-cli containerd.io
# 启动Docker服务
sudo systemctl start docker
# 验证Docker是否安装成功
sudo docker run hello-world
安装Docker Compose:
bash复制# 下载最新版Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 赋予执行权限
sudo chmod +x /usr/local/bin/docker-compose
# 验证安装
docker-compose --version
3. 下载和配置Mattermost
3.1 获取Mattermost Docker文件
首先,我们需要从GitHub获取Mattermost的Docker部署文件:
bash复制# 创建安装目录
sudo mkdir -p /data/install/mattermost-docker
cd /data/install/mattermost-docker
# 克隆仓库
git clone https://github.com/mattermost/docker .
3.2 配置Docker代理(可选)
如果你的服务器位于内网或需要代理才能访问外部资源,可以配置Docker代理:
bash复制# 创建或编辑Docker服务配置文件
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo nano /etc/systemd/system/docker.service.d/http-proxy.conf
添加以下内容(根据实际情况修改代理地址):
code复制[Service]
Environment="HTTP_PROXY=http://192.168.10.84:8087"
Environment="HTTPS_PROXY=http://192.168.10.84:8087"
应用配置并重启Docker:
bash复制sudo systemctl daemon-reload
sudo systemctl restart docker
3.3 修改配置文件
我们需要修改两个关键配置文件:.env和docker-compose.yml。
编辑.env文件:
bash复制nano /data/install/mattermost-docker/.env
主要修改以下参数:
code复制DOMAIN=your-domain.com
POSTGRES_USER=mmuser
POSTGRES_PASSWORD=your_secure_password
POSTGRES_DB=mattermost
MM_USERNAME=mmuser
MM_PASSWORD=your_secure_password
MM_DBNAME=mattermost
编辑docker-compose.yml文件:
bash复制nano /data/install/mattermost-docker/docker-compose.yml
将所有服务名称修改为以mm-开头,例如:
yaml复制services:
postgres:
container_name: mm-postgres
...
mattermost:
container_name: mm-mattermost
...
nginx:
container_name: mm-nginx
...
4. 启动Mattermost服务
4.1 拉取Docker镜像
在配置好代理后,拉取所需的Docker镜像:
bash复制cd /data/install/mattermost-docker
docker-compose pull
这将下载以下镜像:
- postgres:18-alpine (约281MB)
- nginx:alpine (约61.9MB)
- mattermost/mattermost-team-edition:10.11.8 (约499MB)
4.2 移除代理设置(如果之前配置了)
镜像下载完成后,建议移除代理设置以提高安全性:
bash复制sudo rm /etc/systemd/system/docker.service.d/http-proxy.conf
sudo systemctl daemon-reload
sudo systemctl restart docker
4.3 启动容器
使用以下命令启动所有容器:
bash复制docker-compose up -d
检查容器状态:
bash复制docker ps
你应该看到类似以下的输出:
code复制CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a1b2c3d4e5f6 mattermost/mattermost-team-edition "/entrypoint.sh matt..." 2 minutes ago Up 2 minutes (healthy) 8065/tcp, 8074-8075/tcp, 8077-8078/tcp, 6443/tcp, 6443/udp mm-mattermost
b2c3d4e5f6a1 postgres:18-alpine "docker-entrypoint.s..." 2 minutes ago Up 2 minutes 5432/tcp mm-postgres
c3d4e5f6a1b2 nginx:alpine "/docker-entrypoint...." 2 minutes ago Up 2 minutes 0.0.0.0:5080->80/tcp, :::5080->80/tcp, 0.0.0.0:5443->443/tcp, :::5443->443/tcp mm-nginx
5. 访问和配置Mattermost
5.1 访问Mattermost
根据你的配置,可以通过以下方式访问Mattermost:
- HTTP: http://
:5080 (会自动重定向到HTTPS) - HTTPS: https://
:5443 - 域名: https://mm.your-domain.com:5443
注意:如果你使用域名访问,请确保DNS记录已正确指向你的服务器IP地址。
5.2 初始设置
首次访问时,需要完成以下步骤:
- 创建管理员账号
- 设置团队名称
- 配置团队URL
- 邀请团队成员(可选)
5.3 配置文件位置
了解以下关键文件位置对后续维护很重要:
- 安装目录: /data/install/mattermost-docker
- 环境配置: /data/install/mattermost-docker/.env
- 数据目录: /data/install/mattermost-docker/volumes
- PostgreSQL数据: /data/install/mattermost-docker/volumes/db/var/lib/postgresql/data
- Mattermost数据: /data/install/mattermost-docker/volumes/app/mattermost
- Nginx配置: /data/install/mattermost-docker/volumes/web/nginx
6. 常见问题与解决方案
6.1 容器启动失败
如果容器启动失败,可以检查日志:
bash复制docker logs mm-postgres
docker logs mm-mattermost
docker logs mm-nginx
常见问题及解决方案:
-
端口冲突:检查5080和5443端口是否被占用
bash复制netstat -tuln | grep -E '5080|5443'如果被占用,可以修改
docker-compose.yml中的端口映射 -
数据库连接问题:确保
.env文件中的数据库凭据与docker-compose.yml中的一致 -
磁盘空间不足:清理不需要的镜像或扩展磁盘空间
bash复制
docker system prune
6.2 HTTPS证书问题
如果你使用自签名证书或Let's Encrypt证书,可能需要:
- 将证书文件放入
/data/install/mattermost-docker/volumes/web/cert/ - 修改Nginx配置以使用正确的证书路径
6.3 性能优化
对于生产环境,建议进行以下优化:
-
增加Mattermost的内存限制
yaml复制# 在docker-compose.yml中 mattermost: environment: - MM_SERVICESETTINGS_MAXIMUMLOGINS=500 - MM_SERVICESETTINGS_SESSIONLENGTHWEBINDAYS=30 deploy: resources: limits: memory: 2G -
配置数据库性能参数
yaml复制# 在docker-compose.yml中 postgres: environment: - POSTGRES_DB=mattermost - POSTGRES_USER=mmuser - POSTGRES_PASSWORD=your_secure_password - POSTGRES_INITDB_ARGS=--encoding=UTF-8 --lc-collate=C --lc-ctype=C
7. 维护与备份
7.1 定期备份
建议设置定期备份策略,包括:
-
数据库备份
bash复制docker exec mm-postgres pg_dump -U mmuser mattermost > mattermost_backup_$(date +%Y%m%d).sql -
配置文件备份
bash复制tar czvf mattermost_config_$(date +%Y%m%d).tar.gz /data/install/mattermost-docker/.env /data/install/mattermost-docker/docker-compose.yml -
数据文件备份
bash复制tar czvf mattermost_data_$(date +%Y%m%d).tar.gz /data/install/mattermost-docker/volumes
7.2 升级Mattermost
升级步骤:
-
停止当前服务
bash复制
docker-compose down -
备份数据和配置(如上所述)
-
拉取新版本镜像
bash复制
docker-compose pull -
启动新版本
bash复制
docker-compose up -d -
验证升级
bash复制docker exec mm-mattermost mattermost version
7.3 监控与日志
建议设置日志轮转和监控:
-
配置Docker日志驱动
json复制// 在/etc/docker/daemon.json中 { "log-driver": "json-file", "log-opts": { "max-size": "10m", "max-file": "3" } } -
使用Prometheus监控(可选)
- 在Mattermost配置中启用Prometheus指标
- 配置Prometheus抓取Mattermost指标
8. 高级配置
8.1 邮件通知配置
要让Mattermost发送通知邮件,需要配置SMTP设置:
bash复制nano /data/install/mattermost-docker/volumes/app/mattermost/config/config.json
添加或修改以下部分:
json复制"EmailSettings": {
"EnableSignUpWithEmail": true,
"EnableSignInWithEmail": true,
"EnableSignInWithUsername": true,
"SendEmailNotifications": true,
"RequireEmailVerification": true,
"FeedbackName": "Mattermost",
"FeedbackEmail": "noreply@your-domain.com",
"SMTPUsername": "your-smtp-username",
"SMTPPassword": "your-smtp-password",
"SMTPServer": "smtp.your-domain.com",
"SMTPPort": "587",
"ConnectionSecurity": "STARTTLS",
"InviteSalt": "your-invite-salt"
}
重启Mattermost容器使配置生效:
bash复制docker-compose restart mattermost
8.2 插件管理
Mattermost支持丰富的插件扩展功能:
-
启用插件系统
bash复制docker exec mm-mattermost mattermost config set PluginSettings.Enable true docker exec mm-mattermost mattermost config set PluginSettings.EnableUploads true docker-compose restart mattermost -
安装插件示例(如Jira插件)
bash复制cd /data/install/mattermost-docker/volumes/app/mattermost/plugins wget https://plugins.mattermost.com/release/mattermost-plugin-jira-v3.0.0.tar.gz tar xzf mattermost-plugin-jira-v3.0.0.tar.gz rm mattermost-plugin-jira-v3.0.0.tar.gz docker-compose restart mattermost
8.3 主题定制
你可以自定义Mattermost的外观:
-
修改主题颜色
bash复制docker exec mm-mattermost mattermost config set TeamSettings.CustomThemeSchemes '[{ "name": "Custom Theme", "sidebarBg": "#145dbf", "sidebarText": "#ffffff", "sidebarUnreadText": "#ffffff", "sidebarTextHoverBg": "#1a6edb", "sidebarTextActiveBorder": "#57b5f0", "sidebarTextActiveColor": "#ffffff", "sidebarHeaderBg": "#1153ab", "sidebarHeaderTextColor": "#ffffff" }]' -
上传自定义logo
bash复制cp your-logo.png /data/install/mattermost-docker/volumes/app/mattermost/data/ docker exec mm-mattermost mattermost config set TeamSettings.SiteName "Your Company" docker exec mm-mattermost mattermost config set TeamSettings.CustomBrandImage true docker-compose restart mattermost
9. 安全加固
9.1 防火墙配置
建议配置防火墙只允许必要的端口:
bash复制# 对于UFW
sudo ufw allow 5080/tcp
sudo ufw allow 5443/tcp
sudo ufw enable
# 对于firewalld
sudo firewall-cmd --permanent --add-port=5080/tcp
sudo firewall-cmd --permanent --add-port=5443/tcp
sudo firewall-cmd --reload
9.2 数据库安全
加强PostgreSQL安全:
-
修改默认端口(可选)
yaml复制# 在docker-compose.yml中 postgres: ports: - "5433:5432" -
限制数据库连接
bash复制docker exec -it mm-postgres psql -U mmuser mattermost然后执行:
sql复制ALTER SYSTEM SET max_connections = '100'; ALTER SYSTEM SET shared_buffers = '1GB';
9.3 定期安全更新
保持系统安全:
bash复制# 更新系统
sudo apt-get update && sudo apt-get upgrade -y
# 更新Docker镜像
docker-compose pull
docker-compose up -d
10. 故障排除与技术支持
10.1 常见错误
-
502 Bad Gateway:
- 检查Nginx和Mattermost容器是否都在运行
- 查看Nginx错误日志:
bash复制
docker logs mm-nginx
-
数据库连接失败:
- 检查PostgreSQL日志:
bash复制
docker logs mm-postgres - 验证数据库凭据是否正确
- 检查PostgreSQL日志:
-
上传文件失败:
- 检查存储目录权限:
bash复制chown -R 2000:2000 /data/install/mattermost-docker/volumes/app/mattermost/data
- 检查存储目录权限:
10.2 获取帮助
如果遇到无法解决的问题,可以通过以下渠道获取帮助:
- Mattermost官方文档:https://docs.mattermost.com/
- GitHub Issues:https://github.com/mattermost/mattermost-server/issues
- 社区论坛:https://forum.mattermost.com/
10.3 性能监控
建议设置基本性能监控:
-
使用Docker内置命令:
bash复制
docker stats -
配置Mattermost性能监控:
bash复制docker exec mm-mattermost mattermost config set MetricsSettings.Enable true docker exec mm-mattermost mattermost config set MetricsSettings.ListenAddress ":8067" docker-compose restart mattermost
然后可以通过http://your-server:8067/metrics访问性能指标。