老赵写字的地方

群晖 Chat:搭建私有团队通讯平台

群晖科技(Synology Inc.)推出的 Synology Chat 是一款私有化部署的即时通讯工具,类似于自建的 Slack 或微信企业版。所有消息、文件、聊天记录都存储在你的 NAS 上,数据不会经过第三方服务器。

什么是 Synology Chat?

Synology Chat 是群晖 DSM 套件中心中的一款第一方套件,提供团队即时通讯、频道管理、文件分享、消息搜索等功能1).

与公共 IM 工具相比,它的核心差异在于:

  • 数据私有: 所有消息、文件、历史记录全部存在你的 NAS 上,群晖或任何第三方都无法访问
  • 无用户数限制: 不按人头收费,只要 NAS 性能够用,加多少用户都可以
  • 与 DSM 深度集成: 直接使用 DSM 用户账户体系,无需额外管理一套账号
  • Webhook / API: 支持 incoming/outgoing webhook,可以对接外部系统和机器人

核心功能

频道与讨论

  • 公开频道: 团队全员可见,适合项目讨论、公告发布
  • 私有频道: 仅限受邀成员加入,适合敏感话题或小团队协作
  • 一对一私聊: 私密对话,仅双方可见
  • 消息回复串: 在消息上右键可以开启串回复,避免话题混乱
  • @提及: 支持 @用户 和 @频道,通知相关人员

文件与媒体

  • 直接在聊天中发送文件、图片、视频,文件存储在 NAS 上
  • 消息中的图片和链接支持预览
  • 聊天中的文件可以直接在 File Station 中访问

搜索与历史

  • 全文搜索聊天记录,支持关键词、日期、发送者筛选
  • 所有历史消息永久保存(取决于你的硬盘容量),不会被自动删除

集成与扩展

  • Incoming Webhook: 外部系统可以通过 webhook 向频道推送消息,适合 CI/CD 通知、监控告警等场景。具体设置步骤请参考官方文档:2)
  • Outgoing Webhook / 机器人: 频道内可以通过 @机器人 触发外部操作(例如查询服务器状态、执行命令等)
  • Synology Office 集成: 聊天中可以直接创建和协作编辑文档、表格、幻灯片

安装与配置

安装

  • 登录 DSM → 套件中心
  • 搜索 Synology Chat Server
  • 点击「安装」即可。安装过程自动完成,无需额外配置

客户端

Synology Chat 提供全平台客户端:

  • Web 端: 直接在浏览器中访问https://你的NAS:5001/chat(或通过 QuickConnect)
  • 桌面客户端: Windows/macOS/Linux 客户端,支持消息通知和文件拖拽
  • 移动App: iOS / Android 客户端(在 App Store / Google Play 搜索 “Synology Chat”),支持推送通知

外网访问

和所有群晖服务一样,Chat 支持多种外网访问方式:

  • QuickConnect: 在 DSM QuickConnect 设置中勾选 Chat,即可通过 QuickConnect ID 从外网访问
  • DDNS + 端口转发: 如果 你配置了 DDNS(动态域名),可以直接通过域名访问 Chat
  • 反向代理: 通过 Nginx Proxy Manager 等工具将 Chat 暴露在标准 443 端口3)

Webhook 集成

Webhook 是 Synology Chat 对接外部系统的核心机制。简单来说,它是一种反向 API——不是你去轮询查消息,而是系统在有事件发生时主动通知你。

Chat 支持两种方向的 Webhook:

Incoming Webhook:外部系统 → 推消息到 Chat

概念:Incoming Webhook 相当于一个专用入口 URL。外部系统(监控系统、CI/CD 工具、自定义脚本)向这个 URL 发一条 HTTP POST 请求,Chat 就会把消息显示在指定频道里。

架构:

外部系统(监控/CI/脚本)
      │
      │ HTTP POST(JSON 格式消息)
      ▼
Synology Chat Server
      │
      ▼
指定频道中显示消息

也就是说,消息的流向是从外到内——外部系统主动推送。

典型用途:

  • 运维告警:Prometheus + Alertmanager 在服务器宕机或磁盘满时推送告警到「运维」频道
  • CI/CD 通知:Jenkins/GitHub Actions 在构建完成或部署成功后推送结果到「开发」频道
  • 系统状态报告:定时脚本每天汇总 NAS 状态(CPU、内存、存储用量)并推送到「日报」频道
  • 自定义通知:任何你写脚本能获取的信息,都可以通过 curl/Python/Shell 推到 Chat

配置 Incoming Webhook

在目标频道 → 频道设置 → 整合 → 新增 Incoming Webhook,设置名称和图标,即可获得一个专属 URL。

Webhook URL 格式: https://你的NAS:5001/webapi/entry.cgi?api=SYNO.Chat.External&method=incoming&version=2&token=你的token

调用方法:向此 URL 发送 HTTP POST 请求,payload 参数为 JSON 字符串。

最简单的例子——用 curl 发送一条消息:

curl -sk -X POST "https://你的NAS:5001/webapi/entry.cgi?api=SYNO.Chat.External&method=incoming&version=2&token=你的token" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "payload={\"text\":\"Hello from bot!\"}"

发送富文本消息(支持 Synology Chat 的 Markdown 格式):

curl -sk -X POST "https://你的NAS:5001/webapi/entry.cgi?api=SYNO.Chat.External&method=incoming&version=2&token=你的token" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "payload={\"text\":\"**构建完成**\\n项目:my-app\\n状态:✅ 成功\\n耗时:2分34秒\"}"

