
You’ve got a Linux Mint 22 machine, a home lab, or a server that needs real network performance data — and third-party tools like Ookla just don’t cut it for internal LAN testing. If you want to install OpenSpeedTest on Linux Mint 22, this guide gives you two clean, production-ready methods: Docker (recommended) and Snap. You’ll have a fully working, browser-accessible speed test server running in under 15 minutes.
OpenSpeedTest is a free, open-source, self-hosted HTML5 speed test that measures download speed, upload speed, ping, and jitter — all without routing a single byte through a third-party server. No Flash, no Java, no external dependency.
This tutorial covers everything from prerequisites to firewall configuration, with a full troubleshooting section and uninstall instructions. Let’s get into it.
Prerequisites Before You Begin
Before touching a single command, confirm these items. Skipping this section is the fastest way to hit a wall mid-installation.
System Requirements:
- Linux Mint 22 (Wilma) installed and booted
- User account with
sudoprivileges - Active internet connection for downloading packages or images
- Minimum 512 MB free RAM (Docker daemon + container needs ~256 MB combined)
- A second device with a browser on the same network for accurate testing
Tools You Need:
aptpackage manager (included by default on Linux Mint 22)docker.ioorsnapddepending on your chosen methodcurlfor verifying container responsesufwfor firewall rules (pre-installed on Linux Mint 22)
A Note on Methods:
- Method 1 (Docker) gives you full configuration control, version pinning, and easy updates. Best for home labs and sysadmins.
- Method 2 (Snap) is faster to set up with fewer moving parts. Best for desktop users who want a quick install.
Step 1: Update Your Linux Mint 22 System
Before installing anything on a Linux system, update your package lists and upgrade installed packages. This single step prevents 80% of “package not found” errors you’ll find on forums.
sudo apt update && sudo apt upgrade -y
What this does: apt update refreshes your local package index from all configured repositories. apt upgrade -y installs all available updates without prompting for confirmation.
Why it matters: Linux Mint 22 ships with package lists that may be days or weeks old depending on when you installed it. Docker’s dependencies pull from these lists. If they’re stale, apt will try to install older, incompatible versions.
Expected output ends with something like:
0 upgraded, 0 newly installed, 0 to remove and 0 not changed.
If you see upgrades applied, reboot your machine before proceeding.
Step 2: Install Docker Engine on Linux Mint 22
Docker is the recommended installation method for OpenSpeedTest because it isolates the application from your system, makes updates trivial, and lets you define exact configuration through environment variables.
Install Docker from the Default Repository
Linux Mint 22 is based on Ubuntu 24.04 Noble Numbat. The docker.io package from the default repository is the safest and most compatible path for this base.
sudo apt install -y docker.io
What this does: Installs Docker Engine from the Ubuntu-compatible package included in Linux Mint’s repositories. It also pulls containerd and runc as dependencies automatically.
Why docker.io and not Docker CE? For most Linux Mint desktop and home lab setups, docker.io works without adding a third-party apt repository. Docker CE from Docker’s own repo is more current but requires additional GPG key configuration that adds unnecessary complexity for this use case.
Enable and Start the Docker Service
sudo systemctl start docker
sudo systemctl enable docker
What systemctl start does: Launches the Docker daemon immediately.
Why systemctl enable: Without this, Docker will not start automatically after a reboot. Your OpenSpeedTest container will be offline every time the machine restarts. This is the most commonly missed step.
Verify Docker Is Running
sudo systemctl status docker
You should see output like:
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled)
Active: active (running)
Add Your User to the Docker Group (Recommended)
sudo usermod -aG docker $USER
newgrp docker
Why this matters: Running every Docker command with sudo is a security anti-pattern. Adding your user to the docker group lets you run containers without privilege escalation. newgrp docker applies the group change without requiring a logout.
Step 3: Set Up the OpenSpeedTest Docker Configuration
With Docker running, create a dedicated directory for your OpenSpeedTest project. This keeps configuration organized and makes future maintenance predictable.
Create a Project Directory
mkdir -p /opt/openspeedtest && cd /opt/openspeedtest
Why /opt? The /opt directory is the Linux Filesystem Hierarchy Standard (FHS) location for optional, self-contained software. Placing your project here separates it from system packages and makes it easy to back up or remove later.
Create the Docker Compose File
nano docker-compose.yml
Paste the following configuration exactly:
services:
openspeedtest:
image: openspeedtest/latest:v2.0.6
container_name: openspeedtest
ports:
- "3000:3000"
- "3001:3001"
environment:
SET_SERVER_NAME: "My Linux Mint Speed Test"
restart: unless-stopped
Save with Ctrl+O, then Enter, then Ctrl+X.
Breaking down the configuration:
image: openspeedtest/latest:v2.0.6— Pins to a specific version. Using:latestwithout a version tag risks silent breaking changes on the next pull.ports: "3000:3000"— Port 3000 serves the HTTP interface. Port 3001 serves HTTPS with a self-signed certificate.SET_SERVER_NAME— Customizes the name displayed in the speed test UI. Useful when running multiple instances across different machines.restart: unless-stopped— Automatically restarts the container after a system reboot or crash, but stops cleanly when you manually rundocker compose down.
Step 4: Launch the OpenSpeedTest Container
With the configuration file in place, start the container in detached mode:
docker compose up -d
What -d does: Runs the container in the background (detached). Without this flag, the container runs in your terminal session and stops the moment you close it or press Ctrl+C.
Verify the Container Is Running
docker compose ps
Expected output:
NAME IMAGE STATUS PORTS
openspeedtest openspeedtest/latest:v2.0.6 Up 2 minutes 0.0.0.0:3000->3000/tcp
Confirm HTTP Response
curl -I http://localhost:3000
Expected output includes HTTP/1.1 200 OK. If you see a connection refused error, check that Docker is running and review container logs:
docker compose logs
Step 5: Configure the Firewall on Linux Mint 22
This is the step most tutorials skip entirely, and it’s exactly why people post “it works on localhost but not from other devices” on forums. Linux Mint 22 uses UFW (Uncomplicated Firewall). If UFW is active, it silently drops all incoming connections to port 3000 from other devices on your network.
sudo ufw allow 3000/tcp
sudo ufw allow 3001/tcp
sudo ufw reload
What each line does:
ufw allow 3000/tcp— Opens port 3000 for incoming TCP connections (HTTP).ufw allow 3001/tcp— Opens port 3001 for HTTPS access.ufw reload— Applies the new rules in memory. Without this step, the old rules stay active even though the config file has changed.
Verify the rules were applied:
sudo ufw status
You should see 3000/tcp and 3001/tcp listed as ALLOW.
Step 6: Access OpenSpeedTest in Your Browser
Find your machine’s local IP address:
hostname -I
This returns your LAN IP address, for example 192.168.1.105.
Open a browser on any device on the same network (not the server itself) and go to:
http://192.168.1.105:3000
Why test from a different device? Running the speed test on the same machine hosting the server creates CPU and memory contention. The server is simultaneously serving the test and running it. Using a phone, laptop, or tablet on the same WiFi or Ethernet gives you clean, accurate results.
Click the Start button. OpenSpeedTest runs a full sequence and returns:
- Download speed — Server to client throughput in Mbps
- Upload speed — Client to server throughput in Mbps
- Ping — Round-trip latency in milliseconds
- Jitter — Latency variance in milliseconds
Method 2: Install OpenSpeedTest via Snap on Linux Mint 22
If you prefer not to use Docker, Snap is a solid alternative. Snap packages are self-contained bundles with all dependencies included, making installation a one-command process once Snap is enabled.
Important: Linux Mint 22 disables Snap by default. You need to re-enable it before installing anything from the Snap Store.
Step 1: Re-enable Snap Support on Linux Mint 22
sudo rm /etc/apt/preferences.d/nosnap.pref
sudo apt update
sudo apt install snapd -y
sudo systemctl enable --now snapd.socket
sudo ln -s /var/lib/snapd/snap /snap
Why remove nosnap.pref? Linux Mint intentionally blocks Snap by placing a preference file that pins snapd to version 0, preventing installation. Removing that file unlocks the package manager to install Snap normally.
Why create the symlink? Classic Snap confinement requires /snap to exist as a system path. Without the symlink, certain Snap packages will fail to launch with a “cannot find core snap” error.
Log out and back in, or reboot before proceeding:
sudo reboot
Step 2: Install OpenSpeedTest via Snap
sudo snap install openspeedtest-server
Why Snap handles this cleanly: The Snap package bundles NGINX and all runtime dependencies inside itself. You don’t need to configure a web server, manage ports manually, or write any configuration files.
Verify the installation:
openspeedtest-server --version
Access the UI the same way as Docker — navigate to http://<your-ip>:3000 from any browser on your network.

