一,背景
-
网站接入在线客服功能,核心需求是实现访客与客服的实时高效沟通、访客信息精准管理、客服工作规范化管控及数据可追溯分析。
-
在选型上,若追求低成本、快速落地,优先选择GO-FLY开源在线客服系统,提供标准JS嵌入方式,Java后端无需大量开发工作即可快速集成,且开源免费可商用、支持多平台适配,能满足上述核心功能需求;
-
选型对比:
| 项目 | 语言 | 嵌入方式 | 核心功能 | 部署难度 | 适合场景 |
|---|---|---|---|---|---|
| yunkefu | Java/SpringBoot | JS/iframe | 全功能客服 | 低 | 中小 Java 项目快速上线 |
| SayOrder | Java | API / 嵌入 | 智能 + 基础客服 | 低 | 电商、智能咨询 |
| Rocket.Chat | Node.js | JS/iframe + Java API | 强大 IM | 中 | 需复杂 IM+Java 业务 |
| GOFLY | Go | JS 嵌入 | 轻量客服 | 极低 | 快速嵌入、轻量需求 |
二,介绍GO-FLY开源在线客服系统
- 编程语言:Golang
- Web 框架:Gin
- 身份验证:JWT(JSON Web Tokens)
- WebSocket:用于客服之间的即时通讯
- 数据库:GORM(用于操作 MySQL)
- 前端框架:Vue
- 命令行工具: Cobra
GO-FLY是一款基于Go语言构建的开源即时通讯与在线客服系统,核心依托Gin高性能HTTP框架及GORM数据库ORM开发,具备轻量高效、部署便捷、可扩展性强的特点,可免费商用且支持私有化部署。
该系统采用前后端分离架构,后端基于Go语言开发,充分利用Go语言的并发特性,支持高并发请求处理,内存消耗低;前端采用Vue3+TypeScript+Arco Design组件库开发,界面简洁直观,易于客服人员快速上手操作。
在功能上,GO-FLY全面覆盖网站在线客服核心需求,支持访客与客服实时沟通(含文字、表情、图片、文件等多种消息格式)、多客服账号管理、会话自动/手动分配、访客信息展示(IP、地区、访问轨迹等)、聊天记录存储与查询、数据统计分析等。
在适配性方面,GO-FLY支持Java、PHP、Python等多语言网站接入,对于Java网站而言,无需进行复杂的代码开发,仅需嵌入一段标准JS代码即可快速集成,同时支持通过REST API或gRPC与Java后端实现跨语言通信,确保与网站现有Java技术架构无缝兼容、数据互通,大幅降低集成成本与周期。
三,部署GO-FLY环境:安装清单
- 系统: 一台新的虚拟机linux CentOS 7.6
- mysql版本:5.7
- Golang版本:1.22.3
- nginx版本:1.20.1
- gofly项目:没看见有版本说明,下载日期是2026-03-31
资源下载:go环境和gofly项目
四,部署GO-FLY环境:Nginx
-
安装nginx的原因:访客发送的文件能成功上传(客服能看到 docx 卡片),但点击下载 / 预览时 404,原因是:GOFLY
服务没有配置静态文件访问路由,/static/upload/ 目录没有对外开放!
-
推荐Nginx 反向代理修复:需要把 static/upload 目录暴露出来。如果你的 Java Web 项目也在同一台服务器,直接用
Nginx 统一代理是最稳的
- 先备份旧源
bash
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
- 替换成阿里云源(能上网就能用)
bash
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
3.必须先装 epel 源
bash
yum install -y epel-release
4.清理并重新生成缓存
bash
yum clean all
yum makecache
5.安装 Nginx
bash
yum install -y nginx
6.nginx配置
bash
vim /etc/nginx/conf.d/gofly.conf
输入下面内容:
bash
server {
listen 80;
server_name 192.168.211.128;
location /static/ {
root /home/gofly/goflylivechat-master;
}
location / {
proxy_pass http://127.0.0.1:8081;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
7.重启 nginx
bash
nginx -t
systemctl restart nginx
五,部署GO-FLY环境:Golang
- 在线下载go包,或者使用提供的
bash
wget https://dl.google.com/go/go1.22.3.linux-amd64.tar.gz
- 设置Go 官方代理
bash
go env -w GOPROXY=https://goproxy.cn,direct
- 解压、设置环境
bash
tar -C /usr/local -zxf go1.22.3.linux-amd64.tar.gz
echo "export PATH=\$PATH:/usr/local/go/bin" >> /etc/profile
source /etc/profile
4.验证版本
bash
go version
六,部署GO-FLY环境:MySQL
- 安装 MySQL5.7 官方源
bash
rpm -ivh https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
- 安装 MySQL 5.7 服务
bash
yum install -y mysql-community-server --nogpgcheck
- 启动 MySQL
bash
systemctl start mysqld
systemctl enable mysqld
- 查看初始密码(非常重要)
bash
grep 'temporary password' /var/log/mysqld.log
你会看到类似:
bash
A temporary password is generated for root@localhost: xxxxxx
- 修改密码
bash
mysql -uroot -p
使用初始密码登录
然后执行下面 3 行(直接复制):
bash
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Admin@123';
flush privileges;
exit;
- 创建gofly的数据库
bash
#连接mysql
mysql -uroot -p
#密码Admin@123
#连接创建库
create database gofly charset utf8mb4;
七,部署GO-FLY环境:GO-FLY服务
-
复制项目包(.zip包)到系统内,该项目是githup的,本文已经提供了该项目包
-
解压zip,并进入goflylivechat-master目录
3.配置项目数据库连接
bash
vim config/mysql.json
配置mysql的属性
bash
{
"Server": "127.0.0.1",
"Port": "3306",
"Database": "gofly",
"Username": "root",
"Password": "Admin@123"
}
- 安装项目依赖
bash
go mod tidy
- 编译项目
bash
go build -o kefu main.go
- 初始化数据库
bash
./kefu install
- 启动gofly客服服务
bash
# 启动
./kefu server
其他命令:
bash
#关闭
pkill -f kefu
bash
# 后台运行,日志写入 nohup.out
nohup ./kefu server &
- 系统信息:gofly的端口默认是8081
- 管理后台:http://你的服务器IP:8081/login
- 默认账号:agent
- 密码:123456 ,注:没在官网上找到默认密码,我是自己从数据库该的密码
进入mysql的gofly库,直接改密码:
bash
UPDATE user SET password = 'e10adc3949ba59abbe56e057f20f883e' WHERE name = 'agent';
- 关闭防火墙:
bash
sudo systemctl stop firewalld
sudo systemctl disable firewalld
- 访问


八,既有项目引入,测试
- 在你的项目里引入聊天页面:在gofly项目首页已经贴出script代码了,直接复制过来即可,下面是完整html
bash
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=\, initial-scale=1.0">
<title>测试在线客服</title>
</head>
<body style="background-color: #f2f2f2;">
<div style="line-height: 22px;font-size: 18px;margin: 15px;">
测试在线客服
</div>
</body>
<script>
(function(global, document, scriptUrl, callback) {
const head = document.getElementsByTagName('head')[0];
const script = document.createElement('script');
script.type = 'text/javascript';
script.src = scriptUrl + "/static/js/chat-widget.js";
script.onload = script.onreadystatechange = function () {
if (!this.readyState || this.readyState === "loaded" || this.readyState === "complete") {
callback(scriptUrl);
}
};
head.appendChild(script);
})(window, document, "http://192.168.211.128:8081", function(baseUrl) {
CHAT_WIDGET.initialize({
API_URL: baseUrl,
AGENT_ID: "agent",
});
});
</script>
</html>
- 测试:
网页效果:

gofly服务端效果:

另外再设置页面,可以设置一下欢迎语:

- 测试结果:
gofly聊天支持 文字、图片、文档(若文档需要网页上点击下载,需要用nginx代理静态资源)
九,扩展功能
支持API,自己研究把