自学内容网 自学内容网

用Speedtest-Tracker跟踪上网速度(续)

在这里插入图片描述

什么是 Speedtest Tracker ?

Speedtest Tracker 是一款自托管互联网性能跟踪应用程序,可针对 OoklaSpeedtest 服务运行速度测试检查。

之前老苏介绍的另一个 https://github.com/henrywhitaker3/Speedtest-Tracker 已被放弃。现在这个是积极维护的替代品,具有改进的用户界面和功能集。

文章传送门:用Speedtest-Tracker跟踪上网速度

Speedtest Tracker 会保留历史记录,所以会用到数据库做存储,支持的数据库类型包括 SQLiteMySQLMariaDBPostgreSQL

图形界面安装,老苏默认使用了 SQLite ,命令行安装,则使用了群晖套件中自带的 MariaDB 和容器部署的 MariaDB

建数据库

老苏用了群晖自带的 MariaDB 10 数据库。

phpMyAdmin 中创建名为 speedtest 的空数据库。

为便于说明,假设数据库密码为 123456

所以根据上面的设置,最后得到的数据库相关的参数如下:

  • 数据库主机:192.168.0.197,与群晖主机 IP 一致;
  • 数据库端口:3307
  • 数据库用户:speedtest
  • 数据库密码:123456
  • 数据库库名:speedtest,因为勾选了与用户同名;

安装

在群晖上以 Docker 方式安装。

关于镜像,一开始是 ajustesen/speedtest-tracker,本文写作时, latest 版本对应为 v0.14.5,但这个版本到 v0.19.0 就不再更新了

与这个版本对应的是 ghcr.io/alexjustesen/speedtest-tracker

官方现在推荐的版本是 lscr.io/linuxserver/speedtest-tracker,在 dockerhub 上就是 linuxserver/speedtest-tracker,本文修订时的最新版本为 0.20.6

docker 文件夹中,创建一个新文件夹 speedtest,并在其中建一个子文件夹 config

文件夹装载路径说明
docker/speedtest/config/config存放数据库和网页文件等

端口

本地端口不冲突就行,不确定的话可以用命令查一下

# 查看端口占用
netstat -tunlp | grep 端口号
本地端口容器端口
876480

默认对外暴露了 3 端口

  • 80 端口是 http 协议的
  • 443 端口是 http 协议的

老苏只保留了 80 端口

环境

可变
PUID设为 1000
PGID设为 1000
DB_CONNECTION设置数据库类型,支持 sqlitemysql
APP_KEY用于加密和解密数据的密钥
APP_TIMEZONE如果数据库不使用 UTC 作为默认时区,则应设置应用程序时区
SPEEDTEST_SCHEDULE用于按计划运行速度测试的 Cron 表达式
PRUNE_RESULTS_OLDER_THAN保存测试结果的天数

  • SPEEDTEST_SCHEDULE:可以问 AI,老苏用了 */10 * * * *,这是 10 分钟

更多环境变量的说明,请参考官方文档:
https://docs.speedtest-tracker.dev/getting-started/environment-variables

命令行安装

如果你熟悉命令行,可能用 docker cli 更快捷

# 新建文件夹 speedtest 和 子目录
mkdir -p /volume1/docker/speedtest/config

# 进入 speedtest 目录
cd /volume1/docker/speedtest

# 运行容器
docker run -d \
   --restart unless-stopped \
   --name speedtest-tracker \
   -p 8764:80 \
   -v $(pwd)/config:/config \
   -e PUID=1000 \
   -e PGID=1000 \
   -e APP_KEY=base64:Bl8DLs4k220iy5Y5OkdRh51wuDzur0IFmOXS5Qi+L6M= \
   -e DB_CONNECTION=sqlite \
   -e APP_TIMEZONE=Asia/Shanghai \
   -e SPEEDTEST_SCHEDULE="*/10 * * * *" \
   -e PRUNE_RESULTS_OLDER_THAN=7 \
   linuxserver/speedtest-tracker

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

直接使用群晖 mariadb 数据库的 docker-compose.yml 文件

version: '3'

