文档
须知
github地址:https://github.com/565800105/zlzchat 可以点个Star防止丢失
文档中 处请修改为你实际宿主机存在的挂载目录
部署成功后访问 /admin 登录账号:system 密码:admin123

全部订阅源地址 /atom
当前镜像最新版本:
应用最新版本(查看登录后首页标签):欢迎登陆!当前更新版本:

提示:可以使用常用微信注册的辅助账号使用(同手机号可以注册两个微信账号分为主号跟辅助号) 注册路径为 微信 我-》设置-》切换账号-》添加账号-》注册新账号-》通过当前微信的手机号辅助注册

钉钉webhook机器人通知



需通过钉钉登录后创建机器人群聊拿到对应的token跟秘钥,设置如下





复制后拿到秘钥

复制链接会拿到https://oapi.dingtalk.com/robot/send?access_token=**e1f045a59ae10e248880bff6bd9ab2631a41d33cbee17e7f414aea99f8 取出access_token=后的值即可

最后配置到后台参数这两个

飞书webhook机器人通知

飞书请将安全设置为签名校验

拿到webhook Url(为https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxxxxxxxxxxx)跟签名后设置到后台参数

cron定时任务
定时任务默认关闭,请从后台手动开启 
cron表达式不知道怎么写的可以用cron表达式生成工具,或者群里问
注意:表达式前两位不能为*号 如: 0 * * ? 这样会导致每分每秒都执行
生成表达式后点击查询最近10次运行时间,看看预计运行时间是否符合预期


开放api
需先从参数设置中设置api.apikey

执行公众号更新任务
/updateFeedAll?key=
指定某个公众号更新任务
/updateFeed?key=&wxsId=
获取指定某个公众号文章信息
不传pageNum、pageSize 默认1页20条
/getFeedArticleList?key=&wxsId=&pageNum=&pageSize=&orderByColumn=publish_time&isAsc=desc
docker原生命令服务安装
例如我服务器挂载的磁盘为/volume1 我需要把相关项目放到 /volume1/docker中
Mysql安装
1.创建数据库data文件后续持久化防止下次删除Mysql容器数据丢失
mkdir -p /mysql/conf.d
2.镜像拉取
3.启动容器
docker run -d \ --name mysql8 \ -p 3306:3306 \ -e TZ=Asia/Shanghai \ -e MYSQL_ROOT_PASSWORD=123456 \ -e MYSQL_DATABASE=gzhweb \ -v /mysql/data:/var/lib/mysql \ -v /mysql/conf.d:/etc/mysql/conf.d \ --restart unless-stopped \ mysql:8.0 \ --character-set-server=utf8mb4 \ --collation-server=utf8mb4_general_ci
4.检查是否容器安装成功
Redis安装
1.拉取镜像
2.启动容器
docker run -d \ --name redis \ -p 6379:6379 \ -e TZ=Asia/Shanghai \ -e REDIS_PASSWORD=123456 \ redis:latest \ --requirepass 123456 \ --appendonly yes
服务新装
1.创建项目目录
2.从镜像文件中拉取文件到创建的项目目录(如何省略这步?)
-v /zlzchat:/output \
crpi-ah24egza1axyf372.cn-hangzhou.personal.cr.aliyuncs.com/docker-zlz/ck: \
sh -c "cp -r /www/wwwroot/zlzchat/. /output/ && chown -R 1000:1000 /output"
检验是否拉取成功,查看目录下是否有拉取的项目文件

