Mattermost教程:用Docker搭建自己的开源Slack替代品 (团队聊天)

更多云服务器知识,尽在hostol.com

你的团队,是否也正"寄居"在别人的"数字屋檐"下?

你们的每一次头脑风暴、每一次代码评审、每一次深夜的灵感碰撞、甚至每一次关于午饭吃什么的摸鱼闲聊,都以文字、图片和文件的形式,静静地流淌在Slack、钉钉或Discord的服务器上。

这很方便,不是吗?

但你有没有想过,你正在把团队最宝贵的"大脑中枢 "和"集体记忆 ",存放在一个你无法完全掌控的、随时可能因为"服务条款变更"或"免费套餐限制"而让你陷入被动的"出租屋"里?

  • Slack的免费版,只能保留最近90天的消息记录,那些沉淀下来的宝贵讨论,转瞬即逝。
  • 你的所有内部文件、代码片段、甚至账号密码,都在第三方服务器上"裸奔",存在着潜在的隐私和安全风险。
  • 付费版的价格,对于一个刚刚起步的小团队来说,是一笔不小的开销。

那么,有没有一种方法,能让我们拥有一个100%私有、数据永不外泄、消息永久保存、功能无限扩展、并且成本极低的团队"数字客厅"呢?

当然有!今天,我们将亲手,为我们的团队,建造一座属于我们自己的、固若金汤的"数字总部大楼 "。我们的建造工具,就是开源世界里,最受欢迎的Slack替代品------Mattermost

"蓝图"展示:为什么是Mattermost?

Mattermost,不仅仅是一个"聊天软件"。它是一个完整的、开源的、可以被你私有化部署的"团队协作平台"。

  • 它像什么? 它就像一个你可以自己动手建造和运营的"私人会所"。这个会所里,有公开的"大厅"(公开频道),有需要凭会员卡才能进入的"VIP包间"(私有频道),还可以进行"一对一的密谈"(私聊)。
  • 核心优势:
    1. 数据主权,绝对安全: 所有的聊天记录、所有上传的文件,都只存放在你自己的服务器上。你的数据,只属于你。
    2. 无限制: 无限的消息历史,无限的用户数,无限的频道数,无限的集成......唯一的限制,就是你服务器的硬盘大小。
    3. 生态强大: 它拥有和Slack一样强大的Webhook和机器人集成能力,可以轻松地与你的Gitea、Jenkins、监控系统等所有工具链,打通关节。
    4. 全平台客户端: 它拥有精美的Windows, macOS, Linux, Android, iOS客户端,体验不输任何商业软件。
"施工方案":再次请出我们的"总包工头"------Docker Compose

和Nextcloud一样,Mattermost也是一个由"应用服务"和"数据库服务"组成的复杂系统。手动安装,会让你陷入绝望。所以,我们再次请出最可靠的"总包工头"------Docker Compose

第一步:绘制"总施工蓝图" (docker-compose.yml)

SSH登录到你准备好的、已经安装了Docker和Docker Compose的腾讯云轻量服务器 上。一台2核4G的服务器,已经能很好地支撑一个几十人的团队流畅使用了。

创建一个项目文件夹,比如my-mattermost,然后在里面,创建docker-compose.yml文件。

Bash

复制代码
mkdir -p my-mattermost/volumes/mattermost/{config,data,logs,plugins,client/plugins}
mkdir -p my-mattermost/volumes/postgres
cd my-mattermost
nano docker-compose.yml

将下面的"总蓝图",完整地复制进去:

YAML

复制代码
version: '3.8'

services:
  # --- PostgreSQL 数据库服务 ---
  postgres:
    image: postgres:13-alpine
    container_name: mattermost_db
    restart: always
    volumes:
      - ./volumes/postgres:/var/lib/postgresql/data
    environment:
      - POSTGRES_USER=mmuser
      - POSTGRES_PASSWORD=YOUR_STRONG_DATABASE_PASSWORD # 务必修改成一个超强密码
      - POSTGRES_DB=mattermost

  # --- Mattermost 应用服务 ---
  mattermost:
    image: mattermost/mattermost-team-edition:latest
    container_name: mattermost_app
    restart: always
    ports:
      - "8065:8065" # 将服务器的8065端口,映射给Mattermost
    volumes:
      - ./volumes/mattermost/config:/mattermost/config
      - ./volumes/mattermost/data:/mattermost/data
      - ./volumes/mattermost/logs:/mattermost/logs
      - ./volumes/mattermost/plugins:/mattermost/plugins
      - ./volumes/mattermost/client/plugins:/mattermost/client/plugins
    environment:
      - MM_SQLSETTINGS_DRIVERNAME=postgres
      - MM_SQLSETTINGS_DATASOURCE=postgres://mmuser:YOUR_STRONG_DATABASE_PASSWORD@postgres:5432/mattermost?sslmode=disable&connect_timeout=10 # 务必和上面保持一致
    depends_on:
      - postgres

