mirror of
https://github.com/yusing/godoxy.git
synced 2026-02-09 09:08:33 -06:00
93359110a2cb9997f4cb76313ce32095df87abf0
go-proxy
A lightweight, easy-to-use, and efficient reverse proxy and load balancer with a web UI.
Table of content
Key Points
- Easy to use
- Auto certificate obtaining and renewal (See Supported DNS Challenge Providers)
- Auto configuration for docker contaienrs
- Auto hot-reload on container state / config file changes
- Support HTTP(s), TCP and UDP
- Support HTTP(s) round robin load balancing
- Web UI for configuration and monitoring (See screenshots)
- Written in Go
Getting Started
-
Setup DNS Records
- A Record:
*.y.z->10.0.10.1 - AAAA Record:
*.y.z->::ffff:a00:a01
- A Record:
-
Start
go-proxy -
Configure
go-proxy- with text editor (i.e. Visual Studio Code)
- or with web config editor via
http://ip:8080
Commands
go-proxystart proxy servergo-proxy validatevalidate config and exitgo-proxy reloadtrigger a force reload of config
For docker containers, run docker exec -it go-proxy /app/go-proxy <command>
Environment variables
Booleans:
GOPROXY_DEBUGenable debug behaviorsGOPROXY_NO_SCHEMA_VALIDATION: disable schema validation (useful for testing new DNS Challenge providers)
Use JSON Schema in VSCode
Copy .vscode/settings.example.json to .vscode/settings.json and modify it to fit your needs
Config File
See config.example.yml for more
# autocert configuration
autocert:
email: # ACME Email
domains: # a list of domains for cert registration
provider: # DNS Challenge provider
options: # provider specific options
- ...
# reverse proxy providers configuration
providers:
entry_1:
kind: docker
value: # `FROM_ENV` or full url to docker host
entry_2:
kind: file
value: # relative path of file to `config/`
Provider File
Fields are same as docker labels starting from scheme
See providers.example.yml for examples
Known issues
- Cert "renewal" is actually obtaining a new cert instead of renewing the existing one
Build it yourself
-
Install / Upgrade go (>=1.22) and
makeif not already -
Clear cache if you have built this before (go < 1.22) with
go clean -cache -
get dependencies with
make get -
build binary with
make build -
start your container with
make up(docker) orbin/go-proxy(binary)
Languages
Go
94.8%
Shell
1.4%
HTML
1%
TypeScript
0.8%
CSS
0.8%
Other
1.2%