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

相关推荐
云游牧者1 小时前
K8S灰度发布与蓝绿部署实战指南-CSDN博客
运维·云原生·容器·kubernetes·发布策略
南境十里·墨染春水1 小时前
linux学习进展 libevent
linux·运维·学习
kanyun1231 小时前
在Docker容器中运行Docker:Docker-in-Docker(DinD)全面指南
运维·docker·容器
Agent产品评测局1 小时前
国产vs海外AI Agent方案,制造业场景适配性横评:2026年企业级自动化选型全景观察
运维·人工智能·ai·chatgpt·自动化
落日流年1 小时前
欧拉操作系统部署OceanBase集群
运维·oceanbase
开开心心就好1 小时前
直接减少蓝光辐射的专业护眼工具
linux·运维·服务器·智能手机·excel·java-rabbitmq·sdkman
唔661 小时前
Android在局域网中搭建 MQTT服务器 协议V3.1.1
android·运维·服务器
Shadow(⊙o⊙)1 小时前
进程分析—从操作系统到Linux内核深入
linux·运维·服务器·开发语言·网络·c++·后端
Championship.23.241 小时前
AI驱动的DevOps革命:智能运维系统实战指南
运维·人工智能·devops