蓝图解读:

  • 我们创建了两个服务:postgres(数据库)和mattermost(应用本身)。
  • volumes: 我们提前创建了几个文件夹,并把它们挂载到容器里。这保证了你的所有聊天记录、配置文件、上传的文件,都持久化地保存在你自己的服务器上。
  • environment: 这是连接"数据库"和"应用"的"秘密电缆 "。请务必,将那两个YOUR_STRONG_DATABASE_PASSWORD,替换成你自己设定的、同一个超强密码!
第二步:"一键施工"

保存好你的"总蓝图"后,一声令下:

Bash

复制代码
sudo docker-compose up -d

Docker Compose会立刻开始工作。几分钟后,你的"数字总部大楼",就已拔地而起。

第三步:装修"大厦正门"------配置Nginx反向代理和SSL

现在,你的Mattermost,正在服务器的8065端口上运行。我们需要为它,配置一个正式的、安全的、比如chat.yourdomain.com这样的"正门"。

在服务器的宿主机上,安装Nginx,并创建一个新的网站配置文件:

Bash

复制代码
sudo nano /etc/nginx/sites-available/mattermost

写入以下"门卫工作手册"。注意,这份手册,比我们之前的要复杂一些,因为它需要支持WebSocket这个"实时对讲机"协议!

Nginx

复制代码
upstream mattermost {
    server 127.0.0.1:8065;
}

server {
    listen 80;
    server_name chat.yourdomain.com; # 换成你自己的域名

    location / {
        return 301 https://$host$request_uri;
    }
}

server {
    listen 443 ssl http2;
    server_name chat.yourdomain.com; # 换成你自己的域名

    # SSL证书配置,稍后由Certbot自动填写
    # ssl_certificate ...
    # ssl_certificate_key ...

    # 核心的反向代理配置
    location / {
        proxy_pass http://mattermost;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # --- WebSocket 支持的关键!---
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

手册解读:

  • upstream模块:我们先定义了一个叫mattermost的"内部部门",地址就是我们容器映射出来的127.0.0.1:8065
  • proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";这两行是魔法的核心! 它们相当于你告诉Nginx这位"前台":"嘿,如果访客是想建立一条'实时对讲机 '式的通话(WebSocket),而不是普通的'写信'(HTTP请求),请你务必帮我把这条专线接通,别挂断!"。没有它们,你的Mattermost聊天消息,就会延迟巨大,甚至根本收不到实时更新。

启用配置,并用certbot为你的chat.yourdomain.com域名,申请并配置好SSL证书。

第四步:"开业剪彩"------初始化你的Mattermost

现在,万事俱备。 打开你的浏览器,访问你刚刚配置好的、带https的域名:https://chat.yourdomain.com

你会看到Mattermost的欢迎界面。

  1. 创建你的"创始人"账号: 输入你的邮箱、用户名和密码,创建第一个系统管理员账号。
  2. 创建你的第一个"公司/团队": 给你的团队起个名字。
  3. 完成!

一个界面精美、功能强大、完全私有的"团队协作中心",就此诞生!

欢迎入驻,你的"思想殿堂"

看看你刚刚建成的这座"数字总部"。它安全、私密、运行在你自己的服务器上,并且完全由你定义。

在这里,你的每一次讨论,都只属于你们团队自己;你的每一次分享,都沉淀为你团队自己的、可被永久搜索的知识财富;你的每一次集成,都让这座"总部大楼",变得更智能、更自动化。

你,不再是一个平台的"租客",你成了自己团队"数字文化"的"建筑师 "和"守护者"。

现在,去邀请你的伙伴们,入驻这座完全属于你们自己的"思想殿堂"吧。

相关推荐
Rysxt_5 小时前
开源定时器教程:Quartz与XXL-JOB全面对比与实践
开源·定时器
❀͜͡傀儡师5 小时前
Docker部署Drawnix开源白板工具
docker·容器·开源·drawnix
❀͜͡傀儡师5 小时前
Docker部署Lunalytics开源监控工具
docker·容器·开源·lunalytics
To_再飞行5 小时前
K8s 存储配置资源
linux·云原生·容器·kubernetes
AI Echoes5 小时前
别再手工缝合API了!开源LLMOps神器LMForge,让你像搭积木一样玩转AI智能体!
人工智能·python·langchain·开源·agent
AI Echoes5 小时前
从零构建企业级LLMOps平台:LMForge——支持多模型、可视化编排、知识库与安全审核的全栈解决方案
人工智能·python·langchain·开源·agent
小红帽2.05 小时前
从零构建一款开源在线客服系统:我的Go语言实战之旅
开发语言·golang·开源
切糕师学AI6 小时前
开源容器管理平台Rancher
开源·rancher
OpenLoong 开源社区8 小时前
技术视界 | 跨域机器人通信与智能系统:打破壁垒的开源探索
机器人·开源