简洁的网站访客统计服务。单一二进制,零外部依赖。
- 零外部依赖 - 单一二进制,内置 SQLite,无需 Redis/外部数据库
- 高性能 - 内存存储 + DashMap 并发安全
- SQLite 持久化 - 内置数据库,支持事务,数据安全可靠
- 完整管理后台 - 查看/编辑/删除/导入/导出数据
- Sitemap 同步 - 从 busuanzi.ibruce.info 迁移数据
- 兼容原版 - 支持 site_pv、site_uv、page_pv
从 Releases 下载适合你平台的版本:
| 平台 | 文件 |
|---|---|
| Linux x86_64 | busuanzi-x86_64-unknown-linux-gnu.tar.gz |
| Linux x86_64 (静态) | busuanzi-x86_64-unknown-linux-musl.tar.gz |
| Linux ARM64 | busuanzi-aarch64-unknown-linux-gnu.tar.gz |
| Linux ARM64 (静态) | busuanzi-aarch64-unknown-linux-musl.tar.gz |
| Linux ARMv7 | busuanzi-armv7-unknown-linux-gnueabihf.tar.gz |
| macOS Apple Silicon | busuanzi-aarch64-apple-darwin.tar.gz |
| macOS Intel | busuanzi-x86_64-apple-darwin.tar.gz |
| Windows x86_64 | busuanzi-x86_64-pc-windows-msvc.zip |
| Windows ARM64 | busuanzi-aarch64-pc-windows-msvc.zip |
# Linux/macOS 示例
tar xzf busuanzi-*.tar.gz
./busuanzi-rs# 安装 Rust (如未安装)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# 克隆项目
git clone https://github.com/AdingApkgg/bsz.git
cd bsz
# 编译
cargo build --release
# 运行
./target/release/busuanzi-rs访问:
- API 文档: http://localhost:8080/
- 管理后台: http://localhost:8080/admin
复制 .env.example 为 .env 并修改:
cp .env.example .env| 变量 | 说明 | 默认值 |
|---|---|---|
PORT |
监听端口 | 8080 |
DOMAIN |
对外域名 | localhost:PORT |
ADMIN_TOKEN |
管理密码 | (空则禁用) |
SAVE_INTERVAL |
保存间隔(秒) | 30 |
在运行目录创建 static/ 文件夹,放入同名文件即可覆盖默认页面:
./static/
├── index.html # 自定义首页
├── admin.html # 自定义管理面板
├── robots.txt # 自定义 robots
├── llms.txt # 自定义 AI 说明
└── sitemap.xml # 自定义站点地图
支持 {{HOST}} 占位符,会被替换为配置的 DOMAIN 值。
| 方法 | 路径 | 说明 |
|---|---|---|
POST /api |
统计并返回 PV/UV | |
GET /api |
仅获取 (不计数) | |
PUT /api |
仅提交 (不返回) | |
GET /ping |
健康检查 |
fetch('https://your-domain.com/api', {
method: 'POST',
headers: { 'x-bsz-referer': location.href }
})
.then(res => res.json())
.then(({ data }) => {
document.getElementById('site_pv').textContent = data.site_pv;
document.getElementById('site_uv').textContent = data.site_uv;
document.getElementById('page_pv').textContent = data.page_pv;
});设置 ADMIN_TOKEN 后访问 /admin:
- 📊 查看所有站点和页面统计
- ✏️ 编辑 PV/UV 数值
- 🗑️ 删除站点或页面数据
- 📤 导出 JSON 数据
- 📥 导入 JSON 数据
- 🔄 从 Sitemap 同步旧 busuanzi 数据
数据自动保存到 data.db (SQLite 数据库):
- 每 30 秒自动保存
- Ctrl+C 退出时自动保存
- 启动时自动加载
备份只需复制 data.db 文件。可用任意 SQLite 工具查看/编辑。
- 访问管理后台
/admin - 点击 "同步" 按钮
- 输入你的 sitemap.xml 地址
- 等待自动从 busuanzi.ibruce.info 拉取数据
# 复制程序
sudo mkdir -p /opt/bsz
sudo cp target/release/busuanzi-rs /opt/bsz/
sudo cp .env /opt/bsz/
# 安装服务
sudo cp bsz.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now bsz
# 查看状态
sudo systemctl status bsz
sudo journalctl -u bsz -f参考 nginx.conf.example 配置 HTTP/3 + HTTP/2 + HSTS + SSL。
.
├── src/ # Rust 源码
│ ├── api/ # API 处理器
│ ├── core/ # 计数逻辑
│ ├── middleware/ # 中间件
│ └── main.rs # 入口
├── static/ # 嵌入的静态文件
├── bsz.service # systemd 服务配置
├── nginx.conf.example # Nginx 配置示例
└── data.db # SQLite 数据库 (运行时生成)
MIT
