An internet speed test web application leveraging either Ookla Speedtest-CLI (https://www.speedtest.net/apps/cli) or iperf3 (https://software.es.net/iperf/). Node.js service with React frontend using Material-UI.
Example use-case: test "wired speed" of a computer connected via hard-wired ethernet from any device on your network.
docker run -d -p 5000:5000 --name speedtest-app bwmoran/speedtest-app
- port can be changed via environment variable PORT:
-p PORT=3000
- port can be changed via environment variable PORT:
- application should be running at http://localhost:5000
dependencies
- Latest stable Node.js runtime release with npm
- Git
- Speedtest-CLI (https://www.speedtest.net/apps/cli)
- note: if using Windows, you need to add the directory that contains speedtest.exe to system Path, so that it can be run globally. (for example:
C:\Projects\ookla-speedtest-1.0.0-win64\
)
- note: if using Windows, you need to add the directory that contains speedtest.exe to system Path, so that it can be run globally. (for example:
- iperf3
- note: if using Windows, you need to add the directory that contains iperf3.exe to system Path, so that it can be run globally. (for example:
C:\Projects\iperf-3.1.3-win64\
)
- note: if using Windows, you need to add the directory that contains iperf3.exe to system Path, so that it can be run globally. (for example:
installation
- clone repository
git clone https://github.com/moranbw/speedtest-app.git
- navigate to application directory
- install dependencies and build client
npm run deploy
- run application from
dist
node index.js
- application should be running at http://localhost:5000
set environment variable PROXY_PATH
docker run -d -p 5000:5000 -e PROXY_PATH="speedtest" --name speedtest-app bwmoran/speedtest-app
nginx
location /speedtest/ {
proxy_pass http://your_ip_or_host:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
caddy
redir /speedtest /speedtest/
route /speedtest/* {
reverse_proxy your_ip_or_host:5000
}
- "High-Speed Train" emoji logo/favicon is courtesy of the Twitter Emoji (Twemoji) project: https://github.com/twitter/twemoji