×

自建一个测速网站 OpenSpeedTest

hqy hqy 发表于2026-04-25 01:40:12 浏览6 评论0

抢沙发发表评论

SpeedTest 由 OpenSpeedTest™ 提供 - 免费且开源的 HTML5 网络性能估算工具。

SpeedTest 由 OpenSpeedTest™ 提供,是一个免费的、开源的 HTML5 网络性能估算工具,使用纯 Javascript 编写,仅使用内置的 Web API,如 XMLHttpRequest (XHR)HTMLCSSJS 和 SVG。不需要第三方框架或库。我们只需要一个静态的网络服务器,如 NGINX。我在 2011 年开始了这个项目,并在 2013 年将其迁移到了 OpenSpeedTest.com 专用的项目/域名。


刚刚推出:OpenPacketLoss。快来看看吧!

虽然 OpenSpeedTest 测量带宽,这个工具帮助你直接从浏览器检测数据包丢失。

试试看: https://openpacketloss.com
源代码: https://github.com/openpacketloss


下载 OpenSpeedTest-Server V2.1 从微软商店下载 从 Mac 应用商店下载 从应用商店下载 从谷歌应用商店下载 从Snap商店下载 从Docker Hub下载 从Helm商店下载 从GitHub下载

不需要客户端软件或插件。您可以使用任何设备上的 IE10 或更新版本的 Web 浏览器运行网络速度测试。

视频教程 由 Roberto Jorge Tech 提供 兰帕德视频教程

为什么选择 OpenSpeedTest

设计即安全。

OpenSpeedTest 包含只有 STATIC 文件,例如 HTML,CSS 和 JS.

所以你不需要担心安全更新或隐藏的漏洞可能会破坏你的安全环境。

轻量级,高性能。

OpenSpeedTest 是用纯 JavaScript 编写的。没有使用第三方框架或库。SpeedTest 脚本文件大小在 8kB gzip 以内。使用纯 JavaScript 的意外副作用是高性能。

从任何设备运行速度测试。

OpenSpeedTest 将会在任何版本的 IE10 或更新的浏览器上运行。

适用于任何显示尺寸和分辨率。

OpenSpeedTest 用户界面是用 SVG 编写的。

创建您自己的SpeedTest服务器。

服务器要求:

NginxApacheIISExpress, 或任何支持 HTTP/1.1 或更新版本的网络服务器。

  • 接受, GETPOSTHEAD & OPTIONS, 响应 200 OK.

  • 接受, POST静态文件, 响应 200 OK.

  • client_max_body_size, 35 兆字节或更多。

  • 超时大于60 seconds.

  • 禁用Access logs以提高服务器性能。

  • 改进Time to First Byte (首次往返时间)

  • 警告!如果你在反向代理后面运行它,你应该将post-body content length增加到35兆字节。

  • 支持 HTTP2 & HTTP3.

  • HTTP1.1推荐用于实现最佳性能。

  • 你应该遵循我们的Nginx配置。

或者,您可以使用OpenSpeedTest-Server。

OpenSpeedTest-Server 适用于 Windows、Mac、Linux、Android、iOS 和 Docker。 下载 OpenSpeedTest-Server V2.1

完全优化并准备好使用的应用程序。

从微软商店下载 从 Mac 应用商店下载 从应用商店下载 从谷歌应用商店下载 从Snap商店下载 从Docker Hub下载 从Helm商店下载 从GitHub下载

新功能:

  1. 压力测试。(连续速度测试)

要启用压力测试,请传递StressS关键字作为URL参数。

http://192.168.1.5?Stress=Low

STRESSS关键字之后,您可以指定以秒为单位的运行时间,或者预设值,例如LowMediumHighVeryHighExtremeDayYear。将分别进行300600900180036008640031557600秒的速度测试。此外,您还可以输入每个参数的第一个字母及其值。

http://192.168.1.5?S=L

S=L与传递相同Stress=low

或者您可以指定秒数,例如:5000 直接而不使用任何预设关键词。

http://192.168.1.5?Stress=5000
  1. 自动进行速度测试

在页面加载时自动运行速度测试。

http://192.168.1.5?Run

几秒后自动进行速度测试。

http://192.168.1.5?Run=10 or http://192.168.1.5?R=10

你可以传递多个关键词,并且它不是Case-Sensitive.

http://192.168.1.5?Run&Stress=300 OR http://192.168.1.5?R&S=300

这将立即开始一个速度测试,并在每个方向运行300 seconds。下载需要300秒,300 seconds上传需要。

  1. 将结果保存到数据库

编辑Index.html

var saveData = true;

var saveDataURL = "//yourDatabase.Server.com:4500/save?data=";
  1. 添加多个服务器。应用程序将自动选择延迟最小的一个。

编辑Index.html

