Self-host netgoat
0.0.1-alpha.1Go reverse proxy with WAF, routing, and traffic policies
- Stars
- 905
- Ports
- 8080 (HTTP proxy listener (sample binds 127.0.0.1; a non-loopback bind without TLS is refused unless allow_insecure_public_http is set)), 8443 (TLS listener when ssl.enabled is true), 80 (ACME HTTP-01 challenge port (ssl.acme.http_port) when automatic issuance is enabled)
What is netgoat?
NetGoat is an alpha-stage project for self-hosters and homelab users: a Go-based proxy agent that routes inbound web traffic to your services and enforces edge security policy. The repository pitches it as a Cloudflare substitute for local and cloud use, one that can also sit in front of Cloudflare to obtain paid-plan capabilities at no cost. Host and path routing supports exact names, wildcards, regexes, and prefix matching; upstream pools balance round-robin with bounded health checks, and retries stay limited to idempotent methods. Built-in defenses include ordered WAF expression rules, token-bucket request caps, backpressure queues, byte-rate throttles, honeypot handling, and a JavaScript challenge driven by proof of work tied to the terminated TLS session, with Web Bot Auth allowlists able to skip it. The agent terminates TLS from static or streamed certificates and can run ACME issuance against an explicit domain allowlist; it also forwards WebSocket upgrades intact, caches safe public responses, and publishes counters as JSON or Prometheus text. Optional extras: sandboxed JS/TS request rules, compiled-in middleware selected at restart, local machine-learning classifiers, and verification of Cloudflare Access JWTs. Operationally you clone the repository, edit one YAML file, and start it with Go; when the control plane disappears, the agent keeps serving from a snapshot kept on disk. Caveats: the admin dashboard belongs to a separate control-plane component, the website's install guide calls itself a placeholder, the shipped file defines no routes so every host answers 404, and cleartext HTTP on a non-loopback address is blocked at startup.
Should you self-host netgoat?
netgoat scores 44/100 on selfhost.directory (how scoring works) and ranks #20 of 24 in Reverse Proxy. It has 905 GitHub stars.
There was no stable release in the past 12 months, so check the repository's recent activity before you rely on it.
Setup is advanced: plan for several services and some ongoing maintenance. It is AGPL-3.0-licensed and written mostly in Go.
Its closest alternative on selfhost.directory is Traefik (87/100, 65 398 stars). It scores higher overall, so compare the two before you pick. See netgoat vs Traefik side by side.
Features
- Automatic certificate issuance (ACME)
- Cloudflare Access verification
- Domain and path routing
- Dynamic scripting rules
- Load Balancing
- Local Authentication
- Offline Resilience
- Plugin System
- Prometheus Metrics
- Proof-of-work bot challenge
- Rate Limiting
- Response caching
- TLS Termination
- Web Application Firewall
- WebSocket proxying
netgoat README
More in Web Application Firewall
nginx-loveSelf-hosted open-source platform for managing Nginx reverse proxies with ModSecurity WAF, Let's Encrypt SSL, load balancing, JA4 bot detection, and multi-user RBAC.
SafeLineSafeLine is an open-source, self-hosted WAF protecting web apps from SQL injection, XSS, and DDoS via intelligent semantic analysis. Runs as a Docker reverse proxy.
UUSEC WAFUUSEC WAF is a self-hosted, open-source WAF and API gateway using ML and semantic engines for zero-day detection, with HIPS/RASP defense and Lua rule engine.
AnubisWeighs the soul of incoming HTTP requests to stop AI crawlers
BunkerWeb🛡️ Open-source and cloud-native Web Application Firewall (WAF)
CacheGuard-OSSelf-hosted open-source UTM appliance OS turning x86/x64 machines into complete network security gateways with firewall, VPN, WAF, antivirus, and more.
crowdsecSelf-hosted, open-source intrusion detection and web-app firewall that reads your logs, bans abusive IPs, and shares a crowdsourced blocklist across users.


0 comments