The “Up to” Speed Promise: A Daily Frustration
It’s a familiar scenario: you pay for a 1Gbps fiber connection, yet Netflix starts buffering at 8 PM on a Tuesday. When you call your ISP, they claim everything looks perfect on their end. Without hard data, you’re just another frustrated customer. Browser-based speed tests aren’t enough because they only capture a single moment in time—usually when you actually remember to run them.
To truly understand your connection, you need to log metrics 24/7 without lifting a finger. I needed evidence to show my ISP exactly when the peering issues started. Speedtest Tracker solved this. After running it in my production environment for over six months, it has become an essential utility in my HomeLab stack.
The Tool: Speedtest Tracker
Speedtest Tracker is a self-hosted application built on Laravel and Filament. It serves as a powerful wrapper for the official Ookla Speedtest CLI. Instead of just running a one-off test, it stores every result in a database and generates intuitive graphs. This allows you to export CSV logs whenever you need to have a “serious talk” with your service provider.
Docker’s isolation is its biggest strength. Whether you are running Ubuntu, a Synology NAS, or a Raspberry Pi, the environment stays consistent. The tool manages scheduling via cron, handles the database (SQLite or PostgreSQL), and provides a clean dashboard to track jitter, latency, and throughput over months.
Architecture for an Accurate Monitoring Node
Accuracy requires a hardwired connection. If you run tests over Wi-Fi, you’re measuring local interference, not your internet. I host my instance on a dedicated server connected via Cat6 Ethernet directly to the primary router.
This setup is incredibly stable. In my experience, the container remains lightweight, idling at less than 200MB of RAM. CPU usage only spikes during the brief 30-second test window, making it perfect for low-power hardware.
Hands-on: Deployment with Docker Compose
The most reliable way to get this running is through Docker Compose. I use the LinuxServer.io image because it’s frequently updated and handles the Speedtest CLI EULA automatically.
1. Prepare the Directory
mkdir -p ~/homelab/speedtest
cd ~/homelab/speedtest
touch docker-compose.yml
2. Configure the Stack
This configuration uses SQLite. It is efficient and more than capable of handling years of historical data without slowing down.
services:
speedtest-tracker:
container_name: speedtest-tracker
image: lscr.io/linuxserver/speedtest-tracker:latest
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Ho_Chi_Minh
- SPEEDTEST_SCHEDULE=0 * * * * # Runs every hour
- SPEEDTEST_SERVERS= # Leave blank for auto-select
- DISPLAY_TIMEZONE=Asia/Ho_Chi_Minh
volumes:
- ./config:/config
ports:
- 8080:80
restart: unless-stopped
3. Launching the Service
Run this command to pull the image and start the container:
docker compose up -d
Access the dashboard at http://your-server-ip:8080. Use [email protected] and password to log in, but change these credentials immediately.
Optimization Tips After 6 Months
Speed tests consume significant bandwidth. If you have a 1Gbps line, running a test every 5 minutes might cause lag for other users or annoy your ISP. I found that a 1-hour interval (0 * * * *) offers the best balance between detailed data and network performance.
Telegram Notifications
Setting up Telegram integration was a game-changer. I configured the app to alert me if download speeds dropped below 400Mbps or if a test failed entirely. This allowed me to reboot my modem remotely before my family even noticed the slowdown.
Data Integrity
After six months, my SQLite database was only about 45MB. While lightweight, I strongly recommend mapping the /config volume to a persistent host location. If you migrate your HomeLab to new hardware, just move that folder to keep your entire history intact.
What the Data Revealed
The trends were eye-opening. I noticed a repeatable 15% drop in speed and a ping jump from 12ms to 55ms every Friday night at 7 PM. This confirmed a congestion issue at the local cabinet, not my router. When I eventually upgraded my plan, I used the exported CSV logs to prove the line was underperforming during peak hours. This data helped me negotiate a better rate for the next fiber tier.
The container’s reliability is impressive. Aside from automated updates via Watchtower, I haven’t touched the service since day one. It silently collects the evidence I need to ensure I’m getting the service I pay for.
The Verdict
Monitoring your internet shouldn’t be a manual chore. By deploying Speedtest Tracker, you turn a vague feeling of “the internet is slow” into a professional-grade metric dashboard. Whether you’re troubleshooting a flakey ISP or just curious about network performance, this tool is an essential HomeLab addition. It provides peace of mind and, more importantly, the facts to back up your claims when things go wrong.

