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.ymlby copying content fromcompose.example.yml - Ensure it is in the same network with other containers or make sure
proxy.<alias>.hostis reachable - Modify the path to your SSL certs. See Getting SSL Certs
- Start
go-proxywithdocker compose up -dormake 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 logsormake logsto 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 (httporhttps)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.