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

news2024/11/13 16:22:52

在这里插入图片描述

什么是 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保存测试结果的天数
  • 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1926535.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

repo sync同步出错解决

当出现下面提示时 e list of known hosts. Fetching: 100% (1167/1167), done in 44.619s info: A new version of repo is available warning: repo is not tracking a remote branch, so it will not receive updates Repo command failed: RepoUnhandledExceptionError …

element UI时间组件两种使用方式

加油&#xff0c;新时代打工&#xff01; 组件官网&#xff1a;https://element.eleme.cn/#/zh-CN/component/date-picker 先上效果图&#xff0c;如下&#xff1a; 第一种实现方式 <div class"app-container"><el-formref"submitForm":model&q…

Zabbix6.0监控Freeswitch状态

一、前提环境说明 1、最终实现Freeswitch监控指标信息&#xff1a; 2、环境需求&#xff1a; &#xff08;1&#xff09;需要使用Zabbix6.0及以上 &#xff08;2&#xff09;需要使用zabbix_agent2 二、实现步骤 1、zabbix_agent2添加监控键值 cat /etc/zabbix/conf.d/fr…

Git代码管理工具 — 3 Git基本操作指令详解

目录 1 获取本地仓库 2 基础操作指令 2.1 基础操作指令框架 2.2 git status查看修改的状态 2.3 git add添加工作区到暂存区 2.4 提交暂存区到本地仓库 2.5 git log查看提交日志 2.6 git reflog查看已经删除的记录 2.7 git reset版本回退 2.8 添加文件至忽略列表 1 获…

2.有限状态机

1. 标准三段式写法&#xff1a; 1.一段代表当前状态赋值&#xff1b; 2.一段代表下一个状态如何跳变 3.一段代表输出控制 一定要带上复位 前两段模板集合一样&#xff0c;第三段取决于具体需求 parameter IDLE_ST 4b0000&#xff1b; parameter TEST_ST 4b0001; ... re…

C++中链表的底层迭代器实现

大家都知道在C的学习中迭代器是必不可少的&#xff0c;今天我们学习的是C中的链表的底层迭代器的实现&#xff0c;首先我们应该先知道链表的底层迭代器和顺序表的底层迭代器在实现上有什么区别&#xff0c;为什么顺序表的底层迭代器更加容易实现&#xff0c;而链表的底层迭代器…

Ubuntu20.04 编译安装FFmpeg,出错分析以及解决方案

最近工程上需要对FFmpeg底层源码进行修改&#xff0c;需要重新编译&#xff0c;遇见不少坑&#xff0c;出篇教程记录一下。 文章目录 1.FFmpeg源码下载地址2.编译环境配置3.编译FFmpeg4.配置FFmpeg运行环境 1.FFmpeg源码下载地址 官方下载地址:Index of /releases (ffmpeg.or…

使用MovaXterm连接VMware的centos

一、确认局域网ip 检查虚拟机分配的网段是否一致 二、确认centos的ip 输入 ip addr 获得设备ip为192.168.153.130 三、用MovaXterm建立ssh连接 有同行可能会问&#xff0c;直接使用VMware操作centos系统不行吗&#xff1f;为什么要再多一步。 理由&#xff1a;1、测试环境c…

Zabbix6.0使用自带模板(MySQL by Zabbix agent 2)监控MySQL数据库

注意&#xff1a;Zabbix6.0使用MySQL by Zabbix agent 2 模板可直接监控MySQL数据库&#xff0c;只需要创建监控用户&#xff0c;模板宏中填写数据库账号信息即可&#xff0c;只需要3步&#xff0c;特简单&#xff01; 1、MySQL创建用户&#xff0c;用于收集数据库信息 creat…

HarmonyOS 界面开发基础篇

一、布局思路 ArkUI(方舟开发框架)是一套 构建 鸿蒙应用 界面 的框架。 构建页面的最小单位就是“组件”。 组件分类 基础组件&#xff1a;界面呈现的基础元素。 如&#xff1a;文字、图片、按钮等。容器组件&#xff1a;控制布局排布。 如&#xff1a;Row行、Column列等。…