3.程序服务容器启动
docker run -d \
--name zlzchat \
-p 10082:801 \
-v /zlzchat:/www/wwwroot/zlzchat \
-e TZ=Asia/Shanghai \
-e JAVA_OPTS="-Duser.timezone=GMT+08 -Xms1024m -Xmx2048m -Dlogging.config=/www/wwwroot/zlzchat/resources/logback.xml" \
-e PROFILES_ACTIVE="pro" \
-e MYSQL_URL="jdbc:mysql://:3306/gzhweb?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8" \
-e TZ=Asia/Shanghai \
-e MYSQL_NAME="root" \
-e MYSQL_PWD="123456" \
-e SERVICE_PORT="801" \
-e REDIS_HOST="" \
-e REDIS_PORT="6379" \
-e REDIS_PASSWORD="123456" \
-e SERVER_URL=":10082" \
-e API_SERVER="https://server.zlzchat.top" \
-e PROFILE="/www/wwwroot/zlzchat/uploadPath" \
--restart always \
crpi-ah24egza1axyf372.cn-hangzhou.personal.cr.aliyuncs.com/docker-zlz/ck: \
java ${JAVA_OPTS} -jar /www/wwwroot/zlzchat/website.jar
-e 参数说明
PROFILES_ACTIV 请勿修改
MYSQL_URL 数据库地址
MYSQL_NAME 数据库登录名
MYSQL_PWD 数据库密码
REDIS_HOST redis地址
REDIS_PORT redis端口
REDIS_PASSWORD redis密码
SERVICE_PORT 服务容器内运行端口
SERVER_URL 服务对外访问地址
API_SERVER 中转服务地址,请勿改动
PROFILE 后续上传文件存储地址(容器内)
4.验证程序是否启动成功
docker logs -f --tail 100 zlzchat

服务更新方式一
1.首先删除原有容器
docker rm zlzchat
2.删除镜像
镜像id为 crpi-ah24egza1axyf372.cn-hangzhou.personal.cr.aliyuncs.com/docker-zlz/ck 开头的IMAGE ID
3.拉取最新jar包(如何省略这步?)
-v /zlzchat:/output \
crpi-ah24egza1axyf372.cn-hangzhou.personal.cr.aliyuncs.com/docker-zlz/ck: \
sh -c "cp -r /www/wwwroot/zlzchat/. /output/ && chown -R 1000:1000 /output"
4.程序服务容器启动
docker run -d \
--name zlzchat \
-p 10082:801 \
-v /zlzchat:/www/wwwroot/zlzchat \
-e TZ=Asia/Shanghai \
-e JAVA_OPTS="-Duser.timezone=GMT+08 -Xms1024m -Xmx2048m -Dlogging.config=/www/wwwroot/zlzchat/resources/logback.xml" \
-e PROFILES_ACTIVE="pro" \
-e MYSQL_URL="jdbc:mysql://:3306/gzhweb?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8" \
-e TZ=Asia/Shanghai \
-e MYSQL_NAME="root" \
-e MYSQL_PWD="123456" \
-e SERVICE_PORT="801" \
-e REDIS_HOST="" \
-e REDIS_PORT="6379" \
-e REDIS_PASSWORD="123456" \
-e SERVER_URL=":10082" \
-e API_SERVER="https://server.zlzchat.top" \
-e PROFILE="/www/wwwroot/zlzchat/uploadPath" \
--restart always \
crpi-ah24egza1axyf372.cn-hangzhou.personal.cr.aliyuncs.com/docker-zlz/ck: \
java ${JAVA_OPTS} -jar /www/wwwroot/zlzchat/website.jar
服务更新方式二
1.https://github.com/565800105/zlzchat
任选一种下载后覆盖到挂载目录,重启容器
docker-compose.yml 命令服务安装
例如我服务器挂载的磁盘为/volume1 我需要把相关项目放到 /volume1/docker中
服务新装
1.创建项目目录
2.从镜像文件中拉取文件到创建的项目目录(如何省略这步?)
-v /zlzchat:/output \
crpi-ah24egza1axyf372.cn-hangzhou.personal.cr.aliyuncs.com/docker-zlz/ck: \
sh -c "cp -r /www/wwwroot/zlzchat/. /output/ && chown -R 1000:1000 /output"
检验是否拉取成功,查看目录下是否有拉取的项目文件