var openSpeedTestServerList = [

{"ServerName":"Home-Earth", "Download":"/downloading", "Upload":"/upload", "ServerIcon":"DefaultIcon"},

{"ServerName":"Home-Mars", "Download":"/downloading", "Upload":"/upload", "ServerIcon":"DefaultIcon"},

{"ServerName":"Home-Moon", "Download":"/downloading", "Upload":"/upload", "ServerIcon":"DefaultIcon"}

];
  1. 禁用或更改补偿因子。

http://192.168.1.5?clean

补偿因子,这是一个基于浏览器的测试,许多未知数。目前为4%。这在误差范围内。

你可以通过 Clean 或 C 作为URL参数传递,并重置过顶补偿因子为零或设置0到4之间的任何值。1 = 1% 到 4 = 4%。

Clean不会接受超过4的值,因此补偿最高限制为4%。

  1. 将默认的6个并行HTTP连接限制更改为服务器。

http://192.168.1.5?XHR=3 OR http://192.168.1.5?X=3

允许用户更改到服务器的默认6个并行HTTP连接限制。XHR将接受1以上的值,最大值为32

通过 XHR 或 X 作为 URL 参数。

  1. 选择不同的服务器进行速度测试。

http://192.168.1.5?Host=http://192.168.55.1:90 OR http://192.168.1.5?h=http://192.168.55.1:90

通过 Host 或 H 作为 URL 参数。

HOST 只接受有效的HTTP网址,如 http://192.168.1.10:3000 或 https://yourHost.com

  1. 一次选择并运行一个测试,DOWNLOADUPLOAD,或PING

http://192.168.1.5?Test=Upload OR http://192.168.1.5?T=U

TEST允许用户一次选择并运行一个测试,下载、上传或ping。

通过 Test 或 T 作为 URL 参数。

  1. 通过传递 Out 或 O 作为 URL 参数动态设置 PingTimeout

http://192.168.1.5?Out=7000 OR http://192.168.1.5?O=7000

如果服务器在我们发送的任何请求('pingSamples'次)后5秒内没有响应

我们将展示Network Error,您可以在此更改限制。

以毫秒为单位,如果你需要设置6 seconds。将值更改为6000

  1. 通过添加 Ping 或 P 作为URL参数来设置ping样本的数量

http://192.168.1.5?Ping=500 OR http://192.168.1.5?P=500

更多样本 = 更准确的代表性。Ping = 500将发送501请求到服务器以找到准确的ping值。 查看index.html,您可以设置自定义ping样本大小、线程、上传数据大小等。

自托管(本地)/(Docker镜像/源代码)

用于无头的大规模部署。

你有两个选择。如果你需要定制部署,请使用我们的源代码和你选择的网页服务器。我更喜欢Nginx,你可以在这里找到我的Nginx配置。或者你可以使用我们的docker镜像。你可以在有或没有活动互联网连接的情况下在你的局域网/广域网中部署它。

这是使用nginxinc/nginx-unprivileged:stable-alpine实现的Docker,资源使用显著减少。

  • NGINX Docker 镜像,以非 root、无特权用户运行 NGINX。

Docker 安装说明:

安装Docker并运行以下命令!

sudo docker run --restart=unless-stopped --name openspeedtest -d -p 3000:3000 -p 3001:3001 openspeedtest/latest

或者使用docker-compose.yml

version: '3.3'
services:
    speedtest:
        restart: unless-stopped
        container_name: openspeedtest
        ports:
            - '3000:3000'
            - '3001:3001'
        image: openspeedtest/latest

现在打开您的浏览器并将其指向:

A: 对于 HTTP 使用: http://YOUR-SERVER-IP:3000

B: 对于 HTTPS 使用: https://YOUR-SERVER-IP:3001

容器端口为http的端口号是3000

如果你需要在其他端口运行这个镜像 HTTP,例如:更改成 80 = -p 80:3000

容器端口为 https 的是 3001

如果你需要在不同的端口运行这个镜像 HTTPS,例如:更改到 443 = -p 443:3001

设置免费的Let's Encrypt SSL并自动续订证书

要求

  • 公共 IPV4 和/或 IPV6 地址。

  • 一个解析为速度测试服务器IP地址的域名。

  • 电子邮件 ID

以下命令将为您的域名生成 Let's Encrypt 证书,并配置一个 cron 作业以自动续订证书。

docker run -e ENABLE_LETSENCRYPT=True -e DOMAIN_NAME=speedtest.yourdomain.com -e USER_EMAIL=you@yourdomain.pro --restart=unless-stopped --name openspeedtest -d -p 80:3000 -p 443:3001 openspeedtest/latest

或者使用docker-compose.yml

