Deploying MySpeed
Introduction
MySpeed is a self-hosted internet speed test application that goes beyond single measurements by tracking your connection quality over time. Unlike commercial speed test services that show you a single snapshot, MySpeed maintains a complete history of your internet performance, helping you identify patterns, troubleshoot issues, and hold your ISP accountable.
The application performs automated speed tests at configurable intervals, storing results in a database for historical analysis. With an intuitive dashboard showing trends, averages, and anomalies, MySpeed becomes an essential tool for monitoring your internet connection quality.
Key highlights of MySpeed:
- Automated Testing: Schedule speed tests to run automatically at set intervals
- Historical Data: Store and analyze months or years of speed test results
- Visual Analytics: Charts and graphs showing download, upload, and ping trends
- Multiple Test Servers: Configure different speed test servers for comparison
- Threshold Alerts: Get notified when speeds fall below expected levels
- API Access: Integrate speed data with other monitoring systems
- Privacy Focused: Your speed data stays on your server, not shared with third parties
- Lightweight: Minimal resource usage for background monitoring
This guide walks through deploying MySpeed on Klutch.sh using Docker.
Why Deploy MySpeed on Klutch.sh
Deploying MySpeed on Klutch.sh provides several advantages:
Continuous Monitoring: Your speed tests run 24/7 without keeping a local computer on. Track your connection quality around the clock.
Persistent History: Speed test data persists in attached volumes, building a comprehensive record of your internet performance over months or years.
Remote Access: Check your home or office connection speed from anywhere. Compare current performance against historical baselines.
Simplified Deployment: Klutch.sh handles container management automatically. Focus on analyzing your data, not managing servers.
Reliable Infrastructure: Klutch.sh ensures your speed monitor stays online consistently, providing uninterrupted data collection.
Prerequisites
Before deploying MySpeed on Klutch.sh, ensure you have:
- A Klutch.sh account
- A GitHub account with a repository for your configuration
- Basic familiarity with Docker concepts
- Understanding that speed tests measure connection to Klutch.sh infrastructure, not your home network
Understanding MySpeed Architecture
MySpeed consists of several components:
Web Interface: A clean dashboard showing current and historical speed test data with interactive charts.
Test Scheduler: Background process that runs speed tests at configured intervals.
Speed Test Engine: Performs actual bandwidth measurements using established speed test protocols.
Database: SQLite or PostgreSQL storage for historical test results.
API Layer: REST API for programmatic access to speed data.
Preparing Your Repository
Create a GitHub repository for your MySpeed deployment.
Repository Structure
myspeed-deploy/├── Dockerfile└── .dockerignoreCreating the Dockerfile
FROM germannewsmaker/myspeed:latest
# Environment configurationENV TZ=UTC
# Expose web interfaceEXPOSE 5216
# Data volumeVOLUME ["/myspeed/data"]Creating the .dockerignore File
.git.github*.mdLICENSE.gitignore.DS_StoreDeploying MySpeed on Klutch.sh
- Select HTTP as the traffic type
- Set the internal port to 5216
Push Your Repository to GitHub
Initialize and push your repository with the Dockerfile to GitHub.
Create a New Project on Klutch.sh
Navigate to the Klutch.sh dashboard and create a project named “myspeed” or “speed-monitor”.
Create a New App
Create a new app within your project and connect your GitHub repository.
Configure HTTP Traffic
MySpeed serves its web interface over HTTP:
Set Environment Variables
Configure the application:
| Variable | Value |
|---|---|
TZ | Your timezone (e.g., America/New_York) |
PASSWORD | Optional admin password |
Attach Persistent Volumes
Configure storage for speed test history:
| Mount Path | Recommended Size | Purpose |
|---|---|---|
/myspeed/data | 1 GB | SQLite database and configuration |
Deploy Your Application
Click Deploy to build and start your MySpeed instance.
Access Your Speed Monitor
Visit https://your-app-name.klutch.sh to view the MySpeed dashboard.
Initial Configuration
First Access
On first visit to MySpeed:
- The dashboard displays with no data yet
- Configure your test schedule settings
- Optionally run a manual test to verify functionality
Test Schedule Configuration
Configure automatic testing:
- Access the Settings page
- Set test interval (recommended: 1-4 hours)
- Choose speed test server
- Enable/disable specific test types
Speed Test Servers
MySpeed supports multiple test backends:
- Ookla Speedtest: Most recognized, widely available servers
- LibreSpeed: Open-source alternative
- Custom Servers: Configure your own test endpoints
Understanding the Dashboard
Current Speed
The main display shows:
- Download Speed: Current download bandwidth in Mbps
- Upload Speed: Current upload bandwidth in Mbps
- Ping/Latency: Connection latency in milliseconds
- Jitter: Variation in latency
Historical Charts
Analyze trends with:
- Download/upload speed over time
- Ping/latency trends
- Daily, weekly, and monthly averages
- Anomaly highlighting
Statistics
Summary metrics include:
- Average speeds over different periods
- Maximum and minimum recorded speeds
- Reliability percentage (tests without errors)
- ISP comparison data
Alerting and Notifications
Setting Thresholds
Configure alerts for poor performance:
- Go to Settings > Alerts
- Set minimum acceptable download speed
- Set minimum acceptable upload speed
- Set maximum acceptable latency
- Configure notification method
Notification Options
Receive alerts via:
- Email notifications
- Webhook integrations
- Dashboard warnings
API Access
Endpoints
Access speed data programmatically:
GET /api/speedtests - List all testsGET /api/speedtests/latest - Get latest resultGET /api/statistics - Get summary statisticsExample Response
{ "id": 1234, "download": 95.4, "upload": 11.2, "ping": 12, "timestamp": "2024-01-15T10:30:00Z", "server": "Speedtest.net"}Integration Ideas
Use the API for:
- Grafana dashboards
- Home automation triggers
- ISP performance documentation
- Network monitoring systems
Use Cases
ISP Accountability
Document your connection quality:
- Export historical data as evidence
- Compare against advertised speeds
- Track degradation over time
- Support service complaints with data
Network Troubleshooting
Identify connection issues:
- Correlate speed drops with events
- Detect time-of-day patterns
- Compare before/after equipment changes
- Monitor after ISP visits
Quality Assurance
Ensure consistent performance:
- Verify new connection installation
- Monitor business-critical connections
- Test after network upgrades
- Baseline comparison for changes
Important Considerations
Cloud-Based Speed Testing
When running MySpeed on Klutch.sh, speed tests measure the connection between Klutch.sh infrastructure and speed test servers, not your home network. This setup is useful for:
- Monitoring a VPS or server connection
- Baseline cloud infrastructure performance
- Comparing cloud provider network quality
For home network monitoring, consider running MySpeed on local hardware that can measure your actual internet connection.
Production Best Practices
Data Management
- Schedule tests at reasonable intervals (hourly is usually sufficient)
- Archive old data periodically
- Monitor storage usage
- Export important data regularly
Resource Usage
- Speed tests consume bandwidth during execution
- Plan test times to avoid interfering with other services
- Consider off-peak testing schedules
Troubleshooting
No Test Results
- Verify the container has network access
- Check speed test server connectivity
- Review container logs for errors
Inconsistent Results
- Speed test servers may have variable load
- Try different test servers
- Check for network congestion
Dashboard Not Loading
- Verify HTTP traffic configuration
- Check container is running
- Confirm correct port (5216)
Additional Resources
Conclusion
Deploying MySpeed on Klutch.sh gives you a self-hosted speed monitoring solution with persistent historical data. While cloud-deployed speed tests measure server connectivity rather than home network speeds, MySpeed provides valuable insights for monitoring cloud infrastructure performance.
The combination of automated testing, historical analytics, and clean visualization makes MySpeed an excellent tool for anyone who wants detailed visibility into their network connection quality over time. Whether you’re documenting ISP issues or monitoring server connectivity, MySpeed on Klutch.sh provides reliable, persistent speed monitoring.