简单、开箱即用的网页测速工具。后端使用 Go,前端使用 Vue,静态资源通过 Go embed 打包随二进制发布。本文档仅涵盖本项目的构建、运行与使用说明,不涉及任何反向代理相关操作。
- 轻量单一二进制运行
- 提供常用测速端点:下载、上传、IP 查询
- 可选启用 TLS 与(基于 TLS 的)HTTP/2
- 支持通过
base-url自定义挂载路径
- Go(建议 1.20+)
- Node.js(用于前端构建)
- Make(构建与容器打包)
构建前端并生成后端二进制:
make完成后将得到静态可执行文件 speedtest(Windows 下为 speedtest.exe)。
直接启动:
./speedtest常用参数(全部可选):
--log-level:日志级别(默认info)--bind-address:监听地址(默认0.0.0.0)--port:监听端口(默认80)--base-url:服务挂载前缀(例如/speedtest,默认空)--http2:是否启用 HTTP/2(仅在启用 TLS 时生效)--cert-file/--key-file:启用 TLS 所需证书与私钥路径
示例:
./speedtest --port 8080 --base-url /speedtest应用启动后,前端页面与接口会挂载在 http://<host>:<port><base-url>/ 下。
构建镜像:
make container运行容器(示例将服务暴露在宿主的 8080 端口):
docker run --rm -p 8080:80 vcs.bupt-narc.cn/mtd/speedtest如需自定义端口或 base-url,可传入参数:
docker run --rm -p 8080:8081 vcs.bupt-narc.cn/mtd/speedtest \
--port 8081 --base-url /speedtest注意:若需要在容器中启用 TLS,请将证书与私钥以卷挂载进容器,并通过 --cert-file 与 --key-file 指定路径。
以下路径均会附着在 base-url 之后(如果设置了 --base-url):
/getIP与/backend/getIP:查询客户端 IP/garbage与/backend/garbage:返回固定大小的随机数据(下载测速)/empty与/backend/empty:接收任意大小上传内容(上传测速)
参数:
ckSize(整型,单位 MB):用于/garbage指定返回数据块数量。默认 4,最大值受服务端限制(见代码中的MaxChunkSize)。
在本地进行前端开发调试:
cd frontend
npm install
npm run dev构建前端产物(被后端 embed 使用):
cd frontend
npm run build./speedtest version本项目以 MIT 协议开源(如有变更请以仓库实际 LICENSE 为准)。