If you’ve ever wanted to track your internet speeds over time without relying on third-party services that log your data, self-hosting your own speed test tool is the answer. Two of the most popular options in the homelab community are LibreSpeed and Speedtest Tracker — and they serve surprisingly different purposes despite sharing a similar name space.

💡 This article contains affiliate links. If you buy through them, we earn a small commission at no extra cost to you. Learn more.

In this guide, we’ll break down what each tool does, how to set them up with Docker, and which one makes sense for your homelab. By the end, you’ll know exactly which to deploy — or whether you need both.


What’s the Difference? LibreSpeed vs Speedtest Tracker

Before diving in, it’s worth clarifying what each tool actually is:

  • LibreSpeed is a speed test server. It replaces the Ookla/Speedtest.net backend entirely. You run your own server, point clients at it, and measure LAN or WAN speeds without any data leaving your network.
  • Speedtest Tracker is a scheduled monitoring tool. It runs speed tests automatically at set intervals (using Ookla or LibreSpeed backends), stores the results, and shows them in a beautiful dashboard with charts and trends.

They can actually work together: run a LibreSpeed server and point Speedtest Tracker at it for a fully self-contained solution.


LibreSpeed: Your Own Speed Test Server

What Is LibreSpeed?

LibreSpeed is an open-source reimplementation of the speed test concept. It provides:

  • A web-based speed test UI (runs in your browser)
  • A backend server that clients connect to
  • Support for multiple server configurations and telemetry
  • Docker image for easy deployment

The key advantage: 100% self-contained. Nothing leaves your network. You can test LAN speeds between machines, measure your uplink to the server, or share it with friends on your VPN.

Hardware Considerations

For LibreSpeed, almost any server hardware works since the bottleneck is your network, not compute. If you’re building a homelab server to host tools like this, mini PCs are a cost-effective choice:

Setting Up LibreSpeed with Docker

Create a docker-compose.yml:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
services:
  librespeed:
    image: lscr.io/linuxserver/librespeed:latest
    container_name: librespeed
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Berlin
      - PASSWORD=your_secure_password
      # Optional: set to "true" to disable telemetry DB
      - TELEMETRY=true
      - ENABLE_ID_OBFUSCATION=false
      - REDACT_IP_ADDRESSES=false
    volumes:
      - ./config:/config
    ports:
      - 8080:80
    restart: unless-stopped

Then deploy:

1
docker compose up -d

Navigate to http://your-server-ip:8080 and you’ll see a familiar speed test UI — fully under your control.

LibreSpeed Telemetry

LibreSpeed includes an optional telemetry database that logs all test results. This is useful if you want historical data or want to see how many users are running tests. Enable it by keeping TELEMETRY=true in the environment variables.

Access your results at http://your-server-ip:8080/results/stats.php (password protected with the PASSWORD env var you set).

LibreSpeed Configuration

The linuxserver.io image places its config in /config/www/. You can customize the UI by editing speedtest_worker.js or placing a custom index.html. Advanced users can also configure multiple test points to simulate CDN-style latency measurements.


Speedtest Tracker: Automated Speed Monitoring

What Is Speedtest Tracker?

Speedtest Tracker is a Laravel-based web application that runs scheduled internet speed tests and stores the results in a database. It provides:

  • Scheduled tests (every 15 minutes, hourly, daily, etc.)
  • A modern dashboard with Filament UI
  • Charts and trend analysis
  • Notifications (Slack, Discord, email, Telegram, etc.)
  • Support for Ookla and LibreSpeed test servers

This is the tool you reach for when you want to answer: “Is my ISP delivering what I’m paying for?”

Setting Up Speedtest Tracker with Docker

Here’s a production-ready docker-compose.yml for Speedtest Tracker:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
services:
  speedtest-tracker:
    image: lscr.io/linuxserver/speedtest-tracker:latest
    container_name: speedtest-tracker
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Berlin
      - APP_KEY=base64:your_32_char_base64_key_here
      - DB_CONNECTION=sqlite
      # Use LibreSpeed instead of Ookla:
      # - SPEEDTEST_SCHEDULE="0 * * * *"
      # - SPEEDTEST_SERVERS=1  (LibreSpeed server ID)
    volumes:
      - ./config:/config
    ports:
      - 8765:80
    restart: unless-stopped

Generate your APP_KEY:

1
docker run --rm lscr.io/linuxserver/speedtest-tracker php artisan key:generate --show

Paste the output (starting with base64:) into the APP_KEY variable.

Start the container:

1
docker compose up -d

Visit http://your-server-ip:8765 and log in with the default credentials:

Change these immediately in Settings → Profile.

Configuring the Test Schedule

In the Speedtest Tracker UI:

  1. Go to Settings → General
  2. Set your preferred schedule (e.g., every hour)
  3. Choose your test provider: Ookla (uses Ookla infrastructure) or LibreSpeed (self-hosted or public LibreSpeed servers)

For Ookla, the tracker uses the official Ookla CLI under the hood. For LibreSpeed, you configure the server URL directly.

