MCPSERV.CLUB
Speedtest Tracker

Speedtest Tracker

Self-Hosted

Track your internet speed over time, spot problems instantly

Active(90)
4.4kstars
0views
Updated 1 day ago
Speedtest Tracker screenshot

Overview

Discover what makes Speedtest Tracker powerful

Speedtest Tracker is a lightweight, self‑hosted service that continuously probes an internet connection using the Speedtest.net API and stores the results in a relational database. The application exposes a RESTful web interface for visualising performance trends, configuring test schedules, and setting alert thresholds. It is designed to run inside a Docker container, making it trivial to deploy on any platform that supports containers—NAS devices (Synology, Unraid), cloud VMs, or bare‑metal servers.

Automated Scheduling

Metric Collection

Historical Analytics

Alerting & Webhooks

Overview

Speedtest Tracker is a lightweight, self‑hosted service that continuously probes an internet connection using the Speedtest.net API and stores the results in a relational database. The application exposes a RESTful web interface for visualising performance trends, configuring test schedules, and setting alert thresholds. It is designed to run inside a Docker container, making it trivial to deploy on any platform that supports containers—NAS devices (Synology, Unraid), cloud VMs, or bare‑metal servers.

Key Features

  • Automated Scheduling: A cron‑style scheduler triggers Speedtest API calls at user‑defined intervals (default every 15 min). The scheduling logic is implemented in Go, leveraging the cron package for robust timing.
  • Metric Collection: Each test captures download/upload speeds, latency, packet loss, jitter, and the server’s location. Results are persisted in a PostgreSQL database via GORM ORM.
  • Historical Analytics: The web UI renders time‑series charts (using Chart.js) that allow developers to identify performance regressions or ISP throttling patterns.
  • Alerting & Webhooks: Thresholds can be set per metric; when exceeded, the app sends notifications through configurable channels (Slack, Discord, email) or triggers HTTP webhooks. This makes it a natural fit for integration into CI/CD pipelines or monitoring stacks.

Technical Stack

LayerTechnology
BackendGo 1.22, Gin‑Gonic web framework
DatabasePostgreSQL (8+), accessed via GORM ORM
Schedulerrobfig/cron for cron expressions
API ClientCustom wrapper around Speedtest.net REST endpoints
FrontendVue 3 + Vite, Chart.js for data visualisation
ContainerizationDocker image built by LinuxServer.io; docker-compose templates available
DeploymentRuns as a single container with optional persistence volumes for DB and config

The separation of concerns is clear: the Go service handles data ingestion, scheduling, and API exposure; the Vue front‑end consumes JSON endpoints to render dashboards. This decoupled architecture allows developers to replace the UI or swap out PostgreSQL for another SQL database with minimal effort.

Deployment & Infrastructure

Speedtest Tracker is intentionally stateless from the application side; all state lives in PostgreSQL. For production, a separate database instance (managed or self‑hosted) is recommended to avoid data loss if the container restarts. The Docker image includes a health‑check that verifies connectivity to both the Speedtest API and the database, enabling orchestration tools (Docker Swarm, Kubernetes) to manage restarts automatically. Horizontal scaling is straightforward: multiple replicas can share the same database, with a lightweight Redis queue (optional) to coordinate test execution and avoid duplicate runs.

Integration & Extensibility

  • REST API: Exposes endpoints for fetching test history, configuring schedules, and managing alerts. Developers can build custom dashboards or integrate with Prometheus exporters.
  • Webhooks: A simple HTTP POST payload is sent on alert events; the payload includes metric values, timestamps, and severity. This hooks cleanly into existing notification pipelines.
  • Plugin Hooks: While the core is monolithic, the codebase exposes interfaces for adding new notification providers or metrics collectors. Contributions are welcome via pull requests.

Developer Experience

The project follows standard Go conventions and includes comprehensive unit tests (≈80 % coverage). Documentation is hosted at docs.speedtest-tracker.dev, with sections on environment variables, API usage, and troubleshooting. The community is active on GitHub Discussions; issues are triaged quickly, and feature requests are prioritized. Licensing under MIT ensures no restrictions on commercial use or internal tooling.

Use Cases

  1. ISP Performance Audits – Continuously log speeds to prove contractual uptime or trigger SLA violations.
  2. Network Engineering – Correlate speed drops with infrastructure changes (e.g., firmware updates, new firewalls).
  3. DevOps Monitoring – Embed Speedtest metrics into Grafana dashboards or Prometheus alerts for proactive incident response.
  4. Research Projects – Collect large datasets of internet performance across regions for academic studies.

Advantages

  • Performance: Written in Go, the service is lightweight (≈200 MB image) and can run on low‑resource devices.
  • Flexibility: Full control over scheduling, thresholds, and notification channels; no vendor lock‑in.
  • Licensing: MIT license allows unrestricted use in commercial products.
  • Community & Maintenance: Actively maintained with frequent releases; the UI is modern and responsive.
  • Simplicity: One‑click Docker deployment, minimal configuration via environment variables.

In summary, Speedtest Tracker offers a robust, developer‑friendly platform for tracking and alerting on internet performance. Its clean architecture, extensible API surface, and container‑friendly design make it an excellent choice for anyone needing reliable speed monitoring in a self‑hosted environment.

Open SourceReady to get started?

Join the community and start self-hosting Speedtest Tracker today