Loading... **自建不蒜子** 一个基于 Golang + Redis 简单、轻量的网页计数器, [项目](https://gitee.com/soxft/busuanzi) 统计站点的 UV, PV 统计子页面的 UV, PV 使用 Docker 一键部署 隐私保障 仅存储 HASH 兼容 Pjax 技术的网页 支持从原版不蒜子迁移数据 **一、安装** 持多种运行方式: 源码编译运行, Docker 运行 1. 源码编译运行 git clone https://gitee.com/soxft/busuanzi.git && cd busuanzi go build -o busuanzi main.go 根据提示修改 config.yml 编辑dist/busuanzi.js或编译dist/busuanzi.ts, 替换链接为自己部署的。 通过命令 ./busuanzi 启动程序 **2. 使用 Docker 运行 (Recommend)【推荐此法安装】** 在一个空文件夹中创建名为 docker-compose.yaml 的文件, 内容如下或见 docker-compose.yaml ``` version: "3.8" services: redis: image: "redis:alpine" volumes: - ./data/redis:/data bsz: image: "xcsoft/busuanzi:latest" ports: - "8080:8080" # 修改映射到宿主机的端口 host:container links: - redis depends_on: - redis environment: WEB_LOG: true # 是否开启日志 WEB_DEBUG: false # 是否开启debug模式 WEB_CORS: "*" # 跨域访问 BSZ_EXPIRE: 0 # 统计数据过期时间 单位秒, 请输入整数 (无任何访问, 超过这个时间后, 统计数据将被清空, 0为不过期) BSZ_SECRET: "bsz" # 签名密钥 // 请设置为任意长度的随机值 API_SERVER: http://127.0.0.1:8080 # 填写你的 API 地址 REDIS_ADDRESS: redis:6379 # redis 地址 BSZ_PATHSTYLE: true BSZ_ENCRYPT: MD516 ``` 环境变量设置 环境变量 参数说明 | 环境变量 | 参数说明 | | :--: | :--: | | API_SERVER busuanzi.js | API地址 | | WEB_LOG 是否开启日志 | 默认 true | | REDIS_ADDRESS Redis 地址 | 默认为 redis:6379 | | REDIS_PASSWORD Redis | 默认空 | | BSZ_SECRET 签名密钥 | 使用任意长度的字符串填充 | 执行 docker compose up -d 服务将会运行在 8080 端口, 也可以自行修改 docker-compose.yml 指定端口 您也可以修改 ~/data/bsz/config.yaml 自定义配置, 后重启容器。 通用环境变量 Tips: 所有 config 内的设置, 均可使用 环境变量 覆盖 Ex. BSZ_SECRET = 123 将覆盖 config.yaml 中的 Bsz.Secret 3. 二进制文件运行 ``` # 部分静态资源并未打包在 二进制文件内, 因此需要 clone 整个项目到本地 $ git clone https://gitee.com/soxft/busuanzi && cd busuanzi # 在 Release 中选择适合自己系统版本的二进制文件 (在 v2.8.0 后, 所有二进制文件由 Github Action 自动构建) 此处以常见服务器 (Linux & amd64) 作为演示 $ wget https://github.com/soxft/busuanzi/releases/download/v2.8.8/busuanzi-linux-amd64-v2.8.8 -o busuanzi $ chmod +x busuanzi # 运行 busuanzi $ ./busuanzi ``` {dotted startColor="#ff6c6c" endColor="#1989fa"/} **二、快捷使用** *1、本站不蒜子* ``` <script defer src="https://bsz.211119.xyz/js"></script> 本文总阅读量 <span id="busuanzi_page_pv"></span> 次 本文总访客量 <span id="busuanzi_page_uv"></span> 人 本站总访问量 <span id="busuanzi_site_pv"></span> 次 本站总访客数 <span id="busuanzi_site_uv"></span> 人 ``` *2、杜老师不蒜子* ``` <script defer src="https://busuanzi.9420.ltd/js"></script> 本文总阅读量 <span id="busuanzi_page_pv"></span> 次 本文总访客量 <span id="busuanzi_page_uv"></span> 人 本站总访问量 <span id="busuanzi_site_pv"></span> 次 本站总访客数 <span id="busuanzi_site_uv"></span> 人 ``` 相对于原版的不蒜子, 您可能需要修改标签 ID. 当然您也可以参阅下方 可选参数 -> Ex -> 3, 通过直接修改 data-prefix 实现兼容. 可选参数 | 属性 | 默认值 | 释义 | | :--: | :--: | :--: | | data-api | http://127.0.0.1:8080/api | 不蒜子的API地址 | | pjax | 表格 | 是否监听 pjax 变化 | | data-prefix | busuanzi | 标签前缀 | Ex 在一些启用了 pjax 技术的网站中, 可以在 js 标签中加入 pjax 属性, 来实现当网站切换页面时自动更新页面计数的效果: <script defer pjax src="https://busuanzi.9420.ltd/js"></script> 可以使用 data-api 属性, 指定后端API的接口: <script defer data-api="https://bsz.com/api" src="https://busuanzi.9420.ltd/js"></script> 可以使用 data-style 属性, 指定数据的显示样式 <script defer data-style="short" src="https://busuanzi.9420.ltd/js"></script> short 显示为短形式, 如 1024 将显示为 1k comma 以逗号分隔数据, 如 1024 将显示为 1,024 default 默认模式, 显示完整的数据 不同于原版, 为了更加精简, 我们去除了 HTML ID 中的 value 字符, 但您仍然可以通过指定 data-prefix 属性来进行兼容: <script defer data-prefix="busuanzi_value" src="https://busuanzi.9420.ltd/js"></script> 最后修改:2025 年 01 月 28 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