Skip to content

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

    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 variables
    ENV PUID=1000
    ENV PGID=1000
    ENV TZ=America/New_York
    ENV APP_KEY=${APP_KEY}
    ENV DB_CONNECTION=sqlite
    # Create data directories
    RUN mkdir -p /config
    EXPOSE 80
    HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \
    CMD curl -f http://localhost/ || exit 1

    Generate App Key

    Generate a Laravel application key:

    Terminal window
    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:

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

    Set Environment Variables

    Configure the following environment variables:

    VariableValue
    APP_KEYYour generated Laravel key
    TZYour timezone (e.g., America/New_York)
    SPEEDTEST_SCHEDULECron expression for test schedule (e.g., 0 * * * * for hourly)
    PRUNE_RESULTS_OLDER_THANDays to keep results (e.g., 365)

    Attach Persistent Volumes

    Add the following volumes:

    Mount PathRecommended SizePurpose
    /config10 GBDatabase, 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:

  1. Navigate to your Speedtest Tracker URL
  2. Create an administrator account
  3. Log in to access the dashboard

Configuring Test Schedule

  1. Go to Settings then General
  2. Set your preferred test interval
  3. Configure the Speedtest server to use
  4. Save your settings

Setting Up Notifications

  1. Navigate to Settings then Notifications
  2. Choose your notification channel (Telegram, Discord, etc.)
  3. Enter credentials and test the connection
  4. 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:

MetricDescription
Average DownloadMean download speed over selected period
Average UploadMean upload speed over selected period
Average PingMean latency over selected period
Max/Min SpeedsHighest and lowest recorded speeds
Standard DeviationSpeed 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:

VariableValue
INFLUXDB_ENABLEDtrue
INFLUXDB_URLYour InfluxDB URL
INFLUXDB_TOKENInfluxDB authentication token
INFLUXDB_ORGOrganization name
INFLUXDB_BUCKETBucket name

Healthchecks.io Integration

Monitor that tests are running:

VariableValue
HEALTHCHECKS_URLYour 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

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.