Run periodic internet speed test, store, display results with builtin web server.
2.8K
Based on github Run periodic internet speed test, store, display results with builtin web server.
This aims to be small, efficient all-in-one program (statically linked, includes web assets) written in rust. The intent is to allow monitoring of your internet connection as easy as possible. You can use speedketchup for one-off test or keep it running continuously to spot any changes in your internet connection.
Multi-architecture container images available on DockerHub:
# Run with default settings (web UI on port 8080)
docker run -p 8080:8080 antonsmt/speedketchup
# Run with custom interval and bind to all interfaces
docker run -p 8080:8080 antonsmt/speedketchup -i 5 -a 0.0.0.0
# Run with persistent data storage
docker run -p 8080:8080 -v $(pwd)/data:/data antonsmt/speedketchup -f /data/results.csv
To run on MikroTik devices - add veth interface and setup network as per MikroTik documentation
Environment variables can be used instead of command line options (CLI options will override env vars):
| Environment Variable | CLI Option | Default | Description |
|---|---|---|---|
test_interval | -i/--interval | 10 | Test interval in minutes |
store_filename | -f/--file | speedketchup-results.csv | File to store results |
listen_address | -a/--address | 127.0.0.1 | Listen address (use 0.0.0.0 for all) |
listen_port | -p/--port | 8080 | Listen port |
server_host | -s/--server | auto-select | Speedtest server host[:port] |
download_duration | -dd/--download-duration | 10 | Download test duration (seconds) |
upload_duration | -ud/--upload-duration | 10 | Upload test duration (seconds) |
download_connections | -dc/--download-connections | 8 | Download parallel connections |
upload_connections | -uc/--upload-connections | 8 | Upload parallel connections |
# Example with environment variables
docker run -p 8080:8080 \
-e test_interval=5 \
-e listen_address=0.0.0.0 \
-e store_filename=/data/results.csv \
-v $(pwd)/data:/data \
antonsmt/speedketchup
For MikroTik RouterOS containers:
/container envs add list=speedketchup key=test_interval value=5
/container envs add list=speedketchup key=listen_address value=0.0.0.0
/container envs add list=speedketchup key=store_filename value=results.csv
Supported architectures: amd64, arm64, arm/v7

usage: speedketchup [options]
-h|--help: print this
-v|--version: print version
-i|--interval <minutes>: test interval in minutes, 10 by default
-f|--file <filename>: file to store test results in, speedketchup-results.csv by default
-a|--address <local_addr>: address to listen on for incoming connections, 127.0.0.1 by default
local_addr: use 0.0.0.0 to accept connections on all addresses
-p|--port <port>: port to listen on for incoming connections, 8080 by default
-s|--server <server_host[:server_port]>: speedtest server to use, avoids automatic server selection if specified
server_host: domain_name|ipv4_addr|ipv6_addr
server_port: port number, 8080 by default
-dd|--download-duration <seconds>: how long to test download speed, 0 disables test, 10 seconds by default
-ud|--upload-duration <seconds>: how long to test upload speed, 0 disables test, 10 seconds by default
-dc|--download-connections <number>: how many parallel connections to make for download, 8 connections by default
-uc|--uplaod-connections <number>: how many parallel connections to make for upload, 8 connections by default
Content type
Image
Digest
sha256:35b9c2deb…
Size
377.8 kB
Last updated
about 1 year ago
docker pull antonsmt/speedketchup