Pointing Speedtest Tracker at Your LibreSpeed Server

This is where it gets powerful. To use your self-hosted LibreSpeed server:

  1. In Speedtest Tracker settings, set the Speedtest Connection to LibreSpeed
  2. Add your LibreSpeed server URL (e.g., http://librespeed:80 if using Docker networking, or the full LAN URL)
  3. Save and trigger a manual test to verify connectivity

Now your entire speed monitoring pipeline is self-hosted:

  • LibreSpeed serves as the test endpoint
  • Speedtest Tracker runs scheduled tests against it
  • All data stays on your server

Speedtest Tracker Notifications

One of Speedtest Tracker’s best features is alerting. You can configure it to notify you when:

  • Download speed drops below a threshold
  • Upload speed falls short
  • Latency spikes above a set value

Supported notification channels:

  • Telegram — great for homelab alerts
  • Discord — perfect if you run a homelab Discord server
  • Slack
  • Email (SMTP)
  • Webhooks — connect to anything

Set these up under Settings → Notifications.


Head-to-Head Comparison

FeatureLibreSpeedSpeedtest Tracker
PurposeSpeed test server/clientAutomated monitoring + dashboards
Runs tests automatically❌ (manual only)✅ (scheduled)
Historical data / charts⚠️ Basic telemetry only✅ Full dashboard with trends
Self-contained network test✅ Fully self-hosted⚠️ Depends on backend choice
Notifications✅ Discord, Telegram, email
Resource usageVery low (~50 MB RAM)Moderate (~200-300 MB RAM)
Best forLAN speed tests, shared test serverISP monitoring, SLA tracking

Which One Should You Choose?

Choose LibreSpeed if:

  • You want to test speeds between devices on your LAN (e.g., checking if your 10GbE switch is actually delivering 10G)
  • You want to provide a speed test server to other users on your VPN (e.g., Tailscale network friends)
  • You don’t care about historical tracking — just on-demand testing
  • You want the absolute lowest resource footprint

Choose Speedtest Tracker if:

  • You want to automatically track your ISP’s performance over days, weeks, and months
  • You want alerts when speeds drop below your paid tier
  • You want a beautiful dashboard showing trends and anomalies
  • You’re already paying for a specific internet speed and want proof when your ISP underdelivers

Use Both Together if:

  • You want a 100% self-hosted monitoring pipeline with no data leaving your network
  • You want LAN speed benchmarks and long-term historical tracking in one setup

Storage and Networking Tips

For running these tools reliably, consider your storage setup. Speedtest Tracker writes test results to SQLite (or MySQL/PostgreSQL if you configure it). Over years of testing every hour, this can grow. Keep your data volume on reliable storage:

For networking, make sure your homelab server has a gigabit network connection to get accurate results. If you’re using Wi-Fi, expect fluctuating numbers that reflect your wireless performance, not your actual WAN speed:


Putting It All Together: Full Docker Compose Stack

Here’s a complete docker-compose.yml that runs both tools:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
services:
  librespeed:
    image: lscr.io/linuxserver/librespeed:latest
    container_name: librespeed
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Berlin
      - PASSWORD=changeme
      - TELEMETRY=true
    volumes:
      - ./librespeed/config:/config
    ports:
      - 8080:80
    restart: unless-stopped

  speedtest-tracker:
    image: lscr.io/linuxserver/speedtest-tracker:latest
    container_name: speedtest-tracker
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Berlin
      - APP_KEY=base64:REPLACE_WITH_YOUR_KEY
      - DB_CONNECTION=sqlite
    volumes:
      - ./speedtest-tracker/config:/config
    ports:
      - 8765:80
    restart: unless-stopped

Deploy both with:

1
docker compose up -d

Then in Speedtest Tracker settings, set the LibreSpeed server URL to http://librespeed:80 (Docker DNS resolves the service name automatically when both containers are on the same network).


Accessing via Reverse Proxy

Both tools work well behind a reverse proxy like Nginx Proxy Manager or Traefik. This lets you access them via nice domain names like speedtest.yourdomain.com and tracker.yourdomain.com.

For LibreSpeed specifically, if you’re hosting it for others to use on your Tailscale or WireGuard network, putting it behind a reverse proxy with SSL makes the experience much cleaner — modern browsers may complain about running speed tests on plain HTTP.


Final Verdict

LibreSpeed is the better choice if you need a lightweight, on-demand speed test tool that runs completely within your network. It’s perfect for benchmarking your homelab’s internal network performance and sharing a test endpoint with VPN peers.

Speedtest Tracker wins if your goal is ISP accountability — automated testing, trend charts, and alerts are exactly what you need to catch performance drops before you have to call your ISP.

For most homelabbers, running both makes the most sense. LibreSpeed as the test backend costs almost nothing in resources, and Speedtest Tracker pointing at it gives you a complete, privacy-respecting monitoring setup with zero external dependencies.

Both tools install in minutes with Docker. There’s really no reason not to add at least one of them to your stack today.