Mattermost 自建团队协作平台:开源的 Slack 替代品
Slack 免费版只保留 90 天消息记录,付费版很贵。Mattermost 是开源的 Slack 替代品,功能几乎完全对应:频道、私信、文件共享、消息搜索、Webhook 集成、App 插件,还支持 Slack 格式的 Incoming Webhook,很多 Slack 集成不用改代码就能迁移。适合企业团队和开源社区搭建私有协作平台。
Mattermost vs Slack
| 功能 | Mattermost(自建) | Slack 免费版 |
|---|---|---|
| 消息历史 | 无限 | 90 天 |
| 集成数量 | 无限 | 10 个 |
| 数据归属 | 完全自控 | Slack 服务器 |
| 文件存储 | 自定义 | 5GB 总计 |
| 费用 | 服务器成本 | 免费/付费 |
服务器配置
- 20 人以内团队:2 核 4GB,40GB 硬盘
- 50 人以内:4 核 8GB,100GB 硬盘
我把 Mattermost 部署在雨云服务器 rainyun+com 的 4 核 8G 机型上,30 人团队日常使用非常流畅。注册填优惠码 2026off 领 5 折优惠券,比 Slack 付费版便宜很多。
Docker Compose 部署
bash
mkdir -p ~/mattermost/{config,data,logs,plugins,client-plugins,bleve-indexes}
cd ~/mattermost
# 设置目录权限(Mattermost 使用 UID 2000 运行)
sudo chown -R 2000:2000 ~/mattermost
yaml
# docker-compose.yml
version: "3.8"
services:
postgres:
image: postgres:15-alpine
container_name: mattermost-db
environment:
POSTGRES_USER: mattermost
POSTGRES_PASSWORD: mattermost_password
POSTGRES_DB: mattermost
volumes:
- postgres_data:/var/lib/postgresql/data
restart: unless-stopped
mattermost:
image: mattermost/mattermost-team-edition:latest
container_name: mattermost
depends_on:
- postgres
ports:
- "127.0.0.1:8065:8065"
environment:
MM_SQLSETTINGS_DRIVERNAME: postgres
MM_SQLSETTINGS_DATASOURCE: "postgres://mattermost:mattermost_password@postgres/mattermost?sslmode=disable&connect_timeout=10"
MM_SERVICESETTINGS_SITEURL: "https://chat.你的域名.com"
MM_SERVICESETTINGS_ENABLELOCALMODE: "true"
MM_PLUGINSETTINGS_ENABLE: "true"
volumes:
- ./config:/mattermost/config:rw
- ./data:/mattermost/data:rw
- ./logs:/mattermost/logs:rw
- ./plugins:/mattermost/plugins:rw
- ./client-plugins:/mattermost/client/plugins:rw
- ./bleve-indexes:/mattermost/bleve-indexes:rw
restart: unless-stopped
caddy:
image: caddy:alpine
container_name: caddy
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
- caddy_config:/config
restart: unless-stopped
volumes:
postgres_data:
caddy_data:
caddy_config:
# Caddyfile
chat.你的域名.com {
reverse_proxy mattermost:8065
# WebSocket 支持(实时消息必须)
@websocket {
header Connection *Upgrade*
header Upgrade websocket
}
handle @websocket {
reverse_proxy mattermost:8065
}
}
bash
docker compose up -d
docker compose logs -f mattermost
首次启动需要 1-2 分钟初始化数据库。
初始配置
访问 https://chat.你的域名.com,创建管理员账号,然后创建第一个团队。
强烈建议立即完成的配置:
进入「系统控制台」(System Console):
1. 团队设置 → 取消勾选「允许任何人注册」
(除非你想开放注册)
2. 邮件设置 → 配置 SMTP
服务器:smtp.your-provider.com
端口:587
用户名/密码:邮件账号
3. 文件设置 → 上传文件大小限制(默认 100MB)
4. 安全设置 → 开启多因素认证(推荐)
邀请用户加入
bash
# 方式一:管理员直接创建账号
# 系统控制台 → 用户管理 → 创建用户
# 方式二:生成邀请链接
# 团队页面 → 邀请人员 → 复制邀请链接(有效期可设置)
# 方式三:允许特定邮件域注册
# 系统控制台 → 团队设置 → 允许的邮件域
# 例如填 company.com,只有公司邮箱能注册
配置 Webhook(集成外部服务)
Mattermost 兼容 Slack 的 Incoming Webhook 格式:
bash
# 1. 在 Mattermost 创建 Incoming Webhook
# 集成 → Incoming Webhooks → 添加 Incoming Webhook
# 选择频道,复制 Webhook URL
# 2. 发送消息(兼容 Slack 格式)
curl -X POST https://chat.你的域名.com/hooks/你的webhook_id \
-H "Content-Type: application/json" \
-d '{
"text": "部署完成 ✅",
"username": "deploy-bot",
"icon_emoji": ":rocket:"
}'
与 GitLab/Gitea 集成
Mattermost 有官方的 GitLab 插件,可以实现 Push、MR、Issue 等事件通知到频道:
集成 → 插件市场 → 搜索 GitLab → 安装
插件设置 → 填入 GitLab URL 和 Access Token
命令行管理工具(mmctl)
bash
# 安装 mmctl
wget https://releases.mattermost.com/mmctl/latest/linux_amd64.tar.gz
tar -xzf linux_amd64.tar.gz
sudo mv mmctl /usr/local/bin/
# 登录
mmctl auth login https://chat.你的域名.com --name local --username admin
# 常用命令
mmctl user list # 列出用户
mmctl channel list team-name # 列出频道
mmctl post create --channel team-name:频道名 --message "消息内容"
备份
bash
cat > ~/mattermost/backup.sh << 'EOF'
#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR=~/mattermost-backups
mkdir -p "$BACKUP_DIR"
# 备份数据库
docker exec mattermost-db pg_dump -U mattermost mattermost | \
gzip > "$BACKUP_DIR/db-$DATE.sql.gz"
# 备份上传文件(如果量大,考虑增量备份)
tar -czf "$BACKUP_DIR/data-$DATE.tar.gz" ~/mattermost/data/
find "$BACKUP_DIR" -name "*.gz" -mtime +30 -delete
echo "[$(date)] 备份完成"
EOF
chmod +x ~/mattermost/backup.sh
(crontab -l 2>/dev/null; echo "0 3 * * * ~/mattermost/backup.sh") | crontab -
Mattermost 是企业团队沟通的可靠选择,消息记录无限保存、数据完全自控、支持几乎所有 Slack 能做到的集成。在雨云服务器rainyun 的 4 核 8G 机型上部署,30 人团队日常协作毫无压力,注册填优惠码 2026off 领 5 折优惠券,总成本远低于 Slack 付费订阅。