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)

  1. OpenSpeedTest with Docker: Discover how to set up and use OpenSpeedTest with Docker to accurately measure your internet speed.

  2. 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.

  3. 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.

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

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: admin@example.com / 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