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
cronpackage 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
| Layer | Technology |
|---|---|
| Backend | Go 1.22, Gin‑Gonic web framework |
| Database | PostgreSQL (8+), accessed via GORM ORM |
| Scheduler | robfig/cron for cron expressions |
| API Client | Custom wrapper around Speedtest.net REST endpoints |
| Frontend | Vue 3 + Vite, Chart.js for data visualisation |
| Containerization | Docker image built by LinuxServer.io; docker-compose templates available |
| Deployment | Runs 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
- ISP Performance Audits – Continuously log speeds to prove contractual uptime or trigger SLA violations.
- Network Engineering – Correlate speed drops with infrastructure changes (e.g., firmware updates, new firewalls).
- DevOps Monitoring – Embed Speedtest metrics into Grafana dashboards or Prometheus alerts for proactive incident response.
- 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
Related Apps in other
Immich
Self‑hosted photo and video manager
Syncthing
Peer‑to‑peer file sync, no central server
Strapi
Open-source headless CMS for modern developers
reveal.js
Create stunning web‑based presentations with HTML, CSS and JavaScript
Stirling-PDF
Local web PDF editor with split, merge, convert and more
MinIO
Fast, S3-compatible object storage for AI and analytics
Weekly Views
Repository Health
Information
Explore More Apps
SimpleLogin
Protect your identity with email aliases
Kodi
Open‑source home theater media hub
Docker Mailserver
Self‑hosted, full‑stack mail server in a single container
Radicale
Lightweight CalDAV & CardDAV server for calendars and contacts
FeedCord
Discord‑centric RSS & YouTube feed reader
SWAG (Secure Web Application Gateway)
Secure, self‑hosted web gateway with automatic SSL and reverse proxy