Skip to content

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
└── .dockerignore

Creating the Dockerfile

FROM germannewsmaker/myspeed:latest
# Environment configuration
ENV TZ=UTC
# Expose web interface
EXPOSE 5216
# Data volume
VOLUME ["/myspeed/data"]

Creating the .dockerignore File

.git
.github
*.md
LICENSE
.gitignore
.DS_Store

Deploying MySpeed on Klutch.sh

    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:

    • Select HTTP as the traffic type
    • Set the internal port to 5216

    Set Environment Variables

    Configure the application:

    VariableValue
    TZYour timezone (e.g., America/New_York)
    PASSWORDOptional admin password

    Attach Persistent Volumes

    Configure storage for speed test history:

    Mount PathRecommended SizePurpose
    /myspeed/data1 GBSQLite 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:

  1. The dashboard displays with no data yet
  2. Configure your test schedule settings
  3. Optionally run a manual test to verify functionality

Test Schedule Configuration

Configure automatic testing:

  1. Access the Settings page
  2. Set test interval (recommended: 1-4 hours)
  3. Choose speed test server
  4. 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:

  1. Go to Settings > Alerts
  2. Set minimum acceptable download speed
  3. Set minimum acceptable upload speed
  4. Set maximum acceptable latency
  5. 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 tests
GET /api/speedtests/latest - Get latest result
GET /api/statistics - Get summary statistics

Example 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.