MySQL篇:日志

前言 MySQL中常见的日志&#xff1a; 重做日志&#xff08;Redo Log&#xff09;&#xff1a; 用途&#xff1a; 保证事务的持久性&#xff0c;记录事务对数据库所做的所有修改。 内容&#xff1a; 记录事务对数据页的物理修改&#xff0c;而不是逻辑修改。 配置&#xff1a; …

一款IM即时通讯聊天系统源码,包含app和后台源码

一款IM即时通讯聊天系统源码 聊天APP 附APP&#xff0c;后端是基于spring boot开发的。 这是一款独立服务器部署的即时通讯解决方案&#xff0c;可以帮助你快速拥有一套自己的移动社交、 企业办公、多功能业务产品。可以 独立部署&#xff01;加密通道&#xff01;牢牢掌握通…

《C专家编程》杂谈

库函数调用和系统调用的区别 系统调用比函数调用要慢很多&#xff0c;因为还要切换到内核模式。

防火墙综合实验之NAT和智能选路

目录 前言&#xff1a; 一、实验题目 二、实验操作 需求一 需求二 需求三 需求四、需求五 需求六 需求七 ​编辑 需求八 需求九 需求十 需求十一 三、需求测试 前言&#xff1a; 本篇文章是延续上一篇文章&#xff0c;简单来说就是防火墙实验的完善和延续&#…

【CUDA】CUDA中缓存机制对计时的影响

笔者在阅读知乎上一个关于CUDA编程的专栏时&#xff0c;发现作者写的很多文章中都会附带计时的模块用于评估程序的运行效率&#xff0c;然而笔者发现&#xff0c;在运行这篇文章中的代码时时&#xff0c;得到的结果和作者的结果有较大差异&#xff0c;主要体现在&#xff1a;使…

《战甲神兵》开发者报告:游戏崩溃问题80%发生在Intel可超频酷睿i9处理器上——酷睿i7 K系列CPU也表现出高崩溃率

在Intel持续面临第13代和第14代CPU崩溃问题的背景下&#xff0c;近日&#xff0c;《战甲神兵》(Warframe)的开发者们于7月9日披露了游戏崩溃的统计数据&#xff0c;并描述了诊断该问题的过程。根据开发团队的说法&#xff0c;一名未进行超频且使用全新PC的员工&#xff0c;即便…

网络安全设备——EDR

网络安全中的EDR&#xff08;Endpoint Detection and Response&#xff0c;端点检测与响应&#xff09;是一种主动式的端点安全解决方案&#xff0c;它专注于监控、检测和响应计算机和终端设备上的安全威胁。以下是EDR的详细解释&#xff1a; 一、定义与功能 EDR是一种网络安…

【C++】入门基础(引用、inline、nullptr)

目录 一.引用 1.引用的定义 2.引用的特性 3.引用的使用场景 4.const引用 5.引用和指针的区别 二.inline 三.nullptr 一.引用 1.引用的定义 引用不是新定义一个变量&#xff0c;而是给已经存在的变量取一个别名&#xff0c;编译器不会给引用变量开辟内存空间&#xff0c…

(实测可用)(3)Git的使用——RT Thread Stdio添加的软件包,github与gitee冲突造成无法上传文件到gitee

★硬件资源&#xff1a;本文章以STM32L431RCT6做主控芯片做验证&#xff1b; ★IDE开发环境&#xff1a;RT Thread stdio&#xff1b; ★RT Thread 版本&#xff1a;V4.0.3 一、RT Thread Stdio加载软件包 1、如下图所示&#xff0c;通过RT Thread Stdio加载的软件包&#…

[FPGA]-时序传输模型分析

时序传输模型分析 FPGA内部时钟树 clk到达每个寄存器的时间不一致。 内部时钟树内部示意图如下所示&#xff1a; 在实际FPGA芯片内部&#xff0c;时钟到达每个寄存器的时钟偏差很小&#xff0c;但仍然存在&#xff1b;比如clk到达REG1花费时间0.2ns&#xff0c;到达REG6花费…