====== 群晖 Chat:搭建私有团队通讯平台 ====== [[https://www.synology.com/zh-tw|群晖科技(Synology Inc.)]]推出的 Synology Chat 是一款私有化部署的即时通讯工具,类似于自建的 Slack 或微信企业版。所有消息、文件、聊天记录都存储在你的 NAS 上,数据不会经过第三方服务器。 ===== 什么是 Synology Chat?===== Synology Chat 是群晖 DSM 套件中心中的一款第一方套件,提供团队即时通讯、频道管理、文件分享、消息搜索等功能(([[https://www.synology.com/zh-tw/dsm/feature/chat|Synology Chat 功能介绍]])). 与公共 IM 工具相比,它的核心差异在于: * **数据私有**: 所有消息、文件、历史记录全部存在你的 NAS 上,群晖或任何第三方都无法访问 * **无用户数限制**: 不按人头收费,只要 NAS 性能够用,加多少用户都可以 * **与 DSM 深度集成**: 直接使用 DSM 用户账户体系,无需额外管理一套账号 * **Webhook / API**: 支持 incoming/outgoing webhook,可以对接外部系统和机器人 ===== 核心功能 ===== ==== 频道与讨论 ==== * **公开频道**: 团队全员可见,适合项目讨论、公告发布 * **私有频道**: 仅限受邀成员加入,适合敏感话题或小团队协作 * **一对一私聊**: 私密对话,仅双方可见 * **消息回复串**: 在消息上右键可以开启串回复,避免话题混乱 * **@提及**: 支持 @用户 和 @频道,通知相关人员 ==== 文件与媒体 ==== * 直接在聊天中发送文件、图片、视频,文件存储在 NAS 上 * 消息中的图片和链接支持预览 * 聊天中的文件可以直接在 File Station 中访问 ==== 搜索与历史 ==== * 全文搜索聊天记录,支持关键词、日期、发送者筛选 * 所有历史消息永久保存(取决于你的硬盘容量),不会被自动删除 ==== 集成与扩展 ==== * **Incoming Webhook**: 外部系统可以通过 webhook 向频道推送消息,适合 CI/CD 通知、监控告警等场景。具体设置步骤请参考官方文档:(([[https://kb.synology.com/zh-tw/DSM/tutorial/How_to_configure_webhooks_and_slash_commands_in_Chat_Integration|Synology Chat 整合 Webhook 与斜线指令官方中文文档]])) * **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 + 端口转发**: 如果 [[zh:synology:ddns|你配置了 DDNS]](动态域名),可以直接通过域名访问 Chat * **反向代理**: 通过 Nginx Proxy Manager 等工具将 Chat 暴露在标准 443 端口(([[https://kb.synology.com/en-global/DSM/tutorial/How_to_use_reverse_proxy_with_Synology_Chat|Synology Chat 反向代理设置]])) ===== 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 会自动将其发送到频道。 详细的配置步骤请参考官方文档(([[https://kb.synology.com/zh-tw/DSM/tutorial/How_to_configure_webhooks_and_slash_commands_in_Chat_Integration|Synology Chat 整合 Webhook 与斜线指令官方中文文档]])). ===== QuickConnect 与 Chat 的配合 ===== 如果你通过 [[zh:synology:quickconnect|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 云服务或另一台 NAS(([[https://kb.synology.com/en-global/DSM/tutorial/How_to_back_up_Chat_messages|Synology Chat 消息备份]])) ===== 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 值得一试——毕竟装一下不花钱,不满意卸载就是(([[https://www.synology.com/zh-tw/dsm/feature/chat|Synology Chat 官方页面]]))。