Kleiner Mess-Endpunkt für den WAN-Failover-Monitor (wanmon). Läuft auf einem
VPS (Coolify) und beantwortet Download-, Upload- und Ping-Probes — auf zwei
Ports parallel, damit der Omada-Gateway per Policy Routing Port A über WAN1
(Kabel) und Port B über WAN2 (Starlink) routet. So misst der Monitor beide
Leitungen getrennt.
| Endpunkt | Auth | Zweck |
|---|---|---|
GET /ping |
– | 204, HTTP-RTT |
GET /down?mb=15 |
Bearer | streamt N MiB (Download-Probe) |
POST /up |
Bearer | nimmt Body an, misst serverseitig (Upload-Probe) |
GET /healthz |
– | Status/Stats (Coolify-Healthcheck + Subdomain) |
Schutz: Token-Pflicht für /down//up, Größen-Caps (MAX_DOWN_MB/MAX_UP_MB),
30 Requests/min und Volumen-Budget (HOURLY_GB) pro Client-IP.
Empfohlen: als Application → Public Repository mit Build Pack Dockerfile.
- Ports Exposes:
8080(dahin routet Traefik die Subdomain →/healthz) - Ports Mappings:
8441:8441,8442:8442(rohe Host-Ports für die Probes, bewusst NICHT durch den Proxy — Policy Routing braucht feste Ports) - Domain:
https://probe.<deine-domain>(DNS-A-Record auf den Server, Let's-Encrypt macht Coolify automatisch) - Env:
PROBE_TOKEN=<langes Secret>setzen!
Per API (Token mit write+deploy unter Security → API Tokens):
curl -H "Authorization: Bearer $COOLIFY_TOKEN" -H "Content-Type: application/json" \
-X POST https://<coolify>/api/v1/applications/public -d '{
"project_uuid": "...", "server_uuid": "...", "environment_name": "production",
"git_repository": "https://github.com/<user>/wan-probe-server",
"git_branch": "main", "build_pack": "dockerfile",
"ports_exposes": "8080", "ports_mappings": "8441:8441,8442:8442",
"domains": "https://probe.example.de", "instant_deploy": true
}'Danach in der Coolify-App noch die Env-Variable PROBE_TOKEN setzen und
redeployen. Firewall des Servers: TCP 8441+8442 öffnen.
curl https://probe.example.de/healthz
curl -o /dev/null -w "%{speed_download} B/s\n" \
-H "Authorization: Bearer $PROBE_TOKEN" "http://probe.example.de:8441/down?mb=5"