Mattermost 自建团队协作平台:开源的 Slack 替代品

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 付费订阅。

相关推荐
SelectDB21 小时前
Litefuse 开源并推出单进程轻量模式,25 秒就能跑起来的 Agent 可观测与评估平台
运维·后端·自动化运维
XIAOHEZIcode2 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220703 天前
如何搭建本地yum源(上)
运维
大树886 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠6 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质6 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工6 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智6 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_6 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
施努卡机器视觉6 天前
SNK施努卡侧滑门锁上滑轮总成自动化装配线,从零件到组件,全流程精密制造方案
运维·自动化·制造