不只是 curl,任何支持 HTTP POST 的语言或工具(Python requests、JavaScript fetch、PowerShell Invoke-RestMethod 等)都可以调用 Webhook。

Outgoing Webhook:Chat 里的消息 → 触发外部服务

概念:Outgoing Webhook 的方向与 Incoming 相反。你在频道里发一条以特定关键词开头的消息,Chat 就会把这条消息的内容转发给你指定的外部服务 URL。你的服务处理后,可以把结果回复到频道。

架构:

用户在频道发消息(例如:「/status 磁盘」)
      │
      ▼
Synology Chat Server
      │
      │ HTTP POST(将消息内容发给你的服务)
      ▼
你的外部服务(Web 服务器、脚本、API)
      │
      │ HTTP 响应(可选的回复消息)
      ▼
频道中显示服务回复

也就是说,消息的流向是从内到外再到内——Chat 将消息转给外部程序,外部程序处理后把结果送回频道。

典型用途:

  • 查询机器人:频道里发「/disk」查硬盘用量,「/uptime」查服务器运行时间
  • 执行脚本:发「/deploy 前端」触发远端部署脚本
  • 对接内部系统:发「/jira BUG-123」查 Jira 工单状态
  • 斜线指令:Chat 的斜线指令本质上也是 Outgoing Webhook——你输入 /command,Chat 转发给你配置的服务端处理

配置 Outgoing Webhook

在频道 → 频道设置 → 整合 → 新增 Outgoing Webhook,设置触发关键词(例如 “/status”)和你的回调 URL。

当有人在频道发送以触发词开头的消息时,Chat 会将消息内容和发送者信息 POST 到你的回调 URL。你的服务处理请求后,可以在 HTTP 响应中返回消息文本,Chat 会自动将其发送到频道。

详细的配置步骤请参考官方文档4).

QuickConnect 与 Chat 的配合

如果你通过 QuickConnect 访问 Chat,需要注意:

Webhook 回调 URL 必须使用 NAS 的内网地址或 DDNS 域名,不能使用 QuickConnect 域名。因为 QuickConnect 是中继/穿透服务,不支持作为 webhook 回调目标。

也就是说:

  • 从外网访问 Chat 界面: 可以用 QuickConnect
  • Chat 内部 webhook 回调: 必须用内网 IP 或公网 IP + DDNS

企业级功能

对于有更高需求的企业用户,Synology Chat 还提供:

  • 消息审核与归档: 管理员可以查看和导出所有频道的消息记录,满足合规审计需求
  • 权限管控: 基于 DSM 用户组的权限管理,可以控制谁能创建频道、谁能发送文件
  • LDAP / AD 集成: 与企业现有的 Active Directory 或 LDAP 用户目录对接
  • C2 Backup 备份: 聊天记录可以备份到群晖 C2 云服务或另一台 NAS5)

Synology Chat vs 其他方案

对比项 Synology Chat Mattermost Rocket.Chat Slack / Discord
部署方式 DSM 套件,一键安装 Docker / 手动部署 Docker / 手动部署 云端 SaaS
数据私有 ✅ 完全私有 ✅ 完全私有 ✅ 完全私有 ❌ 数据在第三方服务器
费用 免费(含在 DSM 中) 免费(自托管) 免费(自托管) 免费版有消息限制,付费版按人收费
用户数 无限制 无限制 无限制 免费版限制 90 天消息历史
维护难度 极低,DSM 自动维护 需要自己维护数据库和升级 需要自己维护 零维护
移动端推送 ✅ 支持 ✅ 支持 ✅ 支持 ✅ 支持
与 NAS 集成 ✅ 深度集成(File Station、Office) ❌ 需自行对接 ❌ 需自行对接 ❌ 无法集成
适合场景 群晖用户、小团队 技术团队、需要高度定制 需要丰富第三方集成 不在乎数据隐私的团队

典型使用场景

场景一:小团队内部通讯

一个 10 人小团队使用群晖 Chat 作为日常沟通工具。所有人使用 DSM 账号登录,按项目创建频道(如「前端开发」「后端开发」「运维通知」),配合 Synology Office 在线协作编辑文档。

场景二:运维告警通知

服务器监控系统(如 Prometheus + Alertmanager)通过 incoming webhook 将告警推送到 Chat 的「运维告警」频道。当磁盘空间不足或服务宕机时,团队成员即时收到通知,可以直接在 Chat 中讨论应对方案。

场景三:自定义机器人

如果你熟悉编程,可以利用 Outgoing Webhook 编写自定义机器人,实现自动化响应——例如查询服务器状态、执行命令、对接内部系统等。

总结

Synology Chat 是群晖 NAS 上最被低估的套件之一。对于已经拥有群晖 NAS 的用户来说,它提供了一个零成本、零维护、数据完全私有的团队通讯方案。

它的优势不在于功能堆叠(这方面不如 Mattermost 或 Rocket.Chat 丰富),而在于和 DSM 生态的无缝集成——用户管理、文件存储、Office 协作、移动端推送全部开箱即用,无需额外搭建数据库或配置反向代理。

如果你已经有群晖 NAS 且有小团队沟通需求,Synology Chat 值得一试——毕竟装一下不花钱,不满意卸载就是6)。

zh/synology/synology_chat.txt · 最后更改: 由 dsbot