Install and Configure Speedtest Tracker on Ubuntu

By Anurag Singh

Updated on Nov 04, 2025

Install and Configure Speedtest Tracker on Ubuntu

In this tutorial, we'll learn how to install and configure Speedtest Tracker on Ubuntu 24.04.

Introduction

Maintaining a reliable internet connection is essential for work, communication, streaming, gaming, and business operations. Whenever our network slows down, the first reaction is usually to run a quick speed test, but that only shows the speed at that moment. We need something that tracks performance over time.

In this guide, we will install and configure Speedtest Tracker on an Ubuntu 24.04 server using Docker. We will also secure it with Nginx and SSL, making it safe and ready to access through a domain.

What is Speedtest Tracker?

Speedtest Tracker is a self-hosted web application that uses Ookla’s Speedtest CLI to automatically test internet speed at regular intervals. The results are stored and presented in an easy-to-read dashboard, helping us analyze download speed, upload speed, latency, and network stability over time.

Prerequisites

Before we begin, ensure we have the following:

  • An Ubuntu 24.04 dedicate server or KVM VPS.
  • Basic Linux Command Line Knowledge.
  • A domain name, pointing A record to server IP.

Install and Configure Speedtest Tracker on Ubuntu 24.04

Step 1: Install Docker and Docker Compose

Speedtest Tracker runs best in Docker, so we set that up first.

Run the following:

sudo apt update
sudo apt install -y ca-certificates curl gnupg

# Add Docker’s GPG key and repository
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo tee /etc/apt/keyrings/docker.asc >/dev/null

echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \
https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" \
| sudo tee /etc/apt/sources.list.d/docker.list >/dev/null

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

Log out and log back in once so Docker group applies.

Step 2: Create a Folder for Speedtest Tracker

This will store the app and its data.

mkdir -p ~/speedtest-tracker
cd ~/speedtest-tracker

Step 3: Generate App Key (Required)

echo -n 'base64:'; openssl rand -base64 32

Copy the generated key. We paste it in the next step.

Step 4: Create Docker Compose File

nano docker-compose.yml

Paste this:

services:
  speedtest-tracker:
    image: lscr.io/linuxserver/speedtest-tracker:latest
    container_name: speedtest-tracker
    restart: unless-stopped
    ports:
      - "8080:80"
    environment:
      - PUID=1000
      - PGID=1000
      - APP_KEY=PASTE_YOUR_KEY_HERE
      - DB_CONNECTION=sqlite
      - APP_TIMEZONE=Asia/Kolkata
      - SPEEDTEST_SCHEDULE=*/30 * * * *
    volumes:
      - ./data:/config

This setup uses SQLite (simple and perfect for personal or small business use).

Step 5: Start Speedtest Tracker

docker compose pull
docker compose up -d

Check container status:

docker compose ps

Step 6: Verify Speed Tests Are Running

Logs help confirm everything is working:

docker compose logs -f speedtest-tracker

Give it 30–60 minutes and you’ll start seeing history charts.

Step 7: Update When Needed

To update Speedtest Tracker:

cd ~/speedtest-tracker
docker compose pull
docker compose up -d

Optional Enhancements

Use Custom Test Schedule

Examples:
Frequency   Value
Every 15 min    */15 * * * *
Every hour  0 * * * *
Once daily at 6am   0 6 * * *

Edit the SPEEDTEST_SCHEDULE value in docker-compose.yml.

Use a Custom Domain

If we want a domain like speedtest.example.com, we can later add a reverse proxy like Nginx.

Step 8: Install Nginx

sudo apt update
sudo apt install -y nginx

Enable and check status:

sudo systemctl enable --now nginx
sudo systemctl status nginx

Create Nginx Config for Speedtest Tracker

sudo nano /etc/nginx/sites-available/speedtest

Paste this:

server {
    listen 80;
    server_name speedtest.example.com;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Save and enable it:

sudo ln -s /etc/nginx/sites-available/speedtest /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

If it fails, that means you typed something wrong. Fix it instead of restarting the planet.

Step 9: Install Certbot for HTTPS

sudo apt install -y certbot python3-certbot-nginx

Run Certbot:

sudo certbot --nginx -d speedtest.example.com

Certbot will auto-configure SSL in Nginx.

Auto-Renew SSL Certificates

Certbot already installs a cron job for renewal, but test it because assumptions are for amateurs:

sudo certbot renew --dry-run

If this fails, fix it now rather than three months later when your SSL dies at 3 AM.

Step 10: Access the Dashboard

Open in browser:

https://speedtest.example.com

Default login (change after login):

Email: admin@example.com
Password: password

speedtest tracker hostmycode

Once logged in, update login details, set timezone, and confirm scheduled tests are running.

Conclusion

Speedtest Tracker gives us a practical and reliable way to monitor internet performance over time. Instead of guessing or running one-off tests, we can now track real data and identify patterns that affect productivity, streaming quality, gaming, or business operations. Once installed, it runs quietly in the background and maintains a detailed speed history, making it easier to address issues with our ISP or improve network planning.