3.配置docker-compose.yml 文件
services:
mysql8:
image: mysql:8.0
container_name: mysql8
ports:
- "3306:3306"
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: "123456"
MYSQL_DATABASE: gzhweb
volumes:
- "/mysql/data:/var/lib/mysql"
- "/mysql/conf.d:/etc/mysql/conf.d"
restart: unless-stopped
command: [
"--character-set-server=utf8mb4",
"--collation-server=utf8mb4_general_ci"
]
redis:
image: redis:latest
container_name: redis
ports:
- "6379:6379"
environment:
TZ: Asia/Shanghai
command: [
"--requirepass", "123456",
"--appendonly", "yes"
]
restart: unless-stopped
zlzchat:
image: crpi-ah24egza1axyf372.cn-hangzhou.personal.cr.aliyuncs.com/docker-zlz/ck:
container_name: zlzchat
ports:
- "10082:801"
environment:
TZ: Asia/Shanghai
PROFILES_ACTIVE: "pro"
MYSQL_URL: "jdbc:mysql://mysql8:3306/gzhweb?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8"
MYSQL_NAME: "root"
MYSQL_PWD: "123456"
SERVICE_PORT: "801"
REDIS_HOST: "redis"
REDIS_PORT: "6379"
REDIS_PASSWORD: "123456"
SERVER_URL: ":10082"
API_SERVER: "https://server.zlzchat.top"
PROFILE: "/www/wwwroot/zlzchat/uploadPath"
volumes:
- "/zlzchat:/www/wwwroot/zlzchat"
restart: always
depends_on:
- mysql8
- redis
command: >
sh -c "java
-Duser.timezone=GMT+08
-Xms1024m
-Xmx2048m
-Dlogging.config=/www/wwwroot/zlzchat/resources/logback.xml
-jar /www/wwwroot/zlzchat/website.jar"
4.运行 docker-compose up -d
服务更新方式一
1.首先删除原有容器
2.删除镜像
镜像id为 crpi-ah24egza1axyf372.cn-hangzhou.personal.cr.aliyuncs.com/docker-zlz/ck 开头的IMAGE ID
3.拉取最新jar包(如何省略这步?)
-v /zlzchat:/output \
crpi-ah24egza1axyf372.cn-hangzhou.personal.cr.aliyuncs.com/docker-zlz/ck: \
sh -c "cp -r /www/wwwroot/zlzchat/. /output/ && chown -R 1000:1000 /output"
4.重新执行docker-compose.yml
服务更新方式二
1.https://github.com/565800105/zlzchat
任选一种下载后覆盖到挂载目录,重启容器
非dokcer部署
windows本机部署方式
1.首先需要安装mysql、redis、jdk8+ 环境
2.数据库创建一个空数据库 名称为gzhweb ,字符集utf8mb4 排序规则为 utf8mb4_general_ci
3.github地址:https://github.com/565800105/zlzchat 下载编译后的代码
4.将编译后的代码放到要部署的文件夹内
5.修改resources文件夹下application.yml跟application-pro.yml配置(红框处都需要修改) 首次配置后更新代码这两个文件不要覆盖,否则需要重新设置


-e 参数说明
SERVER_URL 服务对外访问地址,就是你服务通过IP端口或域名能访问到的地址 例如 :http://sss.test.com 或 http://192...*:10082
API_SERVER 中转服务地址固定改为https://server.zlzchat.top
MYSQL_URL 数据库地址:jdbc:mysql://{链接地址}:{端口}/gzhweb?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
MYSQL_NAME 数据库登录名
MYSQL_PWD 数据库密码
REDIS_HOST redis地址
REDIS_PORT redis端口
REDIS_PASSWORD redis密码
SERVICE_PORT 服务容器内运行端口
PROFILE 后续上传文件存储地址Windows配置 例如 D:/www/wwwroot/uploadPath
6.设置完成后启动 cmd cd进入后项目目录后 执行命令:java -jar website.jar -Xms512m -Xmx512m -jar website.jar -Dfile.encoding=UTF-8 --spring.profiles.active=pro
项目部分功能截图





群聊

