Sign inSign up

antonsmt/speedketchup

By antonsmt

•Updated about 1 year ago

Run periodic internet speed test, store, display results with builtin web server.

Image
0

2.8K

antonsmt/speedketchup repository overview

⁠SpeedKetchup

Based on github⁠ Run periodic internet speed test⁠, store, display results with builtin web server.


⁠Introduction

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.

⁠Docker Container

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

Environment variables can be used instead of command line options (CLI options will override env vars):

Environment VariableCLI OptionDefaultDescription
test_interval-i/--interval10Test interval in minutes
store_filename-f/--filespeedketchup-results.csvFile to store results
listen_address-a/--address127.0.0.1Listen address (use 0.0.0.0 for all)
listen_port-p/--port8080Listen port
server_host-s/--serverauto-selectSpeedtest server host[:port]
download_duration-dd/--download-duration10Download test duration (seconds)
upload_duration-ud/--upload-duration10Upload test duration (seconds)
download_connections-dc/--download-connections8Download parallel connections
upload_connections-uc/--upload-connections8Upload 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

⁠Builtin web server

speedketchup webserver

⁠Features
  • automatic speedtest server selection based on latency or run against specific speedtest server
  • uses HTTP protocol for all operations on network
  • tiny list of rust dependencies: std⁠, libc⁠, roxmltree⁠ + xmlparser⁠
  • results are stored in human readable .csv⁠, other storage backends incoming
  • builtin web-server to display results with uPlot⁠ chart
  • all web assets are included in the program binary
  • linux version statically linked with musl⁠ - not dependent on system libc⁠, essentially a single binary container
  • acts as a speedtest server itself. Not registered with official speedtest.net, but can be passed as speedtest server to supporting clients
⁠Command Line
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

Tag summary

Content type

Image

Digest

sha256:35b9c2deb…

Size

377.8 kB

Last updated

about 1 year ago

docker pull antonsmt/speedketchup