为 Hexo 添加统计功能:Docker 部署 Busuanzi 服务教程

/images/cover/20250103184959_OX6XnOyd.webp

自建 Hitokoto 服务
Hexo 添加 RSS 订阅功能
Hexo 自定义加载动画

简介

同样是因为默认的 https://busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js 已无法打开, 所以参考 self-hosted busuanzi 在本地服务器自建一个.

部署

根据 官方文档 使用 docker-compose 直接部署:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
services:
busuanzi:
image: xcsoft/busuanzi:latest
ports:
- 8888:8080
volumes:
- ./data/config.yaml:/app/config.yaml
# 如果不需要修改首页, 可以不需要挂载
- ./data/dist/index.html:/app/dist/index.html
environment:
WEB_LOG: true
WEB_DEBUG: false
WEB_CORS: "*"
BSZ_EXPIRE: 0
BSZ_SECRET: 给一个 uuid 即可
API_SERVER: 需要修改成最后绑定你的域名
REDIS_ADDRESS: redis-ip:redis-port
REDIS_PASSWORD: password
REDIS_DATABASE: 0
BSZ_PATHSTYLE: true
BSZ_ENCRYPT: MD516

配置文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Web:
Address: 0.0.0.0:8080 # 监听地址
Cors: "https://xsot.cn,https://google.com" # 跨域访问
Debug: false # 是否开启debug模式
Log: false # 是否开启日志
Redis:
Address: redis:6379 # redis地址
Password:
Database: 0
TLS: false # 是否使用TLS连接redis
Prefix: bsz # redis前缀
MaxIdle: 25 # 最大空闲连接数
MaxActive: 100 # 最大连接数
MinIdle: 25 # 最小空闲连接数
MaxRetries: 3 # 最大重试次数
Bsz:
Expire: 0 # 统计数据过期时间 单位秒, 请输入整数 (无任何访问, 超过这个时间后, 统计数据将被清空, 0为不过期)
Secret: "bsz" # JWT签名密钥 // 请设置为任意长度的随机值
Encrypt: "MD516" # 加密算法 (MD516 / MD532) 老版本请使用 MD532
PathStyle: true # 路径样式 (false: url&path, true: path) 老版本请使用 false, true 更便于数据迁移

# TIPS, 所有 config 内的设置, 均可使用 环境变量 覆盖
# Ex BSZ_SECRET=123 将覆盖 config.yaml 中的 Bsz.Secret

上述的配置文件是官方提供的, 我未做任何修改, 因为在 docker-compose.yml 中都可以直接覆盖.

部署后访问 http://ip:8888 检查是否部署成功:

20241229154732_dxuLdyt7.webp

我在上面挂载了 index.html 是因为需要修改 <script async src="https://域名/js"></script> 不然就是官方默认的.

Hexo 配置

修改主题配置

1
2
3
4
CDN:
...
option:
busuanzi: https://你的域名/js # http://busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js 默认的意无法打开

修改主题代码

修改文件 themes/anzhiyu/layout/includes/additional-js.pug

将一下代码:

1
script(async data-pjax src= theme.asset.busuanzi || '//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js')'

修改为:

1
script(async data-pjax data-prefix="busuanzi_value" src= theme.asset.busuanzi || '//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js')

记得一定要加上 data-prefix="busuanzi_value", 新老版本兼容问题的处理.

最后 Hexo 三连击即可显示效果.