| Crates.io | speedtest_statuspage |
| lib.rs | speedtest_statuspage |
| version | 0.2.5 |
| created_at | 2025-08-06 12:04:39.526736+00 |
| updated_at | 2025-08-08 08:13:34.7681+00 |
| description | A utility application to serve speedtest results over an HTTP endpoint. |
| homepage | |
| repository | https://github.com/GhostTorment/speedtest_statuspage |
| max_upload_size | |
| id | 1783709 |
| size | 6,725,228 |
A utility application to serve speedtest results over an HTTP endpoint.
This project is not affiliated with, endorsed by, or sponsored by Ookla (Ookla®).
All trademarks and copyrights belong to their respective owners.
speedtest-statuspage runs periodic speedtests using the speedtest-cli binary, caches the latest results, and exposes them via an HTTP JSON API endpoint (/speed).
The service can be configured via environment variables and is built using Rust with Actix-web and Tokio for async task scheduling.
speedtest-cli every N minutes (default: 60)./speed HTTP GET endpoint returning the latest cached speedtest result as JSON.| Variable | Description | Default |
|---|---|---|
BIND_ADDRESS |
IP address to bind the HTTP server | 127.0.0.1 |
BIND_PORT |
Port for the HTTP server | 8080 |
INTERVAL_MINUTES |
Interval in minutes between speedtests | 60 |
Ensure speedtest-cli is installed and available in your system PATH.
Set environment variables as needed, for example:
export BIND_ADDRESS=0.0.0.0
export BIND_PORT=8080
export INTERVAL_MINUTES=5
Run the application:
cargo run --release
Access speedtest results at:
http://<BIND_ADDRESS>:<BIND_PORT>/speed
The endpoint returns JSON with the latest speedtest data or HTTP 503 if no results are available yet.
{
"bytes_received": 12345678,
"bytes_sent": 8765432,
"download_bps": 50000000.0,
"upload_bps": 10000000.0,
"download_mbps": 50.0,
"upload_mbps": 10.0,
"ping_ms": 15.3,
"client": { /* client info */ }
}