-
Notifications
You must be signed in to change notification settings - Fork 39
Open
Description
Hi all,
I'm having success on all platforms but iOS and iPad OS when using Wi-Fi π and wanted to share my setup / settings. Enjoy!
- When testing with Windows / MacOS / Linux, I get accurate numbers (verified with my networking devices).
- When testing on iOS (iPhone 15 Pro Max) and iPad OS (iPad Pro M4) via either Safari or Edge (both Web Kit-based), I still get wonky upload speeds.
Numbers I'm seeing on Wi-Fi 6E 6ghz:
- Windows: accurate
- iOS (Edge/Safari): inflated upload
- iPad OS (Edge/Safari): inflated upload
Numbers I'm seeing on Wi-Fi 6 5ghz:
- Windows: accurate
- iOS (Edge/Safari): inflated upload
- iPad OS (Edge/Safari): inflated upload
- macOS (Edge/Safari): accurate
- Debian Bookworm (Firefox ESR 115.4): accurate
- openSUSE Tumbleweed (Firefox 128.0.3): accurate
- ubuntu 24.04 (Firefox 129.0.1): accurate
My Setup:
- Docker host running ubuntu 24.04 cloud image
- Docker host is connected via 100g switch
- Wi-Fi 6E APs are connected via 2.5Gb to a 10Gb switch
- Wi-Fi clients and servers are on separate VLANs but I have Layer-3 routing so the only bottlenecks are my dreams π
- Portainer-based management for stacks (Docker Compose with bells and whistles)
- Centralized Nginx proxy stack for all my workloads
- Dedicated OpenSpeedTest stack
Docker Compose: Nginx
version: '3.8'
networks:
apps-general:
external: true
paperless-ngx:
external: true
services:
nginx:
image: nginx:latest
container_name: nginx
restart: unless-stopped
ports:
- '80:80'
volumes:
- /home/ubuntu/nginx-configs/apps.conf:/etc/nginx/conf.d/apps.conf
networks:
- apps-generalDocker Compose: OpenSpeedTest
version: '3.3'
services:
speedtest:
image: openspeedtest/latest
restart: unless-stopped
container_name: openspeedtest
networks:
- apps-general
networks:
apps-general:
external: trueOpenSpeedTest Portion of apps.conf
Partially sourced from this configuration:
server {
listen 80;
server_name speed.apps.home.domain.com;
location / {
# Proxy pass directive to route requests to the OpenSpeedTest container
proxy_pass http://openspeedtest:3000/;
proxy_http_version 1.1; # Ensure HTTP/1.1 is used for this location
# Standard headers for proxying
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# Additional headers to ensure correct handling
add_header 'Access-Control-Allow-Origin' "*" always;
add_header 'Access-Control-Allow-Headers' 'Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Mx-ReqToken,X-Requested-With' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always;
add_header Cache-Control 'no-store, no-cache, max-age=0, no-transform';
add_header Last-Modified $date_gmt;
if_modified_since off;
expires off;
etag off;
# Handle OPTIONS requests
if ($request_method = OPTIONS ) {
add_header 'Access-Control-Allow-Credentials' "true";
add_header 'Access-Control-Allow-Headers' 'Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Mx-ReqToken,X-Requested-With' always;
add_header 'Access-Control-Allow-Origin' "$http_origin" always;
add_header 'Access-Control-Allow-Methods' "GET, POST, OPTIONS" always;
return 200;
}
}
}Metadata
Metadata
Assignees
Labels
No labels