148浏览量
5参与者
paabh
活动 85天
parkertaylor
✨这是 parkertaylor 首次发帖 - 让我们欢迎他/她加入社区吧!
parkertaylor
parkertaylor
楼主
# PT Stats
PT Stats 是一个低资源 PT 刷流统计面板。它通过站点首页显示的累计上传/下载量作为统计口径,定时保存 SQLite 快照,再计算今日、昨日、本周、本月、每日、每月和 6 小时时段增量。
## 醒目提示和免责声明
> 本项目主要由 AI 生成和迭代,代码、解析规则和统计结果都可能存在错误或遗漏。请把它当作个人测试工具使用,不要把统计结果作为计费、考核或其它严肃用途的唯一依据。
>
> 项目需要在本地数据库中保存站点 Cookie / API Key、IYUU Token、Basic Auth 密码等敏感数据。强烈建议只在家庭网络、NAS 内网或可信测试环境中运行,不建议直接暴露到公网。生产环境请至少修改默认登录密码、限制访问来源,并自行承担账号和数据安全风险。
默认端口是 `8098`。新部署建议使用 `pt-stats` 作为镜像名、容器名和数据目录名。
## 功能
- 多站点统计,当前支持 空、人人、NexusPHP、Unit3D、Gazelle、Luminance、Avistaz、TNode、馒头 API、套 等解析器。
- SQLite 单文件存储,默认路径 `/data/stats.db`。
- 首页概览展示全部站点的启用状态、总量、今日/本周/本月上传下载、分时段增量、最近抓取和下次抓取时间,并支持点击表头排序。
- 站点管理支持新增、编辑、启停、测试、抓取、查看记录、删除,以及全选、反选、手动勾选和批量操作。
- 页面配置站点定义、站点名称、站点类型、站点域名、Cookie/API Key、抓取计划和启用状态。
- 默认按固定间隔自动抓取:`00:00` 起算,每 60 分钟一次;也可以切换为 Cron。
- IYUU 通知支持今日流量汇总、测试发送、包含/排除停用站点、固定间隔或 Cron 通知周期,默认 `00:01` 起算、每 6 小时一次。
- 支持手动立即更新,不限制最小间隔。
- 支持手动新增历史快照,遇到同一站点同一时间点会提示覆盖。
- 支持批量导入历史快照。
- 支持查看、编辑、删除手动录入或导入的历史数据。
- 支持查看抓取记录,包含成功/失败、累计量、较上次增量、当日增量、当前 6 小时增量、耗时和错误信息。
- 展示当前总上传/下载、今日、昨日、本周、本月、最近 1/6/24 小时。
- 展示当天 00-06、06-12、12-18、18-24 四个时段。
- 展示每日明细和每月数据。
- 默认启用 Basic Auth 登录保护。



