Minimalist L4 load balancer that discovers its own backends from Docker, Consul, SRV, and more
- Stars2k
- Forks220
- Open Issues102
Other
- Go
- Makefile
- Shell

About gobetween
gobetween stays at Layer 4, balancing raw TCP, TLS, and UDP rather than parsing HTTP. That keeps it fast and protocol-agnostic, and it pairs the proxy with TLS termination, TLS pass-through, and ACME certificates so encrypted traffic works without a separate front end.
What sets it apart is that the backend list does not have to be static. Discovery plugins pull live targets from Docker, Consul, LXD, SRV records, plaintext or JSON endpoints, or an exec script, so the pool tracks your infrastructure as it changes. Configuration comes from TOML or JSON files, a URL, or Consul KV, and a management REST API exposes current config, server lists, stats, and metrics at runtime.
Written in Go, gobetween ships as a single binary with a snap install option and is in maintenance mode while still accepting pull requests. Self-host on any platform. MIT licensed.
Key features
- L4 balancing for TCP, TLS, and UDP traffic
- TLS termination, TLS pass-through, and ACME certificates
- Backend discovery from Docker, Consul, LXD, SRV, and exec
- Management REST API for config, servers, stats, and metrics
- PROXY protocol support and per-protocol health checks
Details
- First released
- 2016
- Platforms
- CLI
- Deployment
- Self-hostable
- Language
- Go
- Layer
- L4 (TCP · TLS · UDP)
- License
- MIT
