Skip to content

highseen/wan-probe-server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

wan-probe-server

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.

Endpunkte

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.

Deployment auf Coolify

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.

Test

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"

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors