Internet Speed Check
We’ve all experienced those frustrating moments when our home internet speed doesn’t quite live up to expectations.
Whether it’s slow webpage loading, buffering videos, or sluggish downloads, these issues can be a major inconvenience.
That’s why I wanted to find some FREE & open-source tools that could help me measure and understand my internet speed better.
In this blog, we’ll explore the importance of speed tests and I will show you how to install a couple the open-source solutions for measuring internet speed at home with Docker, so that they can help you to optimize your internet experience.
Why checking Internet Speed Matters?
-
Performance Evaluation: 📊
- Evaluate the actual speed of your internet connection to ensure you’re receiving the expected bandwidth from your ISP.
- Identify any performance issues and make informed decisions about your internet service.
-
Network Optimization: 🛠️
- Assist in optimizing your network setup by identifying potential bottlenecks or weak points.
- Guide you in adjusting router settings, upgrading hardware, or tweaking configurations for improved performance.
-
Troubleshooting Network Issues: 🔍
- Serve as a diagnostic tool to determine if network problems stem from your internet connection or other factors.
- Focus troubleshooting efforts in the right direction, saving time and effort by ruling out connection speed as a potential cause.
Docker Containers to Measure Home Internet Speed
I like these two ways for measuring internet speed (using Docker)
-
OpenSpeedTest with Docker: Discover how to set up and use OpenSpeedTest with Docker to accurately measure your internet speed.
-
SpeedTest Tracker with Docker: Learn how to deploy and utilize SpeedTest Tracker with Docker for comprehensive tracking and analysis of your internet speed over time.
-
BONUS: If you dont need beautiful user interfaces - you can always do an internet test with any of these command line tricks to test internet speed that only the PROs are using.
Pre-Requisites!! Just Get Docker 🐋👇
You can install it for any PC/mac/Linux at home or in any cloud provider that you wish.
It will just take few moments, this one. If you are in Linux, just
apt-get update && sudo apt-get upgrade && curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
#sudo apt install docker-compose -y
And install also Docker-compose with:
apt install docker-compose -y
And when the process finishes - you can use it to SelfHost other services as well.
You should see the versions with:
docker --version
docker-compose --version
#sudo systemctl status docker #and the status
OpenSpeedTest with Docker
We can use this project directly from their web and you will be able to launch Open Speed Test in any browser.
- The OpenSpeedTest Source Code at Github
- License: MIT ❤️
- Docker OpenSpeedTest Website
SpeedTest by OpenSpeedTest™ is a Free and Open-Source HTML5 Network Performance Estimation Tool Written in Vanilla Javascript and only uses built-in Web APIs like XMLHttpRequest (XHR), HTML, CSS, JS, & SVG. No Third-Party frameworks or libraries are Required.
Still, I would recommend to self-host it as as a good practice and run it in your machine (one connected via ethernet to the Router or in the one that you are experiencing connectivity issues).
The docker-compose looks like this (the optional lines will make it work with NGINX to have SSL certificates):
version: '3'
services:
openspeedtest:
image: openspeedtest/latest
container_name: openspeedtest
ports:
- "6040:3000"
- "6041:3001"
networks: #optional
nginx_nginx_network: #optional
restart: unless-stopped
networks: #optional
nginx_nginx_network: #optional
external: true #optional
SpeedTest Tracker with Docker
Speedtest Tracker is a self-hosted internet performance tracking application that runs speedtest checks against Ookla’s Speedtest service. 🚀
- With the SpeedTest Tracker service running, we will have tests regularly performed to the home connection and it provides graphs on:
- Download/Upload Speed
- Ping
- Jitter
- The Speedtest Tracker Source Code at Github
- License: MIT ❤️
- Documentation: Speedtest Tracker Documentation
For our goal here, this is the docker-compose file that we have to use to have it deployed locally with Docker:
version: '3.3'
services:
speedtest-tracker:
image: ghcr.io/alexjustesen/speedtest-tracker:latest
container_name: speedtest-tracker
ports:
- 6050:80
- 6443:443
networks: ["nginx_nginx_network"] #optional
environment:
- PUID=1000
- PGID=1000
volumes:
- /home/Docker/speedtest:/config
restart: unless-stopped
networks: #optional
nginx_nginx_network: #optional
external: true #optional
Be aware that by default the login is: [email protected] / password and that I encourage you to change that inmediately.
FAQ
How can I check how many devices are connected to my home internet?
For this matter, you can use WatchYourLAN 🛡️
You can also self-host WatchYourLAN with Docker and confirm if there is someone else using your internet bandwitch
Simply use WatchYourLan with Docker! 👇
---
version: "3"
services:
wyl:
image: aceberg/watchyourlan
container_name: watchyourlan
network_mode: "host"
volumes:
- /home/your_user/Docker/watchyourlan/wyl:/data
environment:
TZ: Europe/Paris # required: needs your TZ for correct time
IFACE: "eth0" # required: 1 or more interface, use the command 'ip link conf' and use the second entry
DBPATH: "/data/db.sqlite" # optional, default: /data/db.sqlite
GUIIP: "0.0.0.0" # optional, default: localhost
GUIPORT: "8840" # optional, default: 8840
TIMEOUT: "120" # optional, time in seconds, default: 60
SHOUTRRR_URL: "" # optional, set url to notify
THEME: "darkly" # optional
networks:
nginx_nginx_network:
restart: unless-stopped
networks:
nginx_nginx_network:
external: true
How to have HTTPs for Internet Speed Tests
You just need one thing - deploy Nginx Proxy Manager
If you are interested in deploying a separated NGINX instance with Docker, is very simple.
NGINX will give you the possibility to run these internet monitoring services with https.
How to Test Internet Speed with CLI Tools
How to Explore the traffic on a network interface with nload👇
apt install nload
Now, select the interface and use nload:
ifconfig
nload wlp0s20f3 #also works for docker container interfaces
How to show network speed per interface 👇
sudo apt install cbm
cbm
How to test network speed between 2 devices 👇
Install in both iperf:
sudo apt install iperf
Now, open the port in one of them:
iperf -s
And in paralel execute in the other device:
iperf -c 192.168.3.100 #other device IP
How to perform quick internet speed test with CLI👇
curl -sL https://deb.nodesource.com/setup_15.x | sudo -E bash -
sudo apt install -y nodejs
npm install --global fast-cli
#fast -u