• 用Speedtest-Tracker跟踪上网速度


    什么是 Speedtest-Tracker ?

    Speedtest-Tracker 每小时运行一次 speedtest 检查,并将结果绘制成图表。后端使用 Laravel 编写,前端使用 React。它使用 Ooklaspeedtest cli 包获取数据,并使用 Chart.js 绘制结果。

    从功能上看和老苏之前介绍的 『 docker-speedtest-analyser 』差不多。

    但也有自己的特点:

    • 每小时自动运行一次速度测试
    • x 天前的速度测试图表
    • JSON/CSV 格式备份/恢复数据
    • Slack/Discord/Telegram 通知
    • healthchecks.io 集成
    • Organizr 整合
    • InfluxDB 集成(目前仅 v1v2 WIP

    不过老苏不建议你安装,原因是:

    • 镜像启动时,会从网上下载文件,存在失败的可能,也可能时间会比较长;
    • 镜像有一年没更新了,而且最后一个版本存在少文件的问题(不知道是不是因为涉及版权问题,所以没把 Speedtest CLI 文件打入镜像),如果不会命令行操作的,很可能跑不起来;

    安装

    在群晖上以 Docker 方式安装。

    在注册表中搜索 speedtest-tracker ,选择第一个 henrywhitaker3/speedtest-tracker,版本选择 latest

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

    文件夹装载路径说明
    docker/speedtest-tracker/config/config存放设置

    端口

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

    # 查看端口占用
    netstat -tunlp | grep 端口号
    
    • 1
    • 2
    本地端口容器端口
    876580

    两个端口留一个就可以了,不用的端口可以删掉,免得占用资源。老苏只留了 80 端口

    环境

    可变
    TZ默认设为 Asia/Shanghai
    OOKLA_EULA_GDPR默认设为true

    因为使用了第三方的测速软件,所以需要同意最终用户协议( EULA ),如果不设置 OOKLA_EULA_GDPR=true,容器将不会启动。

    在这里插入图片描述

    当然参数不止这一个,更多的请看:https://github.com/henrywhitaker3/Speedtest-Tracker#parameters

    命令行安装

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

    # 新建文件夹 speedtest-tracker 和 子目录
    mkdir -p /volume2/docker/speedtest-tracker/config
    
    # 进入 speedtest-tracker 目录
    cd /volume2/docker/speedtest-tracker
    
    # 运行容器
    docker run -d \
       --restart unless-stopped \
       --name speedtest-tracker \
       -p 8765:80 \
       -v $(pwd)/config:/config \
       -e OOKLA_EULA_GDPR=true \
       -e TZ=Asia/Shanghai \
       henrywhitaker3/speedtest-tracker
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

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

    version: '3.3'
    
    services:
        speedtest:
            container_name: speedtest-tracke
            image: henrywhitaker3/speedtest-tracker
            ports:
                - 8765:80
            volumes:
                - ./config:/config
            environment:
                - TZ=Asia/Shanghai
                - PGID=1000
                - PUID=1000
                - OOKLA_EULA_GDPR=true
            logging:
                driver: "json-file"
                options:
                    max-file: "10"
                    max-size: "200k"
            restart: unless-stopped
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    然后执行下面的命令,在 portainer 中执行也是可以的

    # 新建文件夹 speedtest-tracker 和 子目录
    mkdir -p /volume2/docker/speedtest-tracker/config
    
    # 进入 speedtest-tracker 目录
    cd /volume2/docker/speedtest-tracker
    
    # 将 docker-compose.yml 放入当前目录
    
    # 一键启动
    docker-compose up -d
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    运行

    在浏览器中输入 http://群晖IP:8765 ,如果你直接打开,很可能看到的不是主界面,而是下面👇的错误,但不要担心,先看看日志

    在这里插入图片描述

    能看到容器有下载更新的动作,所以这个时间可能会比较长,要有耐心。

    老苏估计要看到这两个提示才行

    再刷新页面,应该可以看到主界面了

    在这里插入图片描述

    问题

    但是实际上老苏还是一直测速不成功,查看日志,发现失败时出现了 sh: /config/www/app/Bin/speedtest: not found,显然是缺少文件导致的

    在这里插入图片描述

    当然老苏不是第一个遇到这个问题的,肯定也不是会是最后一个(因为这货已经一年没更新了)。Issues 中有人给出了解决办法:https://github.com/henrywhitaker3/Speedtest-Tracker/issues/855

    执行下面的命令:

    • 第一步、下载 Speedtest CLI 文件
    # 进入 Bin 目录
    cd /volume2/docker/speedtest-tracker/config/www/app/Bin
    
    # 下载  Speedtest CLI 包
    wget https://install.speedtest.net/app/cli/ookla-speedtest-1.0.0-x86_64-linux.tgz -O speedtest.tgz
    
    # 解压文件
    tar zxvf speedtest.tgz
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述

    • 第二步、手动接受 EULA(End-user license agreement)
    # 进入容器
    docker exec -it --user root speedtest-tracker /bin/bash
    
    # 在容器内执行
    php /config/www/artisan speedtest:eula
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    • 第三步、执行一次 Speedtest
    # 在容器内执行
    cd /config/www/app/Bin
    
    # 运行一次 speedtest
    # 提示 Do you accept the license? [type YES to accept]: 要输入 Yes
    ./speedtest
    
    # 退出容器
    exit
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    现在可以看到数据了

    在这里插入图片描述

    之后每个整点会自动测试

    在这里插入图片描述

    最后上一张官方的动图

    在这里插入图片描述

    参考文档

    henrywhitaker3/Speedtest-Tracker: Continuously track your internet speed
    地址:https://github.com/henrywhitaker3/Speedtest-Tracker

    [BUG] sh: /config/www/app/Bin/speedtest: not found + No successfully speedtest result · Issue #855 · henrywhitaker3/Speedtest-Tracker
    地址:https://github.com/henrywhitaker3/Speedtest-Tracker/issues/855

  • 相关阅读:
    6个国内外高质量icon素材网站分享给你,实用不花钱!
    Java JVM虚拟机
    并发编程系列-CAS
    SAS学习1(总体介绍以及一些程序例子)
    我的设计模式之旅、09 工厂方法、简单工厂
    PB从入坑到放弃(二)编码规范
    MYSQL常用sql
    微信小程序,下载流文件并打开预览
    单条视频播放近4000w,如何利用“跟风效应”实现流量暴增?
    【Linux】进程控制,进程替换
  • 原文地址:https://blog.csdn.net/wbsu2004/article/details/127401192