# PT Stats 在线拉取镜像部署文档
## 安全警告
本项目主要由 AI 生成和迭代,代码、解析规则、统计结果和安全边界均未经过专业安全审查,可能存在错误、遗漏或安全风险。
PT Stats 会在本地数据库中保存站点 Cookie、API Key、IYUU Token、Basic Auth 密码等敏感信息。强烈建议仅在家庭网络、NAS 内网、测试 VPS 或可信环境中运行,不建议直接开放到公网。本工具仅供个人测试和辅助统计使用,不应作为计费、考核或其它严肃用途的唯一依据。
正式运行前请至少做到:
- 修改默认登录用户名和密码。
- 不要把服务直接暴露到公网。
- 如必须远程访问,请使用 VPN、反向代理访问控制、防火墙白名单或其它安全措施。
- 定期备份 `/data/stats.db`。
## 镜像说明
本文只介绍从网上直接拉取镜像部署,不包含本地构建步骤。
Docker Hub 镜像:
```text
mycode65535/pt-stats:latest
```
如果 Docker Hub 拉取较慢,可以使用毫秒镜像前缀:
```text
docker.1ms.run/mycode65535/pt-stats:latest
```
后续示例默认使用 Docker Hub 镜像。需要使用毫秒镜像时,把镜像名替换为 `docker.1ms.run/mycode65535/pt-stats:latest` 即可。
## 数据目录
容器内数据库路径固定为:
```text
/data/stats.db
```
只要宿主机目录挂载到容器的 `/data`,升级或重建容器时数据就不会丢。
推荐宿主机目录:
```text
VPS: /opt/pt-stats
NAS: /share/Container/data/pt-stats
```
如果你的 NAS 不是 QNAP,宿主机目录可以改成自己的固定目录,例如群晖可使用:
```text
/volume1/docker/pt-stats
```
## 一、Docker 命令部署
### 1. VPS 环境
创建数据目录:
```bash
mkdir -p /opt/pt-stats
```
拉取镜像:
```bash
docker pull mycode65535/pt-stats:latest
```
如果 Docker Hub 拉取慢,可以改用毫秒镜像:
```bash
docker pull docker.1ms.run/mycode65535/pt-stats:latest
```
启动容器:
```bash
docker run -d \
--name pt-stats \
--restart unless-stopped \
-p 8098:8098 \
-e TZ=Asia/Shanghai \
-e PORT=8098 \
-e DB_PATH=/data/stats.db \
-e DEFAULT_SITE=HDSky \
-e DEFAULT_INTERVAL_MINUTES=60 \
-e DEFAULT_INTERVAL_START=00:00 \
-e DEFAULT_DAYS=30 \
-e AUTH_ENABLED=true \
-e AUTH_USER=admin \
-e AUTH_PASSWORD=change-me \
-v /opt/pt-stats:/data \
mycode65535/pt-stats:latest
```
使用毫秒镜像启动容器:
```bash
docker run -d \
--name pt-stats \
--restart unless-stopped \
-p 8098:8098 \
-e TZ=Asia/Shanghai \
-e PORT=8098 \
-e DB_PATH=/data/stats.db \
-e DEFAULT_SITE=HDSky \
-e DEFAULT_INTERVAL_MINUTES=60 \
-e DEFAULT_INTERVAL_START=00:00 \
-e DEFAULT_DAYS=30 \
-e AUTH_ENABLED=true \
-e AUTH_USER=admin \
-e AUTH_PASSWORD=change-me \
-v /opt/pt-stats:/data \
docker.1ms.run/mycode65535/pt-stats:latest
```
检查运行状态:
```bash
docker ps --filter name=pt-stats
docker logs -f pt-stats
```
浏览器访问:
```text
http://服务器IP:8098/
```
### 2. NAS 环境
NAS 建议优先使用内网访问,不要把端口直接映射到公网。
以 QNAP 常用目录为例,创建数据目录:
```bash
mkdir -p /share/Container/data/pt-stats
```
拉取镜像:
```bash
docker pull mycode65535/pt-stats:latest
```
如果 Docker Hub 拉取慢,可以改用毫秒镜像:
```bash
docker pull docker.1ms.run/mycode65535/pt-stats:latest
```
启动容器:
```bash
docker run -d \
--name pt-stats \
--restart unless-stopped \
-p 8098:8098 \
-e TZ=Asia/Shanghai \
-e PORT=8098 \
-e DB_PATH=/data/stats.db \
-e DEFAULT_SITE=HDSky \
-e DEFAULT_INTERVAL_MINUTES=60 \
-e DEFAULT_INTERVAL_START=00:00 \
-e DEFAULT_DAYS=30 \
-e AUTH_ENABLED=true \
-e AUTH_USER=admin \
-e AUTH_PASSWORD=change-me \
-v /share/Container/data/pt-stats:/data \
mycode65535/pt-stats:latest
```
使用毫秒镜像启动容器:
```bash
docker run -d \
--name pt-stats \
--restart unless-stopped \
-p 8098:8098 \
-e TZ=Asia/Shanghai \
-e PORT=8098 \
-e DB_PATH=/data/stats.db \
-e DEFAULT_SITE=HDSky \
-e DEFAULT_INTERVAL_MINUTES=60 \
-e DEFAULT_INTERVAL_START=00:00 \
-e DEFAULT_DAYS=30 \
-e AUTH_ENABLED=true \
-e AUTH_USER=admin \
-e AUTH_PASSWORD=change-me \
-v /share/Container/data/pt-stats:/data \
docker.1ms.run/mycode65535/pt-stats:latest
```
检查运行状态:
```bash
docker ps --filter name=pt-stats
docker logs -f pt-stats
```
浏览器访问:
```text
http://NAS_IP:8098/
```
如果你的 NAS 数据目录不是 `/share/Container/data/pt-stats`,只需要替换 `-v` 左侧的宿主机路径。例如群晖可以使用:
```bash
-v /volume1/docker/pt-stats:/data
```
## 二、Docker Compose 部署
### 1. VPS 环境
创建数据目录和部署目录:
```bash
mkdir -p /opt/pt-stats
mkdir -p /opt/pt-stats-compose
cd /opt/pt-stats-compose
```
创建 `docker-compose.yml`:
```yaml
services:
pt-stats:
image: mycode65535/pt-stats:latest
container_name: pt-stats
restart: unless-stopped
ports:
- "8098:8098"
environment:
TZ: Asia/Shanghai
PORT: 8098
DB_PATH: /data/stats.db
DEFAULT_SITE: HDSky
DEFAULT_INTERVAL_MINUTES: 60
DEFAULT_INTERVAL_START: "00:00"
DEFAULT_DAYS: 30
AUTH_ENABLED: "true"
AUTH_USER: "admin"
AUTH_PASSWORD: "change-me"
volumes:
- /opt/pt-stats:/data
```
使用毫秒镜像时,`docker-compose.yml` 可以写成:
```yaml
services:
pt-stats:
image: docker.1ms.run/mycode65535/pt-stats:latest
container_name: pt-stats
restart: unless-stopped
ports:
- "8098:8098"
environment:
TZ: Asia/Shanghai
PORT: 8098
DB_PATH: /data/stats.db
DEFAULT_SITE: HDSky
DEFAULT_INTERVAL_MINUTES: 60
DEFAULT_INTERVAL_START: "00:00"
DEFAULT_DAYS: 30
AUTH_ENABLED: "true"
AUTH_USER: "admin"
AUTH_PASSWORD: "change-me"
volumes:
- /opt/pt-stats:/data
```
启动:
```bash
docker compose up -d
```
检查:
```bash
docker compose ps
docker compose logs -f pt-stats
```
浏览器访问:
```text
http://服务器IP:8098/
```
### 2. NAS 环境
以 QNAP 常用目录为例:
```bash
mkdir -p /share/Container/data/pt-stats
mkdir -p /share/Container/compose/pt-stats
cd /share/Container/compose/pt-stats
```
创建 `docker-compose.yml`:
```yaml
services:
pt-stats:
image: mycode65535/pt-stats:latest
container_name: pt-stats
restart: unless-stopped
ports:
- "8098:8098"
environment:
TZ: Asia/Shanghai
PORT: 8098
DB_PATH: /data/stats.db
DEFAULT_SITE: HDSky
DEFAULT_INTERVAL_MINUTES: 60
DEFAULT_INTERVAL_START: "00:00"
DEFAULT_DAYS: 30
AUTH_ENABLED: "true"
AUTH_USER: "admin"
AUTH_PASSWORD: "change-me"
volumes:
- /share/Container/data/pt-stats:/data
```
使用毫秒镜像时,`docker-compose.yml` 可以写成:
```yaml
services:
pt-stats:
image: docker.1ms.run/mycode65535/pt-stats:latest
container_name: pt-stats
restart: unless-stopped
ports:
- "8098:8098"
environment:
TZ: Asia/Shanghai
PORT: 8098
DB_PATH: /data/stats.db
DEFAULT_SITE: HDSky
DEFAULT_INTERVAL_MINUTES: 60
DEFAULT_INTERVAL_START: "00:00"
DEFAULT_DAYS: 30
AUTH_ENABLED: "true"
AUTH_USER: "admin"
AUTH_PASSWORD: "change-me"
volumes:
- /share/Container/data/pt-stats:/data
```
启动:
```bash
docker compose up -d
```
检查:
```bash
docker compose ps
docker compose logs -f pt-stats
```
浏览器访问:
```text
http://NAS_IP:8098/
```
如果在 NAS 的图形界面里使用 Container Station、Container Manager 或类似工具,可以直接导入上面的 Compose YAML。需要注意宿主机挂载目录必须存在,并且不要把 `AUTH_PASSWORD` 保持为默认值。
## 三、升级方法
升级前建议先备份数据库。数据库文件在宿主机数据目录里,路径取决于你的部署环境:
```text
VPS: /opt/pt-stats/stats.db
NAS: /share/Container/data/pt-stats/stats.db
```
### 1. Docker 命令部署的升级
#### VPS
备份数据库:
```bash
cp /opt/pt-stats/stats.db /opt/pt-stats/stats-backup-before-upgrade.db
```
拉取新镜像:
```bash
docker pull mycode65535/pt-stats:latest
```
如果使用毫秒镜像:
```bash
docker pull docker.1ms.run/mycode65535/pt-stats:latest
```
停止并删除旧容器:
```bash
docker stop pt-stats
docker rm pt-stats
```
用原来的数据目录重新启动:
```bash
docker run -d \
--name pt-stats \
--restart unless-stopped \
-p 8098:8098 \
-e TZ=Asia/Shanghai \
-e PORT=8098 \
-e DB_PATH=/data/stats.db \
-e DEFAULT_SITE=HDSky \
-e DEFAULT_INTERVAL_MINUTES=60 \
-e DEFAULT_INTERVAL_START=00:00 \
-e DEFAULT_DAYS=30 \
-e AUTH_ENABLED=true \
-e AUTH_USER=admin \
-e AUTH_PASSWORD=change-me \
-v /opt/pt-stats:/data \
mycode65535/pt-stats:latest
```
检查日志:
```bash
docker logs -f pt-stats
```
#### NAS
备份数据库:
```bash
cp /share/Container/data/pt-stats/stats.db \
/share/Container/data/pt-stats/stats-backup-before-upgrade.db
```
拉取新镜像:
```bash
docker pull mycode65535/pt-stats:latest
```
如果使用毫秒镜像:
```bash
docker pull docker.1ms.run/mycode65535/pt-stats:latest
```
停止并删除旧容器:
```bash
docker stop pt-stats
docker rm pt-stats
```
用原来的数据目录重新启动:
```bash
docker run -d \
--name pt-stats \
--restart unless-stopped \
-p 8098:8098 \
-e TZ=Asia/Shanghai \
-e PORT=8098 \
-e DB_PATH=/data/stats.db \
-e DEFAULT_SITE=HDSky \
-e DEFAULT_INTERVAL_MINUTES=60 \
-e DEFAULT_INTERVAL_START=00:00 \
-e DEFAULT_DAYS=30 \
-e AUTH_ENABLED=true \
-e AUTH_USER=admin \
-e AUTH_PASSWORD=change-me \
-v /share/Container/data/pt-stats:/data \
mycode65535/pt-stats:latest
```
检查日志:
```bash
docker logs -f pt-stats
```
### 2. Docker Compose 部署的升级
#### VPS
进入 Compose 目录:
```bash
cd /opt/pt-stats-compose
```
备份数据库:
```bash
cp /opt/pt-stats/stats.db /opt/pt-stats/stats-backup-before-upgrade.db
```
拉取新镜像并重建容器:
```bash
docker compose pull
docker compose up -d
```
检查:
```bash
docker compose ps
docker compose logs -f pt-stats
```
#### NAS
进入 Compose 目录:
```bash
cd /share/Container/compose/pt-stats
```
备份数据库:
```bash
cp /share/Container/data/pt-stats/stats.db \
/share/Container/data/pt-stats/stats-backup-before-upgrade.db
```
拉取新镜像并重建容器:
```bash
docker compose pull
docker compose up -d
```
检查:
```bash
docker compose ps
docker compose logs -f pt-stats
```
## 四、回滚方法
如果升级后发现异常,可以先停止容器:
```bash
docker stop pt-stats
```
恢复升级前备份的数据库。
VPS:
```bash
cp /opt/pt-stats/stats-backup-before-upgrade.db /opt/pt-stats/stats.db
```
NAS:
```bash
cp /share/Container/data/pt-stats/stats-backup-before-upgrade.db \
/share/Container/data/pt-stats/stats.db
```
然后重新启动。
Docker 命令部署:
```bash
docker start pt-stats
```
Compose 部署:
```bash
docker compose up -d
```
## 五、常用排查命令
查看容器:
```bash
docker ps --filter name=pt-stats
```
查看日志:
```bash
docker logs -f pt-stats
```
查看镜像:
```bash
docker images | grep pt-stats
```
查看端口占用:
```bash
ss -lntp | grep 8098
```
如果端口 `8098` 已经被占用,可以把宿主机端口改成其它端口,例如:
```bash
-p 18098:8098
```
这时访问地址变为:
```text
http://服务器IP:18098/
```
## 更新日志
v1.6
1. 修复 HHanClub / hhanclub 统计抓取错误:NexusPHP 通用抓取改为优先从 /index.php 获取用户 ID,再读取 /userdetails.php?id=... 解析真实上传/下载数据。
2. 新增抓取记录批量删除功能:可在抓取记录页勾选记录并物理删除。删除抓取记录时会同步删除其关联快照,历史统计和增量会重新计算,适合清理错误抓取数据。抓取记录页新增全选、已选数量提示和删除确认提示,降低误删风险。
3. 优化页面布局:放宽主页面宽度限制,大屏下表格可利用更多显示空间;总览表格不再固定高度,减少不必要的内部滚动。
v1.7
1. 增加代理设置,各站点独立设置是否使用代理,解决u2需要代理,二师兄不能使用代理的问题。
102天
admin899008
admin899008
admin899008
#1
做为小白的我,看着好着急,有点懂,又没懂 :rofl:
102天
parkertaylor
parkertaylor
parkertaylor
#2
其实就是装个docker容器,你平时怎么装qb容器,就可以参照着同样方法装一个。文章中只是给出了不同环境不同装法的详细说明。
101天
ai8
ai8
ai8
#3
很详细的教程啊\~
101天
bzfaye
bzfaye
bzfaye
#4
好像MP插件有个类似的? :star_struck:
97天
heise68
heise68
heise68
#5
用MP那个也可以的 方便
85天
| 相关话题 | 回复 | 浏览量 | 活动 | |
|---|---|---|---|---|