若过期请通过github项目地址issues留言
常见问题
架构问题
uname -m查看本系统架构
如果架构为arm64请更换镜像源
crpi-ah24egza1axyf372.cn-hangzhou.personal.cr.aliyuncs.com/docker-zlz/ck 改为 crpi-ah24egza1axyf372.cn-hangzhou.personal.cr.aliyuncs.com/docker-zlz/ckarm64
启动报错Waiting for changelog lock....
如下显示 
解决方案:
1.可视化工具直接修改此表如下状态 
2.无可视化工具,执行命令
docker exec -it mysql8 bash
mysql -h localhost -P 3306 -u root -p
输入数据库密码默认为123456
update gzhweb.DATABASECHANGELOGLOCK set LOCKED=0,LOCKGRANTED=null,LOCKEDBY=null;
windows系统非docker部署
windows系统只需要本机能访问到redis跟Mysql,并且有jdk8+环境即可 查看条目非dokcer部署
windows通过docker部署拉取文件都是0字节
这个问题在 Windows 上运行 Docker 时非常常见,根本原因是: Windows 的文件系统(NTFS)和 Linux 容器之间的挂载是通过虚拟文件系统层实现的(如 9p 文件系统 或 WSL2 的文件共享机制),存在写入延迟、缓存不一致、权限限制等问题,导致容器内看似写入了文件,但实际上宿主机上文件内容没有正确同步。 尤其是当你执行 cp 命令向挂载的目录写入文件时,容器内的写入操作可能只是“写入到了虚拟层”,而没有真正同步到宿主机的物理磁盘上,从而导致宿主机上的文件是空的或 0 字节。
解决方案:通过github地址:https://github.com/565800105/zlzchat 手动下载项目文件丢到挂载目录 跳过以下拉取最新jar包那一步骤

根据步骤执行后版本没更新
根本原因为:1.旧镜像没删除 2.文件没重新拉3.文件拉的地址跟安装时不一致
docker如果操作不清晰,经常更新不到位,可以从github下载文件覆盖挂载目录,直接docker-compose restart zlzchat
忘记登录密码
解决方案:
1.可视化工具直接修改此表如下字段
password改为51ac2ee511ec767e0154f771b0b5886b78e94e88d4e99683de388be804e8632d
salt改为e253cd

2.无可视化工具,执行命令
docker exec -it mysql8 bash
mysql -h localhost -P 3306 -u root -p
输入数据库密码默认为123456
update gzhweb.sys_user set password='51ac2ee511ec767e0154f771b0b5886b78e94e88d4e99683de388be804e8632d',salt='e253cd';
重置后密码恢复原始密码 admin123
账号经常499
微信读书针对账号会有人机识别(请求访问一定次数后出现),每次出现时等几个小时后会自动解除,也可进入微信读书app,搜索一个公众号进入主页弹出人机识别手动解除。
目前发现开读书会员风控会减少,但是达到一定量后还是会出现风控
同步提示,同步失败:已有任务进行中
可通过【系统管理-参数设置】菜单查看同步状态值是否为1不为1改成1

如果改动【系统管理-参数设置】还是不行需要通过【系统监控-缓存监控】菜单,查看redis键名是否有wxsSynchronous,有的话删除即可

为什么部署需要先拉取文件,操作步骤麻烦?
首先这样可以防止docker拉取很慢的时候可以通过其他途径如github,网站下载更新包进行更新,如果你的docker网络很好可以只挂载logs跟uploadPath文件夹,更新时不需要敲拉取镜像文件命令
docker原生:
-v /zlzchat/logs:/www/wwwroot/zlzchat/logs \
-v /zlzchat/uploadPath:/www/wwwroot/zlzchat/uploadPath \
更新命令:删除容器、删除镜像、重新docker run即可
docker-compose:
- "/zlzchat/logs:/www/wwwroot/zlzchat/logs"
- "/zlzchat/uploadPath:/www/wwwroot/zlzchat/uploadPath"
更新命令 docker-compose down && docker-compose pull zlzchat && docker-compose up -d