蓝影论坛 Logo
148浏览量
5参与者
活动 85天
✨这是 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 登录保护。 ![图片|690x364](https://hdblue.cc/uploads/discourse-public/3f/3fb4dc219c22331963e3c80a596246aa9a4cefc49d000e9740b45e5085f3041b-1518.png) ![图片|690x370](https://hdblue.cc/uploads/discourse-public/34/347294c0c66a4a513e40fd4ffe7cd9a7982ab47b981dc49b28237090f520b42b-1519.png) ![图片|553x500](https://hdblue.cc/uploads/discourse-public/91/919683a414d2e033b0829bc072036b1d40aba77496e3296205e700ba56182c7b-1520.png) # 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
#1
做为小白的我,看着好着急,有点懂,又没懂 :rofl:
102天
parkertaylor
#2
其实就是装个docker容器,你平时怎么装qb容器,就可以参照着同样方法装一个。文章中只是给出了不同环境不同装法的详细说明。
101天
ai8
#3
很详细的教程啊\~
101天
bzfaye
#4
好像MP插件有个类似的? :star_struck:
97天
heise68
#5
用MP那个也可以的 方便
85天
相关话题回复浏览量活动