零成本替代 Zendesk,个人 / 小团队专属开源客服系统
零成本替代 Zendesk个人 / 小团队专属开源客服系统前言在线客服这个赛道Intercom、Zendesk 这些产品做得确实成熟但价格对于小团队来说始终是个门槛。随便看一家每月订阅费基本从几百到几千不等企业版功能更是直接锁死想用 AI 客服和数据报表就得乖乖升级。免费版本基本是残血状态多渠道接入不支持导出数据有限额用起来处处受限。而且说实话把所有用户对话数据存在别人服务器上这件事业务量大之后心理上总有点不踏实。Chatwoot 算是这个问题的一个不错解法。它是一个开源的全渠道客服系统GitHub 上 24K Star功能覆盖面和 Intercom 差不太多网页聊天、邮件、WhatsApp、Facebook、Twitter、Telegram 全渠道接入后台统一管理团队协作、报表、客服分配这些功能全免费。更关键的是所有数据存在自己的服务器上不依赖任何第三方平台。部署成本极低NAS 或者任何一台有 Docker 的设备都能跑前端接入只需要复制粘贴几行 JavaScript 代码周期不超过五分钟。1 什么是Chatwoot?Chatwoot是一款基于Ruby on Rails Vue.js开发的开源全渠道客服系统。你可以把它理解为开源版的 Intercom 或 Zendesk——那些大厂花大价钱购买的企业级客服平台现在你可以免费部署在自己的服务器上了。它最大的亮点是什么全渠道统一管理。用户无论是从你的网站发起聊天、发邮件咨询、在 Facebook 留言、还是通过 WhatsApp 私信你所有消息都会汇总到同一个后台界面客服人员不用在多个平台之间来回切换一个后台搞定所有渠道的客户对话。而且Chatwoot还支持Android、iOS、PCpwa多端支持、让你无需一定得打开电脑才能处理客户信息它能为你做什么多渠道接入支持网页实时聊天、邮件、Facebook、Instagram、Twitter、WhatsApp、Telegram、Line、SMS 等多种渠道AI 智能客服Captain自动回复常见问题减轻人工客服负担让用户秒级获得答案帮助中心门户自建知识库和 FAQ用户可以自助查找答案团队协作支持内部备注、提醒、会话分配、工单系统多人客服团队协作无缝客户画像记录用户信息、历史对话、自定义标签精准了解每个客户数据报表实时统计客服工作量、响应速度、客户满意度CSAT数据驱动优化服务强大集成对接 Slack、Dialogflow聊天机器人、Shopify电商订单、Google 翻译等工具更重要的是所有这些功能都是完全免费的不像那些 SaaS 平台把核心功能锁在付费版。你只需要有一台服务器甚至是家里的 NAS就能拥有一套企业级的客服系统2 一键部署Chatwoot本教程以在绿联 NAS上部署 Chatwoot 为例进行演示。其他 NAS 系统如群晖、极空间、威联通或 Linux 服务器的操作步骤基本一致只要能 SSH 连接并支持 Docker 即可。为了让部署过程简单到极致我特地编写了一个自动化部署脚本。你只需要复制一行命令粘贴到终端回车脚本就会自动完成所有配置工作——下载镜像、创建数据库、配置环境变量、启动服务…全程无需太多的手动干预真正做到一键部署2.1 连接 SSH 终端首先需要先给绿联Nas开启SSH远程登录功能点击首页的控制面板然后点击终端机图标点击进入点击勾选SSH功能然后点击应用注意SSH密码为登录的密码建议密码一定要设置强密码特别是公网环境下接着电脑上摁Win X键选择终端管理员打开PowerShell终端在终端输入如下命令连接你的绿联Nas终端# ssh 你的绿联Nas用户名你的绿联Nas访问IP地址sshsusu192.168.50.99连接上绿联Nas的终端后在终端中输入如下命令切换至root用户sudo-i2.2 部署Chatwoot连接上你的Nas终端后在终端输入如下命令进行一键部署curl-fsSLhttps://gitee.com/jun-wan/script/raw/master/chatwoot_docker/deploy.sh-o/tmp/chatwoot-deploy.shchmodx /tmp/chatwoot-deploy.sh/tmp/chatwoot-deploy.sh如下图所示配置一个安装目录后回车或直接回车采用默认目录然后来到配置项目端口部分在项目端口部分选择访问方式为2使用服务器的IP地址当然也可以选择使用3直接填写要使用的域名如穿透后的域名或者您的自定义域名这里以2为例填写当前的绿联Nas访问的IP地址即可接下来配置邮件服务支持多种邮箱服务商这里以163为例选择3后回车会提示输入发件人邮箱地址输入完成后会提示需要邮箱授权码首先登录到你的163邮箱,然后点击顶部的设置按钮再选择POP3/SMTP/IMAP点击进入https://mail.163.com/点击后进入到如下页面首先需要先开启SMTP服务然后在下方的授权密码管理点击新增授权密码按钮进行添加点击后会提示授权码将授权码复制下来注意只会显示一次复制下来后点击确认按钮然后回到终端页面粘贴获取的授权码填写完成后回车即可开始镜像拉取等待镜像拉取完毕即可启动(如遇到拉取失败重新执行脚本从拉取流程走即可)部署完成后会出现如上部署完成提示输出访问地址即代表部署完成2.3 基础配置Chatwoot部署完成后在浏览器中访问该地址http://192.168.50.99:4000填写好表单信息密码需要设置强密码否则无法完成设置然后点击完成设置即可点击后会跳转登录页面使用设置好的邮箱和密码进行登录登录后即可来到主页来到首页后点击Settings按钮来到设置页面将站点语言改为中文改为中文后页面的语言就变成中文啦基础设置就做好啦3 下载安装cpolar由于 Chatwoot 目前部署在你的局域网内只能通过内网 IP 地址访问。这意味着只有连接同一 Wi-Fi 的设备才能使用你的客服系统——手机一旦切换到 4G/5G 网络或者朋友想通过外网访问你的网站咨询问题都会直接连接失败。更关键的是当你把嵌入代码部署到公网服务器上的网页时用户根本无法与你的客服系统建立连接。要让 Chatwoot真正发挥作用你需要让它能够被公网访问。传统方法需要购买云服务器、配置公网 IP、申请域名备案…一套流程下来不仅费钱费时还容易踩坑。但借助cpolar 内网穿透你可以零成本、几分钟内就把本地的 Chatwoot 服务映射到公网生成一个任何人都能访问的 HTTPS 地址。接下来我们就来配置 cpolar让你的私有客服系统走向全球3.1 什么是cpolar?cpolar 是一款内网穿透工具可以将你在局域网内运行的服务如本地 Web 服务器、SSH、远程桌面等通过一条安全加密的中间隧道映射至公网让外部设备无需配置路由器即可访问。广泛支持Windows、macOS、Linux、树莓派、群晖 NAS等平台并提供一键安装脚本方便部署。3.2 安装cpolar回到PowerShell终端如果还在容器内部执行exit命令即可退出退出Docker容器内部后执行如下命令一键安装cpolarsudocurlhttps://get.cpolar.sh|sh接着输入如下命令确认cpolar是否启动sudosystemctl status cpolar可以看到显示为activerunning表示为正常在线状态。接着我们在浏览器中输入你的绿联NAS的IP地址9200端口进行访问cpolar的web ui控制台http://192.168.50.99:9200/可以发现成功的访问到cpolar的web ui页面啦如果没有注册cpolar的小伙伴也可以点击底部的按钮跳转注册4 穿透Chatwoot以实现公网访问4.1 随机域名方式免费方案cpolar 免费版提供了随机域名隧道功能无需任何费用即可将你的 Chatwoot 服务暴露到公网。随机域名的格式类似xxxxxx.cpolar.top非常适合临时测试、功能验证或个人尝鲜使用。⚠️注意免费版随机域名每 24 小时会自动更换一次如果你需要长期稳定的访问地址比如嵌入到正式网站中建议使用后面介绍的固定域名方式。注册好账号以后回到该页面进行登录即可登录 cpolar 后台后进入侧边的【隧道管理隧道列表】可以看到有2条隧道选择website这条隧道点击编辑进行修改也可以创建新的隧道设置一个方便辨识的隧道名称然后协议选择http,本地地址填写Chatwoot的访问端口4000地地区这里选择的China Top最后点击更新创建或者更新完成后接着点击【状态在线隧道里列表】可以看到有2条名称为Chatwoot的隧道一条为http的协议另一条为https的协议复制公网地址这里以https为例访问测试一下可以发现成功访问到啦不过正如前面提到的随机域名每 24 小时会自动更换。这对于临时测试来说问题不大但如果你想把 Chatwoot 嵌入到正式网站中每天都要更新嵌入代码里的地址那简直是噩梦。而且随机域名看起来也不够专业类似3a7x9k.cpolar.top这种地址用户一看就知道是临时链接。所以如果你是认真想用 Chatwoot 做客服系统的强烈建议配置一个固定的二级子域名。这样不仅地址永久不变还能自定义成类似chatwoot.cpolar.cn这种简洁好记的格式嵌入网站后也显得更加专业。接下来我们就来配置固定二级子域名后续的网站集成也将基于这个固定地址进行4.2 固定二级子域名方式要配置固定二级子域名需要将 cpolar 账号升级至基础套餐或以上。升级后你将获得保留二级子域名的权限可以自定义一个专属的、永久有效的公网地址。首先进入官网的预留页面https://dashboard.cpolar.com/reserved然后选择预留菜单即可看到保留二级子域名项填写其中的地区、名称、描述可不填项然后点击保留按钮操作步骤图如下列表中显示了一条已保留的二级子域名记录地区显示为China Top。二级域名显示为chatwoot01。注二级域名是唯一的每个账号都不相同请以自己设置的二级域名保留的为主接着回到cpolar WebUI的后台页面进入侧边菜单栏的隧道管理下的隧道列表可以看到名为Chatwoot的隧道点击编辑按钮进入编辑页面修改域名类型为二级子域名然后填写前面配置好的子域名点击更新按钮接着来到状态菜单下的在线隧道列表可以看到隧道名称为Chatwoot的公网地址已经变更为二级子域名固定域名主体及后缀的形式了这里以https访问测试一下访问成功接着进行登录测试一下可以看到成功登录现在你已经拥有了一个永久有效的固定公网地址无论何时何地只要访问这个地址就能打开你的 Chatwoot 客服后台。到这里Chatwoot 的部署和公网穿透就全部完成了。但这只是客服后台——真正让用户能够在你的网站上发起咨询还需要把 Chatwoot 的聊天窗口小组件嵌入到网页中。好消息是Chatwoot 提供了极简的 JavaScript SDK只需要复制几行代码粘贴到你的网页里一个漂亮的客服聊天气泡就会出现在页面右下角。用户点击就能直接发起对话消息会实时推送到你的 Chatwoot 后台——整个过程不超过 5 分钟接下来我们就来演示如何获取嵌入代码并把它集成到任意网站中。5 将Chatwoot接入你的网站5.1 配置生成 JavaScript SDK首先点击设置菜单下的收件箱菜单然后点击页面上的添加收件箱按钮在选择频道部分点击网站图标接着填写你要设置的名称和目标网站的域名 例如如下为我穿透的本地nginx跑的一个默认页面如下图填写接着点击创建收件箱来到客服代理页面选择一个客服代理默认为你注册的账号然后点击添加点击添加按钮后即可看到如下页面如上图输出了一段 JavaScript代码我们需要修改启动的BASE_URL为我们当前chatwoot的域名如下script(function(d,t){varBASE_URLhttps://chatwoot01.cpolar.top;vargd.createElement(t),sd.getElementsByTagName(t)[0];g.srcBASE_URL/packs/js/sdk.js;g.asynctrue;s.parentNode.insertBefore(g,s);g.onloadfunction(){window.chatwootSDK.run({websiteToken:3EoaEfw7TkcDimTNEWi9T5t7,baseUrl:BASE_URL})}})(document,script);/script将域名改为我们配置的二级子域名的域名即可。更建议在部署时直接填写域名后续将不用直接修改即该部署部分5.2 将 JavaScript SDK接入网站来到你的目标网站入口页面在body标签前将SDK代码插入保存即可如下图添加后回到你的网站上使用ctrl f5强制刷新页面然后即可看到右下角多出了一个小图标点击图标即可查看到刚才配置的欢迎信息了点击开始会话测试发送消息查看后台是否能够接收到回到后台点击我的收件箱会话即可查看到会话列表了后台回复消息然后回到前台查看是否能接收到消息可以看到成功的显示了回复的消息6 客服坐席添加业务量大了一个人聊不过来怎么办Chatwoot 天生就是为团队设计的。你可以轻松添加多个客服坐席让团队成员共同协作处理客户消息。点击左侧菜单底部的设置齿轮图标选择客服代理标签页然后点击右上角的添加客服按钮。在弹出的窗口中填写新客服的信息名称填写同事的昵称或真名。角色客服只能查看和回复分配给他们的对话适合普通客服人员。管理员拥有所有权限可以配置收件箱、管理团队和系统设置。电子邮箱输入要加入的客服的邮箱地址系统会发送邀请邮件。点击添加代理后新成员登录邮箱就可以收到邀请邮箱啦点击确认账号按钮然后就会跳转新的页面设置你的密码设置完成后即可进行登录啦在收件箱页面添加或者编辑网站将新的客服添加进去即可看到新的客服坐席啦这样你的客服团队就组建完成了当海量咨询涌入时大家可以协同作战支持消息转接、内部备注讨论服务的响应速度和专业度将直接提升一个台阶总结客观说Chatwoot 相比 Intercom 这类成熟商业产品在 UI 细节和产品体验打磨上还略有差距部分功能的文档和社区活跃度也比不上大厂。但作为一套免费的私有化客服方案它覆盖的功能链路已经相当完整中小团队用来接待用户完全够用。值不值得用看你自己的场景——如果客服需求量级不大、团队规模小、预算有限这套方案很合适如果对 AI 客服和多系统集成要求更高可能还是需要斟酌。