Chatwoot:开源客服系统完全部署指南
Chatwoot:开源客服系统完全部署指南
背景
客户服务是业务增长的关键环节,越来越多的企业选择自建客服系统来掌控客户数据、降低运营成本。Chatwoot 作为一款开源的全渠道客服平台,提供了从基础对话到团队协作、从工单管理到数据分析的完整解决方案。与依赖第三方 SaaS 服务相比,自托管 Chatwoot 可以确保所有客户对话数据完全自主可控。本文分享 Chatwoot 的部署与使用经验,帮助技术团队快速搭建专业的客服系统。
一、项目概述与核心特性
Chatwoot 是一个开源的客户参与平台,GitHub Stars 数超过 25K,被全球数千家企业用于客户支持。其设计理念是将分散在各个渠道的客户对话统一到一个平台管理,提升客服团队效率。
多渠道统一收件箱:Chatwoot 支持接入网站在线聊天、电子邮件、Twitter、Facebook、WhatsApp、Telegram、SMS 等多种客户接触渠道。所有渠道的对话统一在 Chatwoot 中管理和回复,客服人员无需在多个系统间切换。
实时在线对话:网站访客可以发起实时聊天,客服人员通过 Chatwoot 界面即时响应。对话支持文字、图片、文件等多种消息类型,还支持快捷回复模板提高响应效率。
团队协作与分配:内置团队和 Agent 管理功能,支持对话在团队成员间灵活分配和转移。会话可以标记优先级、添加内部备注,方便复杂问题的协同处理。
工单与标签系统:对话可以转化为工单跟踪处理进度。支持为对话和工单添加自定义标签,方便分类统计和问题复盘。
数据统计与分析:提供对话量、响应时间、满意度评分等多维度报表,帮助管理层了解客服团队绩效和客户反馈趋势。
开放 API 与集成:提供 RESTful API 和 Webhooks,可以与 CRM、 Helpdesk 等现有系统集成。社区还贡献了大量第三方集成方案。
二、Docker Compose 部署教程
环境准备
Chatwoot 的 Docker 部署方案需要服务器满足以下要求:
- Docker Engine 24.0+
- Docker Compose v2.x
- 最低 4GB 内存(推荐 8GB+)
- 20GB+ 可用磁盘空间
- 支持 Linux AMD64
基础部署
创建 Chatwoot 专用目录:
mkdir -p ~/chatwoot/chatwoot
cd ~/chatwoot/chatwoot
创建环境变量配置文件 .env:
# 生成密钥
SECRET_KEY_BASE=$(openssl rand -hex 64)
RAILS_ENV=production
# PostgreSQL 配置
POSTGRES_HOST=postgres
POSTGRES_PORT=5432
POSTGRES_NAME=chatwoot
POSTGRES_USERNAME=postgres
POSTGRES_PASSWORD=chatwoot_password
# Redis 配置
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=
# Chatwoot 基础配置
FRONTEND_URL=http://your-domain:3000
INSTALLATION_ENV=docker
创建 docker-compose.yaml:
version: "3.8"
services:
chatwoot:
image: chatwoot/chatwoot:latest
container_name: chatwoot
hostname: chatwoot-web
ports:
- "3000:3000"
volumes:
- ./chatwoot-data:/app/storage
environment:
- INSTALLATION_ENV=docker
- RAILS_ENV=production
- SECRET_KEY_BASE=${SECRET_KEY_BASE}
- FRONTEND_URL=http://localhost:3000
- POSTGRES_HOST=postgres
- POSTGRES_PORT=5432
- POSTGRES_NAME=chatwoot
- POSTGRES_USERNAME=postgres
- POSTGRES_PASSWORD=chatwoot_password
- REDIS_HOST=redis
- REDIS_PORT=6379
- FRONTEND_URL=http://localhost:3000
depends_on:
- postgres
- redis
restart: unless-stopped
networks:
- chatwoot-network
sidekiq:
image: chatwoot/chatwoot:latest
container_name: sidekiq
hostname: sidekiq
command: bundle exec sidekiq -C config/sidekiq.yml
volumes:
- ./chatwoot-data:/app/storage
environment:
- INSTALLATION_ENV=docker
- RAILS_ENV=production
- SECRET_KEY_BASE=${SECRET_KEY_BASE}
- POSTGRES_HOST=postgres
- POSTGRES_PORT=5432
- POSTGRES_NAME=chatwoot
- POSTGRES_USERNAME=postgres
- POSTGRES_PASSWORD=chatwoot_password
- REDIS_HOST=redis
- REDIS_PORT=6379
depends_on:
- postgres
- redis
restart: unless-stopped
networks:
- chatwoot-network
postgres:
image: postgres:16-alpine
container_name: postgres
hostname: postgres
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=chatwoot_password
- POSTGRES_DB=chatwoot
volumes:
- ./postgres-data:/var/lib/postgresql/data
restart: unless-stopped
networks:
- chatwoot-network
redis:
image: redis:7-alpine
container_name: redis
hostname: redis
volumes:
- ./redis-data:/data
restart: unless-stopped
networks:
- chatwoot-network
networks:
chatwoot-network:
driver: bridge
启动 Chatwoot 服务:
docker compose up -d
Chatwoot 首次启动会执行数据库迁移,需要等待 2-3 分钟。使用浏览器访问 http://服务器IP:3000 即可看到安装向导。
邮箱配置
生产环境需要配置 SMTP 服务器以发送邮件通知。编辑 .env 文件添加以下配置:
# SMTP 配置示例(以 QQ 企业邮箱为例)
SMTP_ADDRESS=smtp.exmail.qq.com
SMTP_PORT=465
SMTP_USERNAME=your-email@company.com
SMTP_PASSWORD=your-smtp-password
SMTP_AUTHENTICATION=login
SMTP_ENABLE_STARTTLS_AUTO=true
SMTP_SSL=true
# 邮件发件人配置
MAER_SENDER_EMAIL_ADDRESS=your-email@company.com
重启服务使配置生效:
docker compose restart chatwoot sidekiq
三、快速入门与基础使用
初始化设置
首次访问 Chatwoot 时需要进行初始化配置:
- 创建管理员账号:填写姓名、邮箱、管理员密码
- 设置工作空间名称:这将成为团队的显示名称
- 配置组织 Logo:可选步骤
- 导入示例数据:可跳过
完成初始化后,使用管理员账号登录 Chatwoot 管理后台。
添加客服团队
在部署客服之前,需要先建立团队结构:
- 进入「设置」→「团队」
- 点击「新建团队」按钮
- 填写团队名称(如「技术支持」「售前咨询」)
- 设置团队成员,将对应客服人员添加到团队
- 配置团队职能:是否接收新对话、接收哪些渠道的对话
配置网站在线聊天
网站即时通讯是最常用的客服渠道之一:
- 进入「设置」→「频道」→「网站」
- 点击「添加网站」按钮
- 填写网站名称和域名
- 配置聊天组件样式(颜色、位置、欢迎语)
- 复制生成的安装代码
将以下代码添加到网站 HTML 的 </body> 之前:
<script>
(function(d,t) {
var BASE_URL="http://your-chatwoot-server:3000";
var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
g.src=BASE_URL+"/packs/js/sdk.js";
g.async=1;
s.parentNode.insertBefore(g,s);
g.onload=function(){
window.chatwootSDK.run({
websiteToken: 'your-website-token',
baseUrl: BASE_URL
})
}
})(document,"script");
</script>
配置邮件渠道
邮件是客户服务的重要渠道,Chatwoot 支持 IMAP 收件和 SMTP 发件:
- 进入「设置」→「频道」→「邮件」
- 选择邮件服务商类型
- 配置 IMAP 设置(收件):
- IMAP 地址:imap.gmail.com 或你的邮件服务器
- IMAP 端口:993(SSL)
- 用户名和密码
- 配置 SMTP 设置(发件):
- SMTP 地址和端口
- 认证凭据
- 设置收件箱邮箱地址,如
support@yourcompany.com
配置完成后,发送到这个邮箱的邮件会自动创建对话并分配给客服处理。
日常对话处理
客服人员登录 Chatwoot 后可以在「对话」页面处理客户消息:
回复对话:点击对话列表中的对话,在右侧面板输入回复内容
快捷回复:输入 / 触发快捷回复列表,选择预设的回复模板
转接对话:点击「转接」按钮,选择目标客服或团队
添加备注:内部备注只有团队成员可见,不会发送给客户
标记状态:对话处理完成后标记为「已解决」,自动归档
四、高级功能与最佳实践
多渠道集成
Chatwoot 支持多种第三方渠道集成:
WhatsApp 集成:
- 前往 Meta Business 管理后台创建 WhatsApp Business 账号
- 在 Chatwoot 中添加 WhatsApp 频道
- 配置 Webhook URL 和验证令牌
- 将 WhatsApp 号码绑定到 Chatwoot
Facebook Messenger 集成:
- 在 Meta Developers 创建 Facebook App
- 配置 Messenger Webhook
- 将 Facebook Page 绑定到 Chatwoot
- 客户的 Messenger 消息会自动同步到 Chatwoot
Twitter/X 集成:
- 在 Twitter Developer Portal 创建 App
- 配置 API Key 和 Bearer Token
- 绑定 Twitter 账号到 Chatwoot
- 账号的 DM 和提及会自动创建对话
自动化规则
Chatwoot 支持通过自动化规则处理常见场景:
新对话分配规则:
- 进入「设置」→「自动化规则」
- 点击「新建规则」
- 配置触发条件:「新对话创建」
- 配置执行动作:「分配给」特定团队或成员
- 设置条件匹配逻辑,如按消息内容关键词分配
超时提醒:
- 创建规则「对话未回复超过 X 分钟」
- 执行动作:发送内部通知或重新分配
快捷回复管理
快捷回复( canned responses)是提高效率的利器:
- 进入「设置」→「快捷回复」
- 点击「新建文件夹」组织回复模板
- 添加快捷回复,设置触发词
- 客服在对话中输入
/触发词快速插入回复
示例模板:
标题:感谢联系
触发词:thanks
内容:您好!感谢您联系我们。请问有什么可以帮助您的?
机器人配置
Chatwoot 内置简易的机器人功能,可以自动处理常见问题:
- 进入「设置」→「机器人」
- 点击「新建机器人」
- 配置机器人名称和触发条件
- 添加对话流程节点:
- 问题节点:设置客户可能的输入
- 回复节点:配置自动回复内容
- 动作节点:转接人工、创建工单等
- 将机器人绑定到特定渠道
数据分析与报表
Chatwoot 提供多维度的数据统计:
团队报表:
- 对话量趋势
- 平均响应时间
- 对话解决率
- 客服工作量排名
个人报表:
- 个人处理的对话数量
- 平均首次响应时间
- 客户满意度评分
报告导出:支持将报表数据导出为 CSV 格式,用于进一步分析或制作PPT。
五、常见问题与解决方案
Q1:网站聊天组件不显示?
排查步骤:
- 确认
FRONTEND_URL配置正确 - 检查浏览器控制台是否有跨域错误
- 确认防火墙开放了 3000 端口
- 验证 websiteToken 是否正确
Q2:邮件收不到或发不出?
邮件问题排查:
- 检查 SMTP/IMAP 配置是否正确
- 确认邮箱开启了 IMAP/SMTP 服务
- Gmail 等服务商需要开启「低安全性应用」或使用应用专用密码
- 检查垃圾邮件文件夹
Q3:对话通知不推送?
确保 Sidekiq 容器正常运行:
docker compose ps sidekiq
docker logs sidekiq --tail=100
同时检查浏览器通知权限设置。
Q4:如何迁移 Chatwoot 数据?
完整备份需要备份以下数据:
# 备份数据库
docker compose exec postgres pg_dump -U postgres chatwoot > chatwoot_db.sql
# 备份文件存储
tar -czf chatwoot_storage.tar.gz ./chatwoot-data
恢复时依次导入数据库和文件。
Q5:支持中文界面吗?
Chatwoot 支持多语言。进入「设置」→「个人资料」→「语言」,选择「简体中文」即可切换界面语言。
六、总结
Chatwoot 作为开源客服系统的优秀代表,提供了从多渠道接入到团队协作、从自动化处理到数据分析的完整功能栈。通过 Docker Compose 部署,可以快速在自有服务器上搭建功能完备的客服平台,掌控所有客户对话数据。其 MySQL 兼容的数据库设计和清晰的前后端分离架构,也便于二次开发和定制集成。对于希望提升客户服务质量又希望保持数据自主的企业,Chatwoot 是值得考虑的解决方案。
© 版权归无边界科技所有,发表评论请注明出处。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)