version: '3.3'
services:
    speedtest:
        environment:
            - ENABLE_LETSENCRYPT=True
            - DOMAIN_NAME=speedtest.yourdomain.com
            - USER_EMAIL=you@yourdomain.pro
        restart: unless-stopped
        container_name: openspeedtest
        ports:
            - '80:3000'
            - '443:3001'
        image: openspeedtest/latest

如何使用您自己的安全套接字层 (SSL) 证书,自签名或付费?

要求

  • 包含您的证书、自签名或付费的文件夹。

  • 将 .cet 文件和 .key 文件重命名到 nginx.crt & nginx.key

    文件夹需要包含:

  • nginx.crt

  • nginx.key

sudo docker run --restart=unless-stopped --name openspeedtest -d -p 3000:3000 -p 3001:3001 openspeedtest/latest

要将带有您自己的SSL证书的文件夹挂载到此Docker容器,请在上述命令中添加以下行:

-v /${PATH-TO-YOUR-OWN-SSL-CERTIFICATE}:/etc/ssl/

我正在通过以下命令将包含nginx.crt和nginx.key的文件夹从我的桌面上添加到服务器。

sudo docker run -v /Users/vishnu/Desktop/docker/:/etc/ssl/ --restart=unless-stopped --name openspeedtest -d -p 3000:3000 -p 3001:3001 openspeedtest/latest

或者使用docker-compose.yml

version: '3.3'
services:
    speedtest:
        volumes:
            - '/Users/vishnu/Desktop/docker/:/etc/ssl/'
        restart: unless-stopped
        container_name: openspeedtest
        ports:
            - '3000:3000'
            - '3001:3001'
        image: openspeedtest/latest

高级配置选项

  • 集装箱港口配置

要启用端口更改,请将CHANGE_CONTAINER_PORTS环境变量设置为"True"并为以下变量提供适当的值。

CHANGE_CONTAINER_PORTS=True

HTTP_PORT=3000

HTTPS_PORT=3001

  • 设置用户

SET_USER=101

  • 仅允许 CORS Request 来自列出的域名。

ALLOW_ONLY=domain1.com;domain2.com;domain3.com

  • SET_SERVER_NAME在界面上显示服务器名称。

SET_SERVER_NAME=HOME-NAS

Docker镜像在Linux平台上运行得更好,包括你的NAS。但是,如果你在macOS或Windows上安装Docker,你可能会看到性能不佳。我在Docker论坛上问过这个问题,他们告诉我macOS和Windows的支持仅用于开发目的。对于生产环境,你需要使用任何Linux平台。

同样的故事也适用于Windows NGINX。NGINX即使你指定了n个工作进程,也只会使用一个工作进程。它们会显示在任务管理器中,但系统只会使用一个。我直接从NGINX网站获得了这个信息。

为什么你需要创建自己的SpeedTest服务器?

您可以在家庭实验室、办公室服务器或云服务器上运行OpenSpeedTest Server。这样,您或在家工作的员工就可以进行速度测试,确保他们能够顺利进行所有工作。

在 ISP1 和 ISP2 之间选择。

有时在流行的测速网站上测试时,你的ISP2比ISP1更快。但当你连接到你的家庭/办公室/云时,那个较慢的连接可能表现得更好。唯一的办法是对你自己的基础设施进行测速。

排除网络问题。

即使您的互联网连接正常,这也是常见的。但是您网络中的某些设备可能无法获得良好的互联网连接。问题可能是错误的VLAN ID或故障的交换机。如果您运行本地网络速度测试,您可以轻松找到并解决这些问题。

在您添加重复器之前。

大多数中继器会将您的网络速度降低50%,因此如果您将其放置得离得太远,性能会最差,如果您将其放置得离得太近,当您运行局域网速度测试时,您将无法获得足够的覆盖范围。根据应用需求,您可以决定将中继器放置在确切的位置。

浏览体验。

有许多有用的浏览器扩展是我们众所周知和喜爱的。但其中一些扩展实际上会显著减慢浏览速度每当你访问一个网页时几秒钟。当你通过文件传输或命令行工具测试网络性能时,可能会看到良好的性能,但当你浏览互联网时,你可能会体验到性能不佳。这是由于糟糕的浏览器配置,包括安装了不需要的扩展。根据我的经验,只保留你每天都会使用的扩展。偶尔使用的扩展应被移除或禁用以获得最佳性能。如果你看到性能不佳,请尝试从私人窗口或隐身窗口中打开OpenSpeedTest。这个工具可以用来检查浏览器性能和扩展对你浏览体验的影响。

不需要客户端软件或插件。您可以使用任何设备上的 IE10 或更新版本的 Web 浏览器运行网络速度测试。


打赏

本文链接:https://kinber.cn/post/6495.html 转载需授权!

分享到:


推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

 您阅读本篇文章共花了: 

群贤毕至

访客