You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
External WAN speed test: proper data model, Settings-driven deploy (#536) (#537)
* External WAN speed test: proper data model, Settings-driven deploy, interactive script
- New ExternalSpeedTestServers table with auto-generated ServerId slug
- Migration from key-value SystemSettings to proper table
- Settings page shows deploy command with pre-filled URL and ServerId
- Deploy script: non-interactive (from Settings), interactive (guided), --update
- ServerId ties deployed container to server record and speed test results
- Updated DEPLOYMENT.md with Settings-first workflow
* Fix deploy command: omit port (default 3005), add HTTPS reverse proxy guidance
* Deploy command: include port only for HTTP with non-default port
* Remove VPS-specific wording from deploy command instructions
* Fix deploy script: download all CSS files and PWA icons
* Deploy script: download all OpenSpeedTest assets (fonts, icons, CSS)
Consolidated file downloads into shared function used by both fresh
install and --update. Added missing fonts, app.css, darkmode.css,
PWA icons, and SVG images that index.html references.
* Deploy script: use GitHub tarball instead of individual file downloads
Downloads the repo tarball and extracts only src/OpenSpeedTest/ and
docker/openspeedtest/. No file list to maintain - any new assets are
automatically included.
* Fix tar extract: add --wildcards flag for GNU tar on Linux
* Fix tar compatibility: detect GNU vs BSD tar for --wildcards flag
* Update HTTPS messaging: strongly recommended, not required (Firefox works without)
* Accurate HTTPS messaging: Chrome/Edge enforce PNA, Firefox/Safari don't; link to NetworkOptimizer-Proxy
* Fix script: Optimizer URL prompt doesn't need HTTPS warning
* Fix deploy script: Safari doesn't enforce PNA, only Chrome/Edge do
* Review cleanup: remove dead BASE_URL variable, fix "most browsers" to "Chrome and Edge"
* Deploy command uses saved settings, not live form values
* Increase card spacing on Settings and Audit pages to match Dashboard
* Card spacing: 1.5rem desktop, 1rem mobile for Settings and Audit
Copy file name to clipboardExpand all lines: docker/DEPLOYMENT.md
+14-38Lines changed: 14 additions & 38 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1083,11 +1083,20 @@ Deploy an OpenSpeedTest instance to a remote server (VPS, cloud VM, etc.) to let
1083
1083
**Requirements:**
1084
1084
- A remote server with Docker (any cloud VPS works)
1085
1085
- Port 3005 (or your chosen port) open on the remote server
1086
-
-**HTTPS on the external server** (required - see note below)
1086
+
-**HTTPS on the external server** (strongly recommended - see note below)
1087
1087
1088
-
**Why HTTPS?**Modern browsers enforce [Private Network Access](https://developer.chrome.com/blog/private-network-access-update) rules. The speed test page is served from a public IP, but the browser (on your LAN) posts results back to Network Optimizer (a private IP). Browsers block this unless the page origin is HTTPS (a secure context).
1088
+
**Why HTTPS?**Chrome and Edge enforce [Private Network Access](https://developer.chrome.com/blog/private-network-access-update) rules. The speed test page is served from a public IP, and the browser posts results back to Network Optimizer on your LAN (a private IP). These browsers block this unless the page origin is HTTPS (a secure context). Firefox and Safari do not currently enforce this restriction, but HTTPS is still strongly recommended.
1089
1089
1090
-
**Quick deploy** (run on the remote server - the script will walk you through the setup):
1090
+
**Setup:**
1091
+
1092
+
1. In Network Optimizer, go to **Settings → External Speed Test Server**
1093
+
2. Enter the server name, hostname/IP, port, and scheme (HTTPS)
1094
+
3. Save - a **deploy command** will appear with everything pre-filled
1095
+
4. SSH to your remote server and run the deploy command
1096
+
1097
+
The deploy command handles downloading files, building the container, and starting the server. The Server ID is automatically generated from the name you entered and links results back to this server.
1098
+
1099
+
**Interactive deploy** (if you haven't configured Settings yet, the script will walk you through it):
2. Enter the remote server's hostname, port, and scheme (HTTPS)
1129
-
3. Give it a friendly name (e.g., "Chicago VPS")
1130
-
4. Save - this enables CORS for the remote server and populates the Client WAN Speed Test page
1131
-
1132
-
**Setting up HTTPS:** If you already have a reverse proxy for Network Optimizer and its LAN speed test server (e.g., Traefik or Caddy), you can add a route for the external speed test hostname pointing to your VPS - no need to install a separate proxy on the remote server. The reverse proxy must force HTTP/1.1 for accurate speed test results (HTTP/2 multiplexing interferes with throughput measurement).
1109
+
**Setting up HTTPS:** If you use [NetworkOptimizer-Proxy](https://github.com/Ozark-Connect/NetworkOptimizer-Proxy) (Traefik), the WAN speed test route is already included in `config.example.yml` - just uncomment the `speedtest-wan` router and service, update the hostname and VPS address, and you're done. The config enforces HTTP/1.1 and strips compression headers automatically.
1133
1110
1134
-
-**Traefik** - supports per-route HTTP/1.1 TLS options. Add a route like `speedtest-wan.example.com` pointing to your VPS on port 3005 with the same HTTP/1.1 config used for your LAN speed test.
1135
-
-**Caddy** - automatic Let's Encrypt, simple configuration. Note: Caddy negotiates HTTP/2 by default at the TLS level. For the most accurate speed test results, configure it to use HTTP/1.1 for the speed test hostname.
1111
+
If you use a different reverse proxy, add a route for the external speed test hostname pointing to your remote server on port 3005. The reverse proxy must force HTTP/1.1 for accurate speed test results (HTTP/2 multiplexing interferes with throughput measurement).
1136
1112
1137
1113
Then update the external server settings in Network Optimizer to use `https` scheme and port `443`.
0 commit comments