Chatwoot 私有化部署与网页集成实操
介绍如何使用 Chatwoot 搭建私有化全渠道客服系统。通过 Docker 在本地服务器完成部署,配置 SMTP 邮件服务,并利用内网穿透实现公网访问。随后将 JavaScript SDK 嵌入网站,实现网页聊天窗口集成。支持多坐席协作、AI 自动回复及多渠道消息统一管理,数据完全自主可控,替代传统付费 SaaS 方案。

介绍如何使用 Chatwoot 搭建私有化全渠道客服系统。通过 Docker 在本地服务器完成部署,配置 SMTP 邮件服务,并利用内网穿透实现公网访问。随后将 JavaScript SDK 嵌入网站,实现网页聊天窗口集成。支持多坐席协作、AI 自动回复及多渠道消息统一管理,数据完全自主可控,替代传统付费 SaaS 方案。

当用户在你的网页上有疑问想要咨询时,一个响应及时、能覆盖多渠道的客服窗口,往往是提升用户体验的关键。但多数时候,要么是付费 SaaS 客服平台的高额订阅费让人却步,要么是免费版本功能受限,对话数据还攥在第三方手里,既不灵活也不安全。更不用说多渠道消息分散在不同平台,客服人员需要来回切换,效率大打折扣。
而一个能将网页聊天、邮件、社交媒体私信等所有客户咨询汇总到同一后台的客服系统,恰好能解决这些痛点 —— 无需反复切换界面,所有对话统一管理,数据还能完全掌握在自己手中。Chatwoot 正是这样一款工具,它以开源的形式,让个人和企业都能零成本搭建起企业级的全渠道客服中心,从根本上摆脱对付费 SaaS 平台的依赖,接下来就一步步教你把它部署到本地,并集成到任意网页中。
Chatwoot 是一款基于 Ruby on Rails + Vue.js 开发的开源全渠道客服系统。你可以把它理解为开源版的 Intercom 或 Zendesk——那些大厂花大价钱购买的企业级客服平台,现在你可以免费部署在自己的服务器上了。
它最大的亮点是什么?全渠道统一管理。用户无论是从你的网站发起聊天、发邮件咨询、在 Facebook 留言、还是通过 WhatsApp 私信你,所有消息都会汇总到同一个后台界面,客服人员不用在多个平台之间来回切换,一个后台搞定所有渠道的客户对话。而且 Chatwoot 还支持Android、iOS、PC(pwa)多端支持、让你无需一定得打开电脑,才能处理客户信息!
它能为你做什么?
更重要的是,所有这些功能都是完全免费的,不像那些 SaaS 平台把核心功能锁在付费版。你只需要有一台服务器(甚至是家里的 NAS),就能拥有一套企业级的客服系统!
本教程以在本地服务器或 NAS 上部署 Chatwoot 为例进行演示。其他 Linux 服务器的操作步骤基本一致,只要能 SSH 连接并支持 Docker 即可。
为了让部署过程简单到极致,可以使用自动化部署脚本。你只需要复制一行命令,粘贴到终端回车,脚本就会自动完成所有配置工作——下载镜像、创建数据库、配置环境变量、启动服务…全程无需太多的手动干预,真正做到一键部署!
首先,需要先给服务器开启 SSH 远程登录功能,点击首页的控制面板:
(此处省略图片)
然后点击终端机图标,点击进入:
(此处省略图片)
点击勾选 SSH 功能,然后点击应用(注意:SSH 密码为登录的密码,建议密码一定要设置强密码,特别是公网环境下!!):
(此处省略图片)
接着,电脑上摁 Win + X 键,选择终端(管理员),打开 PowerShell 终端:
(此处省略图片)
在终端输入如下命令,连接你的服务器终端:
# ssh 用户名@服务器 IP 地址
ssh username@<SERVER_IP>
(此处省略图片)
连接上服务器的终端后,在终端中输入如下命令,切换至 root 用户:
sudo -i
(此处省略图片)
连接上你的服务器终端后,在终端输入如下命令,进行一键部署:
# 执行自动化部署脚本 (请替换为实际脚本地址)
curl -fsSL <DEPLOY_SCRIPT_URL> -o /tmp/chatwoot-deploy.sh && chmod +x /tmp/chatwoot-deploy.sh && /tmp/chatwoot-deploy.sh
(此处省略图片)
配置一个安装目录后回车,或直接回车采用默认目录,然后来到配置项目端口部分:
(此处省略图片)
在项目端口部分,选择访问方式为 2,使用服务器的 IP 地址,当然,也可以选择使用 3,直接填写要使用的域名,如穿透后的域名或者您的自定义域名,这里以 2 为例:
(此处省略图片)
填写当前的服务器访问的 IP 地址即可,接下来配置邮件服务:
(此处省略图片)
支持多种邮箱服务商,这里以 SMTP 为例,选择相应选项后回车,会提示输入发件人邮箱地址:
(此处省略图片)
输入完成后,会提示需要邮箱授权码,首先登录到你的邮箱服务商,然后点击顶部的设置按钮,再选择POP3/SMTP/IMAP点击进入:
https://mail.example.com/
(此处省略图片)
点击后,进入到如下页面,首先需要先开启 SMTP 服务,然后在下方的授权密码管理点击新增授权密码按钮,进行添加:
(此处省略图片)
点击后,会提示授权码,将授权码复制下来(注意:只会显示一次):
(此处省略图片)
复制下来后,点击确认按钮,然后回到终端页面,粘贴获取的授权码:
(此处省略图片)
填写完成后,回车,即可开始镜像拉取,等待镜像拉取完毕即可启动 (如遇到拉取失败,重新执行脚本从拉取流程走即可):
(此处省略图片)
部署完成后,会出现如上部署完成提示,输出访问地址,即代表部署完成!
部署完成后,在浏览器中访问该地址:
http://<SERVER_IP>:4000
(此处省略图片)
填写好表单信息(密码需要设置强密码,否则无法完成设置),然后点击完成设置即可,点击后会跳转登录页面:
(此处省略图片)
使用设置好的邮箱和密码进行登录,登录后即可来到主页:
(此处省略图片)
来到首页后,点击Settings按钮,来到设置页面,将站点语言改为中文:
(此处省略图片)
改为中文后,页面的语言就变成中文啦:
(此处省略图片)
基础设置就做好啦!
由于 Chatwoot 目前部署在你的局域网内,只能通过内网 IP 地址访问。这意味着只有连接同一 Wi-Fi 的设备才能使用你的客服系统——手机一旦切换到 4G/5G 网络,或者朋友想通过外网访问你的网站咨询问题,都会直接连接失败。更关键的是,当你把嵌入代码部署到公网服务器上的网页时,用户根本无法与你的客服系统建立连接。
要让 Chatwoot 真正发挥作用,你需要让它能够被公网访问。传统方法需要购买云服务器、配置公网 IP、申请域名备案…一套流程下来不仅费钱费时,还容易踩坑。但借助 内网穿透工具,你可以零成本、几分钟内就把本地的 Chatwoot 服务映射到公网,生成一个任何人都能访问的 HTTPS 地址。
接下来,我们就来配置内网穿透,让你的私有客服系统走向全球!
(此处省略图片)
回到终端,如果还在容器内部,执行 exit 命令即可退出:
(此处省略图片)
退出 Docker 容器内部后,执行如下命令,一键安装内网穿透工具:
sudo curl https://get.<TOOL>.sh | sh
(此处省略图片)
接着输入如下命令,确认工具是否启动:
sudo systemctl status <TOOL>
(此处省略图片)
可以看到显示为 active(running),表示为正常在线状态。
接着,我们在浏览器中,输入你的 <SERVER_IP>+<PORT>,进行访问工具的 web ui 控制台:
http://<SERVER_IP>:9200/
(此处省略图片)
可以发现,成功的访问到工具的 web ui 页面啦!如果没有注册账号的小伙伴也可以点击底部的按钮跳转注册!
内网穿透免费版提供了随机域名隧道功能,无需任何费用即可将你的 Chatwoot 服务暴露到公网。随机域名的格式类似 xxxxxx.tool.top,非常适合临时测试、功能验证或个人尝鲜使用。
⚠️ 注意:免费版随机域名每 24 小时会自动更换一次,如果你需要长期稳定的访问地址(比如嵌入到正式网站中),建议使用后面介绍的固定域名方式。
注册好账号以后,回到该页面进行登录即可,登录后台后,进入侧边的【隧道管理>隧道列表】,可以看到有 2 条隧道:
(此处省略图片)
选择website这条隧道,点击编辑进行修改(也可以创建新的隧道),设置一个方便辨识的隧道名称,然后协议选择http,本地地址填写Chatwoot的访问端口4000,地地区这里选择的China Top,最后点击更新:
(此处省略图片)
创建或者更新完成后,接着点击【状态>在线隧道里列表】,可以看到有 2 条名称为Chatwoot的隧道,一条为 http 的协议,另一条为 https 的协议:
(此处省略图片)
复制公网地址,这里以 https 为例,访问测试一下:
(此处省略图片)
可以发现,成功访问到啦!不过正如前面提到的,随机域名每 24 小时会自动更换。这对于临时测试来说问题不大,但如果你想把 Chatwoot 嵌入到正式网站中,每天都要更新嵌入代码里的地址,那简直是噩梦。而且随机域名看起来也不够专业,类似 3a7x9k.tool.top 这种地址,用户一看就知道是临时链接。
所以,如果你是认真想用 Chatwoot 做客服系统的,强烈建议配置一个固定的二级子域名。这样不仅地址永久不变,还能自定义成类似 chatwoot.tool.cn 这种简洁好记的格式,嵌入网站后也显得更加专业。
接下来,我们就来配置固定二级子域名,后续的网站集成也将基于这个固定地址进行!
要配置固定二级子域名,需要将内网穿透账号升级至基础套餐或以上。升级后,你将获得保留二级子域名的权限,可以自定义一个专属的、永久有效的公网地址。
首先,进入官网的预留页面:
https://dashboard.<TOOL>.com/reserved
然后,选择预留菜单,即可看到保留二级子域名项,填写其中的地区、名称、描述(可不填)项,然后点击保留按钮,操作步骤图如下:
(此处省略图片)
列表中显示了一条已保留的二级子域名记录:
注:二级域名是唯一的,每个账号都不相同,请以自己设置的二级域名保留的为主
接着,回到内网穿透 WebUI 的后台页面,进入侧边菜单栏的隧道管理下的隧道列表,可以看到名为Chatwoot的隧道:
(此处省略图片)
点击编辑按钮进入编辑页面,修改域名类型为二级子域名,然后填写前面配置好的子域名,点击更新按钮:
(此处省略图片)
接着来到状态菜单下的在线隧道列表可以看到隧道名称为Chatwoot的公网地址已经变更为二级子域名 + 固定域名主体及后缀的形式了:
(此处省略图片)
这里以 https 访问测试一下:
(此处省略图片)
访问成功,接着进行登录测试一下:
(此处省略图片)
可以看到,成功登录!现在你已经拥有了一个永久有效的固定公网地址,无论何时何地,只要访问这个地址就能打开你的 Chatwoot 客服后台。
到这里,Chatwoot 的部署和公网穿透就全部完成了。但这只是客服后台——真正让用户能够在你的网站上发起咨询,还需要把 Chatwoot 的聊天窗口小组件嵌入到网页中。
好消息是,Chatwoot 提供了极简的 JavaScript SDK,只需要复制几行代码粘贴到你的网页里,一个漂亮的客服聊天气泡就会出现在页面右下角。用户点击就能直接发起对话,消息会实时推送到你的 Chatwoot 后台——整个过程不超过 5 分钟!
接下来,我们就来演示如何获取嵌入代码,并把它集成到任意网站中。
首先,点击设置菜单下的收件箱菜单,然后点击页面上的添加收件箱按钮:
(此处省略图片)
在选择频道部分,点击网站图标:
(此处省略图片)
接着,填写你要设置的名称,和目标网站的域名,例如,如下为我穿透的本地 nginx 跑的一个默认页面:
(此处省略图片)
如下图填写:
(此处省略图片)
接着,点击创建收件箱,来到客服代理页面,选择一个客服代理(默认为你注册的账号),然后点击添加:
(此处省略图片)
点击添加按钮后,即可看到如下页面:
(此处省略图片)
如上图,输出了一段 JavaScript 代码,我们需要修改启动的BASE_URL为我们当前 chatwoot 的域名如下:
<script>(function(d,t){var BASE_URL="https://<PUBLIC_DOMAIN>";var g=d.createElement(t),s=d.getElementsByTagName(t)[0]; g.src=BASE_URL+"/packs/js/sdk.js"; g.async =true; s.parentNode.insertBefore(g,s); g.onload=function(){ window.chatwootSDK.run({websiteToken:'3EoaEfw7TkcDimTNEWi9T5t7',baseUrl:BASE_URL})}})(document,"script");</script>
将域名改为我们配置的二级子域名的域名即可。更建议在部署时,直接填写域名,后续将不用直接修改,即该部署部分:
(此处省略图片)
来到你的目标网站入口页面,在 body 标签前将 SDK 代码插入保存即可,如下图:
(此处省略图片)
添加后,回到你的网站上,使用ctrl + f5强制刷新页面,然后即可看到右下角多出了一个小图标:
(此处省略图片)
点击图标即可查看到刚才配置的欢迎信息了:
(此处省略图片)
点击开始会话,测试发送消息,查看后台是否能够接收到:
(此处省略图片)
回到后台,点击我的收件箱,会话,即可查看到会话列表了:
(此处省略图片)
后台回复消息,然后回到前台查看,是否能接收到消息:
(此处省略图片)
可以看到,成功的显示了回复的消息!
业务量大了,一个人聊不过来怎么办?Chatwoot 天生就是为团队设计的。你可以轻松添加多个客服坐席,让团队成员共同协作处理客户消息。
点击左侧菜单底部的 设置(齿轮图标),选择 客服代理 标签页,然后点击右上角的 添加客服 按钮。
(此处省略图片)
在弹出的窗口中填写新客服的信息:
(此处省略图片)
点击 添加代理 后,新成员登录邮箱就可以收到邀请邮箱啦:
(此处省略图片)
点击确认账号按钮,然后就会跳转新的页面,设置你的密码:
(此处省略图片)
设置完成后,即可进行登录啦!在收件箱页面添加或者编辑网站:
(此处省略图片)
将新的客服添加进去,即可看到新的客服坐席啦:
(此处省略图片)
这样,你的客服团队就组建完成了!当海量咨询涌入时,大家可以协同作战,支持消息转接、内部备注讨论,服务的响应速度和专业度将直接提升一个台阶!
从本地部署到公网访问,再到嵌入网页形成完整的客服闭环,Chatwoot 用简单的操作实现了专业客服系统的核心价值。它没有复杂的付费门槛,也无需专业的开发团队,一台普通的 NAS 或服务器就能撑起整套系统,数据自主可控的同时,还能根据业务需求扩展客服团队、配置智能回复。
对于想要搭建自有客服体系的个人或中小企业来说,这样的私有化方案既兼顾了成本与实用性,又能让用户咨询体验不打折扣。当所有客户消息都能在一个后台高效处理,服务的效率和用户的信任度,也会自然而然地提升。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML 转 Markdown 互为补充。 在线工具,Markdown 转 HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML 转 Markdown在线工具,online