A professional, self-hosted network validation and telemetry tool designed specifically for testing readiness, throughput, and latency for Azure Virtual Desktop (AVD) and enterprise VDI environments.
Unlike standard speed tests, this tool offers true multi-stream TCP throughput testing, a Global RTT Scanner, intelligent AVD Readiness scoring, and persistent historical logging.
The Estimator uses a Single-Image Architecture orchestrated by Docker Compose.
8080 (or your chosen web port) open on your Network Security Group (NSG) / Firewall.We highly recommend deploying the AVD Estimator using docker-compose to automatically provision the MariaDB database alongside the application.
docker-compose.ymlCreate a new directory and create the compose file:
version: '3.8'
services:
db:
image: mariadb:10.11
restart: always
environment:
MARIADB_ROOT_PASSWORD: rootpassword
MARIADB_DATABASE: avd_metrics
MARIADB_USER: avduser
MARIADB_PASSWORD: avdpass
volumes:
- mariadb_data:/var/lib/mysql
estimator:
image: jahmed22/avd-estimator:latest
restart: always
ports:
- "8080:8080"
environment:
- REGION_NAME=East US Node
- APP_NAME=Enterprise AVD Tester
- BUILT_BY=Your Name
- ADMIN_USER=admin
- ADMIN_PASS=Secure123
- DB_HOST=db
- DB_USER=avduser
- DB_PASSWORD=avdpass
- DB_NAME=avd_metrics
# Add other global nodes here to enable the dropdown and Global RTT Scanner
- SERVER_LIST=[{"name":"India Node","url":"[http://10.10.](http://10.10.)x.x:8080"}]
volumes:
# Maps the CSV logs to your host machine for easy extraction
- /mnt/azure_storage/avd_logs:/app/logs
depends_on:
- db
volumes:
mariadb_data:
Run the following command in the same directory as your docker-compose.yml:
docker compose up -d
The application will initialize and be available at http://<your-server-ip>:8080.
Customize the tool completely without touching the underlying code.
| Variable | Default | Description |
|---|---|---|
REGION_NAME | Default | Displays the datacenter region in the Header (e.g., "India Central"). |
APP_NAME | AVD Speed Estimator | The main title of the application. |
BUILT_BY | Junaid Ahmed | The name displayed in the footer credits. |
ADMIN_USER | admin | Username for the secure /admin dashboard. |
ADMIN_PASS | password123 | Password for the secure /admin dashboard. |
SERVER_LIST | [] | JSON array of other deployed nodes for multi-region testing. Format: [{"name":"UK Node","url":"http://ip:port"}] |
DB_HOST | db | Hostname of the MariaDB container. |
DB_USER | avduser | Database username. |
DB_PASSWORD | avdpass | Database password. |
DB_NAME | avd_metrics | Target database name. |
To access the backend logs and manage user alerts:
http://<your-server-ip>:8080/adminADMIN_USER and ADMIN_PASS variables.To build a global testing network, deploy this container to multiple virtual machines across different Azure/AWS regions.
On each node, populate the SERVER_LIST JSON variable with the URLs of the other nodes.
The UI will automatically:
1. "Bind for 0.0.0.0:8080 failed: port is already allocated"
docker-compose.yml (e.g., "8081:8080").2. I changed the Database Password, but the app can't connect.
docker compose down -v, then bring it back up.3. The UI loads, but clicking "Start" does nothing.
SERVER_LIST includes http:// and the correct port.Designed and developed by Junaid Ahmed.
Content type
Image
Digest
sha256:6c1d6a0c9β¦
Size
57.4 MB
Last updated
4 months ago
docker pull jahmed22/avd-estimator