From 283e5c3acf42fc03cde6ef280a0adb264d434e4f Mon Sep 17 00:00:00 2001 From: Anyexyz Date: Thu, 21 Dec 2023 07:52:56 +0000 Subject: [PATCH] add openspeedtest --- apps/openspeedtest/2.0.4/data.yml | 18 ++++++++++++++++++ apps/openspeedtest/2.0.4/docker-compose.yml | 17 +++++++++++++++++ apps/openspeedtest/README.md | 15 +++++++++++++++ apps/openspeedtest/data.yml | 13 +++++++++++++ apps/openspeedtest/logo.png | Bin 0 -> 17779 bytes 5 files changed, 63 insertions(+) create mode 100644 apps/openspeedtest/2.0.4/data.yml create mode 100644 apps/openspeedtest/2.0.4/docker-compose.yml create mode 100644 apps/openspeedtest/README.md create mode 100644 apps/openspeedtest/data.yml create mode 100644 apps/openspeedtest/logo.png diff --git a/apps/openspeedtest/2.0.4/data.yml b/apps/openspeedtest/2.0.4/data.yml new file mode 100644 index 00000000..c1df2254 --- /dev/null +++ b/apps/openspeedtest/2.0.4/data.yml @@ -0,0 +1,18 @@ +additionalProperties: + formFields: + - default: 3000 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: HTTP Port + labelZh: HTTP端口 + required: true + rule: paramPort + type: number + - default: 3001 + edit: true + envKey: PANEL_APP_PORT_HTTPS + labelEn: HTTPS Port + labelZh: HTTPS端口 + required: true + rule: paramPort + type: number \ No newline at end of file diff --git a/apps/openspeedtest/2.0.4/docker-compose.yml b/apps/openspeedtest/2.0.4/docker-compose.yml new file mode 100644 index 00000000..c842c880 --- /dev/null +++ b/apps/openspeedtest/2.0.4/docker-compose.yml @@ -0,0 +1,17 @@ +version: '3.3' +services: + speedtest: + image: openspeedtest/latest:v2.0.4 + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_HTTP}:3000 + - ${PANEL_APP_PORT_HTTPS}:3000 + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true \ No newline at end of file diff --git a/apps/openspeedtest/README.md b/apps/openspeedtest/README.md new file mode 100644 index 00000000..bdd1cacc --- /dev/null +++ b/apps/openspeedtest/README.md @@ -0,0 +1,15 @@ +# **[SpeedTest by OpenSpeedTest™](https://openspeedtest.com?Run&ref=Github)** - 免费且开源的HTML5网络性能估算工具。 + +> OpenSpeedTest™是一个免费且开源的HTML5网络性能估算工具,使用纯粹的JavaScript编写,只使用内置的Web API,如 `XMLHttpRequest` `(XHR)`, `HTML`, `CSS`, `JS`, 和 `SVG`. 。无需第三方框架或库。只需要一个静态Web服务器,如 `NGINX`。本项目启动于2011年,并于2013年迁移到OpenSpeedTest.com专用项目/域名。 + +## 主要功能 +提供开箱即用的网络性能估算工具,无需任何配置即可使用。 + +## 使用 +为了提供更易用的体验,本应用只提供了最基础的功能,如需更多功能请参考[文档](https://github.com/openspeedtest/Speed-Test) `编辑 compose 文件` 实现。 + +### 端口开放 +默认端口为 HTTP/3000,HTTPS/3001 + +### HTTPS +若需要启用 HTTPS,建议搭配 `OpenResty` 反向代理使用,同时请参考 [openspeedtest/Nginx-Configuration](https://github.com/openspeedtest/Nginx-Configuration) 修改配置文件。 \ No newline at end of file diff --git a/apps/openspeedtest/data.yml b/apps/openspeedtest/data.yml new file mode 100644 index 00000000..0dacc0d6 --- /dev/null +++ b/apps/openspeedtest/data.yml @@ -0,0 +1,13 @@ +additionalProperties: + key: openspeedtest + name: openspeedtest + tags: + - Tool + shortDescZh: SpeedTest - 免费且免费开源 HTML5 网络性能评估工具 + shortDescEn: SpeedTest - Free & Open-Source HTML5 Network Performance Estimation Tool + type: tool + crossVersionUpdate: true + limit: 0 + website: https://openspeedtest.com/ + github: https://github.com/openspeedtest/Speed-Test + document: https://github.com/openspeedtest/Speed-Test \ No newline at end of file diff --git a/apps/openspeedtest/logo.png b/apps/openspeedtest/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..28631cab72923b83eaa5bb9dbca4d91fb5943da6 GIT binary patch literal 17779 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 KMNUMnLSTXstFwFn literal 0 HcmV?d00001