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 ewanted to find some 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: By measuring internet speed locally, you can evaluate the actual speed of your internet connection. It allows you to determine if you are receiving the expected bandwidth from your Internet Service Provider (ISP).

    • This information can help you troubleshoot any performance issues you may be experiencing and make informed decisions about your internet service.
  • Network Optimization: Local internet speed measurements can assist in optimizing your network setup. By understanding the actual speed of your connection, you can identify potential bottlenecks, weak points, or areas for improvement in your network infrastructure.

    • This can guide you in optimizing your router settings, upgrading your hardware if necessary, or adjusting network configurations to enhance overall performance.
  • Troubleshooting Network Issues: When experiencing network performance problems, measuring internet speed locally can serve as a diagnostic tool. It helps determine if the issue lies with your internet connection or if it is related to other factors such as a specific website, server, or application.

    • By ruling out the connection speed as a potential cause, you can focus your troubleshooting efforts in the right direction, saving time and effort.

Docker Containers to Measure Home Internet Speed

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.

Still, I would recommend to self-hosted 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 Docker container 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.

This service is performing tests regularly to your home connection and will provide graphs on:

  • Download/Upload Speed
  • Ping
  • Jitter

You can have a look to the speedtest-tracker project on alexjustesen Github account.

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, which we also self-host with Docker as I explained here.

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 Deploy Nginx Proxy Manager

If you are interested in deploying a separated NGINX instance with Docker, I already created a guide for that here.

This will give you the possibility to run these monitoring services with https locally.

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