mirror of
https://github.com/yusing/godoxy.git
synced 2026-03-17 23:03:49 +01:00
5be8659a99f841c25f140075cb92c08643cbb377
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:
include:
- providers.yml
- other_file_1.yml
- ...
docker:
local: $DOCKER_HOST
remote-1: tcp://10.0.2.1:2375
remote-2: ssh://root:1234@10.0.2.2
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.1%
Shell
1.3%
HTML
0.9%
TypeScript
0.8%
CSS
0.7%
Other
1.2%