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

相关推荐
Escalating_xu7 小时前
【Linux 网络编程】手写序列化与反序列化:从 x op y 到能校验的文本协议
linux·运维·网络
润滑卫士7 小时前
油液多参数融合故障诊断:数据级融合与决策级融合方法
运维
李纲明8 小时前
WordPress 后台登录马上被踢回登录页:Cookie 域、HTTPS、盐值和页面缓存怎么查
运维·缓存·https·php·wordpress·cookie
todoitbo8 小时前
在 Ubuntu ARM64 上运行 Q1 V3.0 MuJoCo 模型:加载、步进和单执行器响应
linux·运维·ubuntu·ai·机器人·仿真教程·启元
AR-26710-9 小时前
Linux Day26——传输层与三次握手
linux·运维
额额额对了10 小时前
嵌入式 Linux 实战:i.MX6ULL 上的 CAN 通信与摄像头采集
linux·运维·服务器
RFID科技的魅力11 小时前
2026 年 RFID 资产标签批量制作怎么做?RFID 标签打印机实操指南
运维·人工智能·嵌入式硬件·物联网
灯澜忆梦11 小时前
【Linux】#10 | Linux 终端实用快捷键 + 安装应用
linux·运维·服务器
OnlyEasyCode13 小时前
IIS开放端口转发后端
运维·服务器
合合技术团队13 小时前
合合信息旗下TextIn面向全球市场推出文档处理自动化公有云服务
运维·自动化