services:
  speedtest-tracker:
    image: linuxserver/speedtest-tracker:latest
    container_name: speedtest-tracker
    restart: unless-stopped
    ports:
      - '8764:80'
    volumes:
      - ./config:/config
    environment:
      - PUID=1000
      - PGID=1000
      - DB_CONNECTION=mysql
      - DB_HOST=192.168.0.197
      - DB_PORT=3307
      - DB_DATABASE=speedtest
      - DB_USERNAME=speedtest
      - DB_PASSWORD=123456
      - APP_KEY=base64:Bl8DLs4k220iy5Y5OkdRh51wuDzur0IFmOXS5Qi+L6M=
      - APP_TIMEZONE=Asia/Shanghai
      - SPEEDTEST_SCHEDULE="*/10 * * * *"
      - PRUNE_RESULTS_OLDER_THAN=7

独立部署数据库的 docker-compose.yml 文件

version: '3'

services:
  speedtest-tracker:
    image: linuxserver/speedtest-tracker:latest
    container_name: speedtest-tracker
    restart: unless-stopped
    ports:
      - '8764:80'
    volumes:
      - ./config:/config
    environment:
      - PUID=1000
      - PGID=1000
      - DB_CONNECTION=mysql
      - DB_HOST=db
      - DB_PORT=3306
      - DB_DATABASE=speedtest
      - DB_USERNAME=speedtest
      - DB_PASSWORD=123456
      - APP_KEY=base64:Bl8DLs4k220iy5Y5OkdRh51wuDzur0IFmOXS5Qi+L6M=
      - APP_TIMEZONE=Asia/Shanghai
      - SPEEDTEST_SCHEDULE="*/10 * * * *"
      - PRUNE_RESULTS_OLDER_THAN=7
    depends_on:
      - db

  db:
    image: mariadb:10.6
    container_name: speedtest-db
    restart: always
    volumes:
      - ./data:/var/lib/mysql
    environment:
      - MARIADB_DATABASE=speedtest
      - MARIADB_USER=speedtest
      - MARIADB_PASSWORD=123456
      - MARIADB_RANDOM_ROOT_PASSWORD=true

然后执行下面的命令

# 新建文件夹 speedtest 和 子目录
mkdir -p /volume1/docker/speedtest/{config,data}

# 进入 speedtest 目录
cd /volume1/docker/speedtest

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:8764 就能看到注册界面

缺省的账号: admin@example.com,密码:password

登录成功后的界面

如果你不想等待,可以进行手动测试。点右上角黄色按钮 Run Speedtest,会有一行小字 Ookla speedtest

继续点 Ookla speedtest,会看到 Ookla speedtest started

这时候,你会看到有数据显示了

如果测试总是失败

可以考虑通过 SPEEDTEST_SERVERS 参数,指定用于速度测试的服务器

可以通过内置的命令,获取附近的服务器列表

docker exec speedtest-tracker php /app/www/artisan app:ookla-list-servers

或者在这里 https://linuxspeedtest.comID

可能这里国内的会更多一些,https://williamyaps.github.io/wlmjavascript/servercli.html

docker-cli 中,可以增加环境变量

   -e SPEEDTEST_SERVERS="3633,45170,54312" \

docker-compose.yml 中增加环境变量

      - SPEEDTEST_SERVERS="3633,45170,54312"

Docker 管理器中,只要编辑原来的容器,新增一条即可

如果 SPEEDTEST_SCHEDULE 设置有问题,可能导致下面👇的错误

参考文档

alexjustesen/speedtest-tracker: Speedtest Tracker is a self-hosted internet performance tracking application that runs speedtest checks against Ookla’s Speedtest service.
地址:https://github.com/alexjustesen/speedtest-tracker

Introduction - Speedtest Tracker
地址:https://docs.speedtest-tracker.dev/

MySQL - connection refused - New install of both · Issue #1078 · alexjustesen/speedtest-tracker
地址:https://github.com/alexjustesen/speedtest-tracker/issues/1078


原文地址:https://blog.csdn.net/wbsu2004/article/details/140396249

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!