什么是 Speedtest Tracker ?
Speedtest Tracker
是一款自托管互联网性能跟踪应用程序,可针对Ookla
的Speedtest
服务运行速度测试检查。
之前老苏介绍的另一个 https://github.com/henrywhitaker3/Speedtest-Tracker 已被放弃。现在这个是积极维护的替代品,具有改进的用户界面和功能集。
文章传送门:用Speedtest-Tracker跟踪上网速度
Speedtest Tracker
会保留历史记录,所以会用到数据库做存储,支持的数据库类型包括 SQLite
、MySQL
、MariaDB
和 PostgreSQL
图形界面安装,老苏默认使用了 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 端口号
本地端口 | 容器端口 |
---|---|
8764 | 80 |
默认对外暴露了 3
端口
80
端口是http
协议的443
端口是http
协议的
老苏只保留了 80
端口
环境
可变 | 值 |
---|---|
PUID | 设为 1000 |
PGID | 设为 1000 |
DB_CONNECTION | 设置数据库类型,支持 sqlite 、mysql 等 |
APP_KEY | 用于加密和解密数据的密钥 |
APP_TIMEZONE | 如果数据库不使用 UTC 作为默认时区,则应设置应用程序时区 |
SPEEDTEST_SCHEDULE | 用于按计划运行速度测试的 Cron 表达式 |
PRUNE_RESULTS_OLDER_THAN | 保存测试结果的天数 |
APP_KEY
:可以在 https://speedtest-tracker.dev 生成
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.com查 ID
可能这里国内的会更多一些,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