go-proxy First release v0.1
Overview
go-proxy is a simple auto docker reverse proxy designed for home use. It is written in Go and offers features for subdomain and path matching, HTTP and TCP/UDP proxy, HTTP round-robin load balancing support, and auto hot-reload functionality. Additionally, it provides a simple panel for monitoring reverse proxies and their health.
Features
- Subdomain matching (domain name doesn't matter)
- Path matching
- HTTP proxy
- TCP/UDP Proxy
- HTTP round-robin load balance support
- Auto hot-reload when container starts, dies, or stops
- Simple panel to monitor reverse proxies and health
Why go-proxy?
The creation of go-proxy was driven by the following reasons:
- It's fun.
- Unsatisfactory experiences with other reverse proxy services such as
nginx proxy manager
,traefik
, andnginx-proxy
.
How to Use
- Clone the repo:
git clone https://github.com/yusing/go-proxy
- Create your own
compose.yml
by copying content fromcompose.example.yml
- Ensure it is in the same network with other containers or make sure
proxy.<alias>.host
is reachable - Modify the path to your SSL certs. See Getting SSL Certs
- Start
go-proxy
withdocker compose up -d
ormake up
- (Optional) If you are using ufw with VPN that drops all inbound traffic except VPN, allow docker containers to connect to
go-proxy
- Start your docker app and visit
<container_name>.y.z
- Check the logs with
docker compose logs
ormake logs
to see if there are any errors. Check the panel at [panel port] for active proxies
Known Issues
None
Configuration
With container name, no label needs to be added. However, there are some labels you can manipulate with:
proxy.aliases
: comma-separated aliases for subdomain matchingproxy.<alias>.scheme
: container port protocol (http
orhttps
)proxy.<alias>.host
: proxy hostproxy.<alias>.port
: proxy portproxy.<alias>.path
: path matching (for http proxy only)proxy.<alias>.path_mode
: mode for path handlingproxy.<alias>.load_balance
: enable load balance
Screenshots
For more details, refer to the documentation.