Skip to content

Self-host Speedtest Tracker

updated Sep 2026prices checked · Jul 2026Install verified on Ubuntu 26.04 · Sep 2026 · how we test
We earn commissions when you shop through the links below. Full disclosure →

Runs scheduled internet speed tests with the Ookla Speedtest CLI and records download, upload, ping and packet loss over time, with charts, threshold notifications and InfluxDB/Prometheus export. Built on Laravel and shipped as a LinuxServer.io image with SQLite by default.

Key facts

CategoryMonitoring
LicenseMIT
StackPHP, Laravel
Min RAM256 MB
Official imageyes
Measured idle RAM110 MB
Difficulty

What you need

  • Any VPS with at least 256 MB of RAM
  • A domain you control — most self-hosted setups need HTTPS in front of them
  • Under an hour if you've used Docker before
Where to host itaffiliate disclosure
Hetzner Cloudrun it on
From $23.59/mo · 2 vCPU / 4 GB / 80 GB · EU + US
Get Hetzner Cloud (opens in new tab)
Kamaterafree trial
From $4/mo · 1 vCPU / 1 GB / 20 GB · US + EU + Asia
Start free on Kamatera → (opens in new tab)
DigitalOceanalso works on
From $6/mo · 1 vCPU / 1 GB / 25 GB · US + EU + Asia
Deploy on DigitalOcean → (opens in new tab)

Paid link — we earn a commission if you shop through it.

Install

Run these commands on your server:

# Speedtest Tracker (SQLite) — APP_KEY is required and generated here
docker run -d --name speedtest-tracker --restart unless-stopped \
  -p 8080:80 -e PUID=$(id -u) -e PGID=$(id -g) \
  -e APP_KEY="base64:$(openssl rand -base64 32)" -e APP_URL=http://SERVER_IP:8080 \
  -e DB_CONNECTION=sqlite -v speedtest-tracker:/config \
  lscr.io/linuxserver/speedtest-tracker:latest
# →  http://SERVER_IP:8080 — default login admin@example.com / password; change it at once
# on a VPS it measures the VPS's own uplink, not your home connection

More in Monitoring

We use analytics cookies (Google Analytics, PostHog) to see which guides are useful. No ad networks, no cross-site tracking. See our privacy policy.