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

相关推荐
EMTime16 小时前
Docker运行OpenWRT
运维·docker·容器
lolo大魔王16 小时前
Linux 文件系统超全面详解(原理、结构、挂载、分区、inode、日志、管理命令)
linux·运维·服务器
zyl8372119 小时前
Docker 使用手册
运维·docker·容器
古月方枘Fry19 小时前
MGRE实验
运维·服务器
stolentime19 小时前
FreeDomain 本地开发环境快速搭建指南
运维·服务器·网络
bush421 小时前
嵌入式linux学习记录四
linux·运维·学习
lihao lihao1 天前
软硬链接
linux·运维·服务器
TOWE technology1 天前
智能安防监控系统如何做好防雷?——视频信号SPD综合应用方案解析
运维·服务器·防雷产品·信号保护·信号防雷·spd
楼田莉子1 天前
Docker学习:Docker介绍及其架构介绍
运维·后端·学习·docker·容器·架构
大明者省1 天前
IIS 端口绑定正常访问的原理说明与常见误区澄清
运维·服务器·笔记