Deploying Speedtest Tracker
Introduction
Speedtest Tracker is a self-hosted internet performance tracking application that runs automated speed tests and stores the results for historical analysis. Built on the Ookla Speedtest CLI, it provides a beautiful web interface with graphs and statistics to help you monitor your internet connection quality over time.
Built with Laravel and featuring a modern dashboard, Speedtest Tracker goes beyond simple speed testing by offering scheduling, notifications, and detailed analytics that help identify patterns in your connection performance.
Key highlights of Speedtest Tracker:
- Automated Testing: Schedule speed tests to run automatically at set intervals
- Historical Data: Store and visualize speed test results over time
- Beautiful Dashboard: Modern interface with charts and statistics
- Multi-Server Support: Test against different Speedtest servers
- Notifications: Get alerts when speeds drop below thresholds
- API Access: RESTful API for integration with other tools
- Data Export: Export results to CSV or JSON
- InfluxDB Support: Send metrics to InfluxDB for Grafana dashboards
- Healthchecks.io: Integration with monitoring services
- Multi-User: Support for multiple users with authentication
- Docker Ready: Official Docker images available
- Open Source: Self-host without subscription fees
This guide walks through deploying Speedtest Tracker on Klutch.sh using Docker for comprehensive internet speed monitoring.
Why Deploy Speedtest Tracker on Klutch.sh
Deploying Speedtest Tracker on Klutch.sh provides several advantages:
Simplified Deployment: Klutch.sh handles the build and deployment automatically.
Persistent Storage: Historical speed test data persists across deployments.
HTTPS by Default: Secure access to your dashboard with automatic SSL.
GitHub Integration: Version control your configuration and deploy updates automatically.
Scheduled Tests: Run automated tests 24/7 without local infrastructure.
Environment Variable Management: Securely store API keys and credentials.
Custom Domains: Access your speed tracker from a memorable URL.
Always Monitoring: Continuous monitoring even when your home network is down.
Prerequisites
Before deploying Speedtest Tracker on Klutch.sh, ensure you have:
- A Klutch.sh account
- A GitHub account with a repository for your configuration
- Basic familiarity with Docker
- (Optional) InfluxDB instance for extended metrics
- (Optional) Notification service credentials (Telegram, Discord, etc.)
Deploying Speedtest Tracker on Klutch.sh
- Select HTTP as the traffic type
- Set the internal port to 80
Create a GitHub Repository
Create a new GitHub repository for your Speedtest Tracker deployment.
Create Your Dockerfile
Create a Dockerfile in your repository:
FROM lscr.io/linuxserver/speedtest-tracker:latest
# Set environment variablesENV PUID=1000ENV PGID=1000ENV TZ=America/New_YorkENV APP_KEY=${APP_KEY}ENV DB_CONNECTION=sqlite
# Create data directoriesRUN mkdir -p /config
EXPOSE 80
HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \ CMD curl -f http://localhost/ || exit 1Generate App Key
Generate a Laravel application key:
echo "base64:$(openssl rand -base64 32)"Save this key for the environment variables configuration.
Push Your Repository to GitHub
Commit and push your Dockerfile.
Create a New Project on Klutch.sh
Navigate to the Klutch.sh dashboard and create a new project named “speedtest-tracker” or similar.
Create a New App
Within your project, create a new app and connect your GitHub repository.
Configure HTTP Traffic
In the deployment settings:
Set Environment Variables
Configure the following environment variables:
| Variable | Value |
|---|---|
APP_KEY | Your generated Laravel key |
TZ | Your timezone (e.g., America/New_York) |
SPEEDTEST_SCHEDULE | Cron expression for test schedule (e.g., 0 * * * * for hourly) |
PRUNE_RESULTS_OLDER_THAN | Days to keep results (e.g., 365) |
Attach Persistent Volumes
Add the following volumes:
| Mount Path | Recommended Size | Purpose |
|---|---|---|
/config | 10 GB | Database, configuration, and logs |
Deploy Your Application
Click Deploy to build and start Speedtest Tracker.
Access Your Dashboard
Once deployment completes, access your Speedtest Tracker at https://your-app-name.klutch.sh.
Initial Configuration
Creating Your Account
On first access:
- Navigate to your Speedtest Tracker URL
- Create an administrator account
- Log in to access the dashboard
Configuring Test Schedule
- Go to Settings then General
- Set your preferred test interval
- Configure the Speedtest server to use
- Save your settings
Setting Up Notifications
- Navigate to Settings then Notifications
- Choose your notification channel (Telegram, Discord, etc.)
- Enter credentials and test the connection
- Set threshold values for alerts
Dashboard Features
Main Dashboard
The dashboard displays:
- Latest speed test results
- Average speeds over time
- Graphs for download, upload, and ping
- Test history table
Statistics
View detailed statistics including:
| Metric | Description |
|---|---|
| Average Download | Mean download speed over selected period |
| Average Upload | Mean upload speed over selected period |
| Average Ping | Mean latency over selected period |
| Max/Min Speeds | Highest and lowest recorded speeds |
| Standard Deviation | Speed consistency measurement |
Graphs
Available visualizations:
- Line graphs for speed trends
- Bar charts for time-of-day analysis
- Comparison charts between servers
Advanced Configuration
InfluxDB Integration
Send metrics to InfluxDB for Grafana dashboards:
| Variable | Value |
|---|---|
INFLUXDB_ENABLED | true |
INFLUXDB_URL | Your InfluxDB URL |
INFLUXDB_TOKEN | InfluxDB authentication token |
INFLUXDB_ORG | Organization name |
INFLUXDB_BUCKET | Bucket name |
Healthchecks.io Integration
Monitor that tests are running:
| Variable | Value |
|---|---|
HEALTHCHECKS_URL | Your healthchecks.io ping URL |
Multiple Servers
Test against multiple Speedtest servers by configuring server IDs in the settings.
Data Analysis
Identifying Patterns
Use historical data to identify:
- Peak congestion times
- Consistent speed issues
- ISP performance trends
- Weather-related impacts
Reporting
Generate reports for:
- Monthly performance summaries
- ISP service verification
- Network upgrade justification
Data Export
Export data via:
- CSV download from dashboard
- JSON API endpoints
- Direct database access
Troubleshooting
Tests Not Running
- Check the schedule configuration
- Verify the container has network access
- Review logs for Speedtest CLI errors
Inaccurate Results
- Test server may be congested
- Try different Speedtest servers
- Check for bandwidth-consuming processes
Database Issues
- Ensure persistent volume is mounted
- Check file permissions
- Verify SQLite database integrity
Additional Resources
- Speedtest Tracker Documentation
- Speedtest Tracker GitHub Repository
- Ookla Speedtest CLI
- Klutch.sh Persistent Volumes
- Klutch.sh Deployments
Conclusion
Deploying Speedtest Tracker on Klutch.sh gives you comprehensive internet speed monitoring with automated testing, historical analysis, and alerting. Track your connection performance over time, identify patterns in speed variations, and have data ready when dealing with ISP support. With persistent storage and 24/7 operation, Speedtest Tracker on Klutch.sh provides reliable monitoring of your internet connection quality.