mirror of
https://github.com/yusing/godoxy.git
synced 2026-02-26 02:35:19 +01:00
85fb6375515efc38438eeddf773b83cd40cf831b
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:
-
Setup
go-proxySee here -
Configure
go-proxy- with text editor (i.e. Visual Studio Code)
- or with web config editor via
http://gp.y.z
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)
Releases
10
Languages
Go
95%
Shell
1.4%
HTML
0.9%
TypeScript
0.8%
CSS
0.7%
Other
1.2%