docker.recipes

Speedtest Tracker

beginner

Internet speed monitoring dashboard.

Overview

Speedtest Tracker is a self-hosted web application that automatically monitors your internet connection speed by running periodic speed tests against multiple testing servers. Built with PHP and Laravel, it provides a comprehensive dashboard for tracking bandwidth performance over time, identifying connectivity issues, and generating detailed reports of your network's performance history. The application integrates with popular speed testing services like Ookla Speedtest and LibreSpeed to ensure accurate measurements across different testing methodologies. This stack combines Speedtest Tracker with SQLite as the embedded database solution, creating a lightweight monitoring system that requires minimal resource overhead while maintaining full functionality. SQLite eliminates the need for a separate database server, making the deployment incredibly simple while still providing robust data storage for historical speed test results, configuration settings, and performance analytics. The combination ensures fast data retrieval for dashboard visualizations and efficient storage of time-series network performance data. Home lab enthusiasts, small business owners, and network administrators will find this stack invaluable for documenting ISP performance, troubleshooting connectivity issues, and maintaining SLA compliance records. The SQLite backend makes it perfect for single-user deployments or small teams who need reliable network monitoring without the complexity of managing separate database infrastructure, while still providing enterprise-grade monitoring capabilities.

Key Features

  • Automated speed tests scheduled at configurable intervals using cron-style scheduling
  • Multi-server testing support with automatic server selection based on geographic proximity
  • Historical performance graphs showing download, upload, and latency trends over customizable time periods
  • SQLite database integration providing zero-configuration data persistence with automatic schema management
  • Threshold-based alerting system for detecting performance degradation below specified bandwidth limits
  • Export functionality for speed test data in CSV and JSON formats for external analysis
  • Mobile-responsive dashboard optimized for monitoring network performance on smartphones and tablets
  • API endpoints for integrating speed test data with external monitoring systems and automation tools

Common Use Cases

  • 1Home office workers documenting internet performance for remote work productivity analysis
  • 2Small businesses monitoring ISP service level agreement compliance and performance guarantees
  • 3Content creators tracking upload bandwidth consistency for streaming and video production workflows
  • 4IT support teams troubleshooting intermittent connectivity issues with historical performance data
  • 5Home lab administrators monitoring network infrastructure changes and optimization efforts
  • 6Property managers providing internet performance transparency to tenants in shared connectivity environments
  • 7Network enthusiasts comparing ISP performance across different time periods and usage patterns

Prerequisites

  • Docker Engine 20.10+ and Docker Compose V2 for container orchestration support
  • Minimum 512MB RAM allocated for Speedtest Tracker container and SQLite operations
  • Available TCP port 8080 for web dashboard access without conflicts from other services
  • Stable internet connection capable of handling automated speed tests without data cap concerns
  • Basic understanding of cron scheduling syntax for configuring automated test intervals
  • Web browser with JavaScript enabled for accessing the responsive monitoring dashboard

For development & testing. Review security settings, change default credentials, and test thoroughly before production use. See Terms

docker-compose.yml

docker-compose.yml
1services:
2 speedtest:
3 image: lscr.io/linuxserver/speedtest-tracker:latest
4 container_name: speedtest-tracker
5 restart: unless-stopped
6 environment:
7 PUID: 1000
8 PGID: 1000
9 TZ: UTC
10 DB_CONNECTION: sqlite
11 volumes:
12 - speedtest_config:/config
13 ports:
14 - "8080:80"
15
16volumes:
17 speedtest_config:

.env Template

.env
1# Runs speedtest every hour

Usage Notes

  1. 1Access at http://localhost:8080
  2. 2Scheduled speed tests
  3. 3Historical graphs

Quick Start

terminal
1# 1. Create the compose file
2cat > docker-compose.yml << 'EOF'
3services:
4 speedtest:
5 image: lscr.io/linuxserver/speedtest-tracker:latest
6 container_name: speedtest-tracker
7 restart: unless-stopped
8 environment:
9 PUID: 1000
10 PGID: 1000
11 TZ: UTC
12 DB_CONNECTION: sqlite
13 volumes:
14 - speedtest_config:/config
15 ports:
16 - "8080:80"
17
18volumes:
19 speedtest_config:
20EOF
21
22# 2. Create the .env file
23cat > .env << 'EOF'
24# Runs speedtest every hour
25EOF
26
27# 3. Start the services
28docker compose up -d
29
30# 4. View logs
31docker compose logs -f

One-Liner

Run this command to download and set up the recipe in one step:

terminal
1curl -fsSL https://docker.recipes/api/recipes/speedtest-tracker/run | bash

Troubleshooting

  • Speed tests failing with 'No servers available': Configure firewall to allow outbound connections on ports 8080 and 5060, and verify DNS resolution is working properly
  • Dashboard shows 'Database connection failed': Check that the speedtest_config volume has proper write permissions and sufficient disk space for SQLite database growth
  • Scheduled tests not running automatically: Verify the TZ environment variable matches your local timezone and check container logs for cron service status
  • High memory usage during speed tests: Reduce concurrent test frequency in settings and ensure container has adequate memory allocation for peak testing periods
  • Historical data missing after container restart: Confirm the speedtest_config volume is properly mounted and persistent across container lifecycle events
  • Web interface loading slowly: Clear browser cache and check that SQLite database file hasn't grown excessively large, consider archiving old test results

Community Notes

Loading...
Loading notes...

Download Recipe Kit

Get all files in a ready-to-deploy package

Includes docker-compose.yml, .env template, README, and license

Ad Space