120 lines
4.4 KiB
Markdown
Executable File
120 lines
4.4 KiB
Markdown
Executable File
# **Internal SpeedTest (Megakreasitech™)**
|
|
> A customized, premium self-hosted HTML5 network performance estimation tool. Powered by the open-source engine of OpenSpeedTestcom
|
|
---
|
|
|
|
## 🌟 Overview
|
|
This repository contains a highly customized version of the OpenSpeedTest™ engine. It is designed specifically for **internal network benchmarking** at **Megakreasitech™**, featuring a polished, modern, glassmorphic UI, responsive layout adjustments, and localized behavior.
|
|
|
|
No client-side software, plugins, or flash are required. You can run speed tests from any modern device with a web browser (including smartphones, smart TVs, and desktop PCs).
|
|
|
|
---
|
|
|
|
## ✨ Customizations & Enhancements
|
|
Compared to the default upstream OpenSpeedTest deployment, this repository includes several improvements and customizations:
|
|
|
|
1. **Premium Modern UI (Design System)**:
|
|
- Clean, vibrant, and premium card layouts featuring modern typography (Google Fonts **Outfit** & **Inter**).
|
|
- Glassmorphism effects with soft shadows and tailored HSL colors.
|
|
- Smooth CSS transitions and micro-animations (e.g., hover effects on gauges, buttons, and logos).
|
|
- Support for **Dark Mode** and **Light Mode** out-of-the-box.
|
|
2. **Branding & Localization**:
|
|
- Custom outro display showing **Megakreasitech™** inside the gauge when the test finishes.
|
|
- Localized header, logo, and footer credits.
|
|
3. **Optimized IP Address Display**:
|
|
- The "Your IP Address" section has been repositioned **precisely above the gauge**.
|
|
- It is dynamically responsive: aligned left over the gauge on desktop (landscape) and centered above the gauge on mobile (portrait) with proportional spacing.
|
|
|
|
---
|
|
|
|
## 🚀 Deployment Instructions
|
|
|
|
### 1. Using Nginx (Recommended)
|
|
This application only consists of static HTML, CSS, JS, and SVG files.
|
|
|
|
For maximum performance, we recommend deploying it on a bare-metal Linux server running Nginx with caching disabled for the testing endpoints.
|
|
|
|
**Nginx Configuration Example:**
|
|
```nginx
|
|
server {
|
|
listen 80;
|
|
server_name localhost;
|
|
|
|
root /path/to/Speed-Test-main;
|
|
index index.html;
|
|
|
|
gzip on;
|
|
gzip_types text/css application/javascript image/svg+xml;
|
|
|
|
# Caching disabled for download test endpoint
|
|
location = /downloading {
|
|
access_log off;
|
|
add_header 'Access-Control-Allow-Origin' '*' always;
|
|
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, HEAD' always;
|
|
add_header 'Access-Control-Allow-Headers' 'Content-Type, X-Requested-With' always;
|
|
add_header 'Cache-Control' 'no-store, no-cache, must-revalidate, max-age=0' always;
|
|
try_files /downloading =404;
|
|
}
|
|
|
|
# Fetch client IP endpoint
|
|
location = /getIP {
|
|
access_log off;
|
|
default_type text/plain;
|
|
add_header 'Access-Control-Allow-Origin' '*' always;
|
|
return 200 $remote_addr;
|
|
}
|
|
|
|
# Caching disabled for upload test endpoint
|
|
location = /upload {
|
|
access_log off;
|
|
add_header 'Access-Control-Allow-Origin' '*' always;
|
|
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, HEAD' always;
|
|
add_header 'Access-Control-Allow-Headers' 'Content-Type, X-Requested-With' always;
|
|
client_max_body_size 50m;
|
|
|
|
if ($request_method = POST) {
|
|
return 200;
|
|
}
|
|
if ($request_method = OPTIONS) {
|
|
return 200;
|
|
}
|
|
try_files /upload =200;
|
|
}
|
|
}
|
|
```
|
|
|
|
### 2. Using Docker Compose
|
|
You can spin up this customized application quickly using the provided `docker-compose.yml` file:
|
|
|
|
```yaml
|
|
version: '3.3'
|
|
services:
|
|
speedtest:
|
|
build: .
|
|
restart: unless-stopped
|
|
container_name: mkt_speedtest
|
|
ports:
|
|
- '80:80'
|
|
```
|
|
|
|
To run:
|
|
```bash
|
|
docker-compose up -d
|
|
```
|
|
|
|
---
|
|
|
|
## ⚙️ Advanced URL Parameters
|
|
The underlying engine supports multiple URL configurations. You can combine parameters like so: `http://<ip-address>/?Run&Stress=30`
|
|
|
|
- `?Run` / `?R`: Run the speed test automatically on page load.
|
|
- `?Stress=Low` / `?S=L`: Continuously loop speed test for benchmarking (values: `Low`, `Medium`, `High`, `Extreme`, or custom duration in seconds).
|
|
- `?Test=Download` / `?T=D`: Run only the download test.
|
|
- `?Test=Upload` / `?T=U`: Run only the upload test.
|
|
- `?Test=Ping` / `?T=P`: Run only the ping test.
|
|
- `?XHR=6` / `?X=6`: Set custom number of parallel connections (1 - 32).
|
|
|
|
---
|
|
|
|
## 📜 Credits & Acknowledgments
|
|
This tool is built upon the free and open-source codebase of **OpenSpeedTest**
|