Optional Configuration for OpenSpeedTest on Linux Mint 22
Once your server is running, you can tune it for different use cases without rebuilding the container.
Run a stress test by appending a URL parameter:
http://192.168.1.105:3000?Stress=High
This simulates sustained heavy network load, which reveals throttling or thermal bottlenecks that a single-shot test misses.
Auto-run the test on page load:
http://192.168.1.105:3000?run=1
Useful for building quick-access bookmarks or a kiosk-style network dashboard on a wall-mounted screen.
Use host networking for gigabit accuracy by editing your docker-compose.yml:
services:
openspeedtest:
image: openspeedtest/latest:v2.0.6
container_name: openspeedtest
network_mode: host
environment:
SET_SERVER_NAME: "My Linux Mint Speed Test"
restart: unless-stopped
Why network_mode: host? Docker’s default bridge networking adds a NAT layer that can cap throughput on gigabit networks. Switching to host networking removes that overhead and delivers true wire-speed results. Note that when using host mode, you remove the explicit port mappings because the container uses your host’s network stack directly.
Troubleshooting Common Issues
Here are the five most common problems people run into when setting up OpenSpeedTest on Linux Mint 22, along with direct fixes.
| Problem | Likely Cause | Fix |
|---|---|---|
| Speed test shows much lower than expected | WiFi bottleneck or running test on the same machine as the server | Test from a wired device; use a separate client machine |
| “Connection failed” when clicking Start | WebSocket blocked or container not running | Run docker compose ps and check UFW with sudo ufw status |
| HTTPS certificate error on port 3001 | Default self-signed certificate | Use port 3000 via HTTP, or mount a custom cert into the container |
| Snap install blocked on Linux Mint 22 | nosnap.pref file exists |
Run sudo rm /etc/apt/preferences.d/nosnap.pref then retry |
| Docker not starting after reboot | Service not enabled at boot | Run sudo systemctl enable docker and reboot |
If the container crashes unexpectedly, check its logs directly:
docker logs openspeedtest --tail 50
This outputs the last 50 lines of container activity, which almost always points to the root cause.
How To Update and Uninstall OpenSpeedTest
Update OpenSpeedTest (Docker)
cd /opt/openspeedtest
docker compose pull
docker compose up -d
Why pull before up? Running docker compose up -d alone does not fetch new image versions if an older image already exists locally. You must explicitly pull the updated image first, then restart the container.
Uninstall OpenSpeedTest (Docker)
docker rm --force openspeedtest
docker rmi openspeedtest/latest
sudo rm -rf /opt/openspeedtest
Why three steps? Each command cleans a different layer: the running container, the stored image, and the project directory. Skipping any one of these leaves orphaned files or cached images consuming disk space.
Uninstall OpenSpeedTest (Snap)
sudo snap remove openspeedtest-server
Docker vs. Snap: Which Method Should You Use to Configure OpenSpeedTest on Linux Mint 22?
| Factor | Docker | Snap |
|---|---|---|
| Ease of setup | Moderate (requires Docker install) | Simple (one command after Snap enabled) |
| Configuration flexibility | High (env vars, ports, volumes) | Low |
| Auto-restart on reboot | Yes (restart: unless-stopped) |
Yes |
| Resource overhead | Slightly higher (Docker daemon) | Lower |
| Update control | Manual with version pinning | Automatic |
| Best for | Home labs, servers, power users | Desktop users wanting a quick setup |
Congratulations! You have successfully installed OpenSpeedTest. Thanks for using this tutorial for installing OpenSpeedTest Free and open-source HTML5 network performance estimation tool on Linux Mint 22 system. For additional help or useful information, we recommend you check the official OpenSpeedTest website.