Do you keep tabs on how much your network speed varies day to day? What about hour by hour? With this simple Docker container, you can not only automatically monitor your network performance, but also view it in a gorgeous graph with the click of a button.
Why I Track My Internet Performance
I pay AT&T for Gigabit fiber at my house, which means I should be getting around 940Mb/s for both upload and download speeds. If I’m getting significantly lower than that for an extended period of time, that means there’s a problem that needs to be fixed.
Because I rely on my internet service (and pay for good service) for many parts of my life, the quality of my internet speed is very important to me. This is why I track my internet performance using software, so I can constantly monitor what my network looks like.

Related
How Do Internet Speed Tests Work? (and How Accurate Are They?)
The quickest way to check if you’re getting the speeds you pay for.
Many internet service providers have a minimum quality of service where they will typically issue partial refunds if your service is below a set threshold for a certain length of time. While AT&T isn’t one of these ISPs (at least, for their fiber plans), this is still well worth monitoring because your results can still vary agent to agent.
However, if there’s no log of what your speed typically is and what it is now, then you don’t have much of an argument to make for a partial refund of service. That’s where an always-running scheduled network monitor comes in.
Monitoring my network can also help diagnose if I have runaway software that’s chewing up bandwidth where it shouldn’t. Sometimes I might find software that’s downloading or uploading a crazy amount of data when it shouldn’t.
While this doesn’t happen often, I’d never see the discrepancies if I didn’t have some form of network tracking.
Running Manual Speed Tests Is Time-Consuming
In the past, I would randomly run network tests to see if there was a problem with my network. This is fine, and perfectly okay to do for snapshots of your network. However, this isn’t a long-term effective way to track things.
Sure, you can run a speed test and write it down on paper, in Excel, or in your notes app. This isn’t efficient, though, and it’s definitely not predictable.
Don’t get me wrong, I still run speed tests on my network at random to see what the network speed is if I’m trying to download a file, and it feels like things are running slow. That’s not how I track things, though. I only use those types of speed tests as an immediate snapshot of how my network is performing at that specific moment in time.
Speedtest-Tracker Is the Solution
Monitoring your network speed doesn’t necessarily require a computer science degree. I use the Speedtest-Tracker Docker container to monitor my network, and I couldn’t be happier with it.
The software can be fully automated with a cron job that’s built into the Docker itself, and it handles all the logging. When a test is run, the software logs download and upload speed, ping, jitter, and latency.
It plots all of these elements over the course of 24 hours, one week, or one month depending on what you have the filter set to. All the graphics are very easy to read, and there’s even an average displayed for each field so you know what your network is typically without having to calculate the highs and lows.

Related
Docker for Beginners: Everything You Need to Know
Learn to use this incredibly popular development tool.
Installing Speedtest-Tracker is as straightforward as any Docker container. I chose to spin mine up in Portainer, but there are official Speedtest-Tracker nstructions for Docker Compose, Docker Run, Kubernetes, QNAP, Synology, and Unraid installations.
You can choose to hook Speedtest-Tracker into an existing MySQL or MariaDB database, but I opted for the built-in SQLite database because that’s easier for me to set up.

Related
What is a Cron Job, and How Do You Use Them?
The cron utility is used for running scripts and commands at regular intervals, and at specific times and dates.
One function that will be the same across all installation methods, however, is the cron timer. I have mine set for 0 * * * *, which means that it runs every hour. You could also use 0 */6 * * * to have it run every six hours if you don’t want to use as much data to run the speed tests every day.
You can use one of those timers, or designate your own. I use the Crontab Guru website when designing my cron schedules, as it has a simple interface as well as a frequently used example timer page so I can pick exactly what schedule I want my software to run on.
Speedtest-Tracker also goes well behind a reverse proxy, if you want to be able to access it outside your network. There’s even a public dashboard if you want to publish your internet speeds to the world.
If you’re not already monitoring your internet speeds, I highly recommend you start. It’s easy to do, gives you more information about your local network, and can help you diagnose potential network issues before they become bigger problems.