A lightweight, simple, and performant reverse proxy with WebUI.
For full documentation, check out Wiki
EN | 中文
Currently working on feat/godoxy-agent.
Fork this instead of default branch.
![](https://private-user-images.githubusercontent.com/23052124/406115024-4bb371f4-6e4c-425c-89b2-b9e962bdd46f.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk0NTE2MzYsIm5iZiI6MTczOTQ1MTMzNiwicGF0aCI6Ii8yMzA1MjEyNC80MDYxMTUwMjQtNGJiMzcxZjQtNmU0Yy00MjVjLTg5YjItYjllOTYyYmRkNDZmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEzVDEyNTUzNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTU3YjRlNzZlZjdmM2M2NDVhNDZmYWI0OTgyYWMzZGU5YTgyOTliYzM5OTUzMjliMmQzYTk5MmQwMmNhNTcxNjYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.l5C8-u8iGbQ_dpglfmFNM_GCTZQo7cgt-iZ9CQ3vxcA)
- Easy to use
- Effortless configuration
- Simple multi-node setup
- Error messages is clear and detailed, easy troubleshooting
- Auto SSL cert management (See Supported DNS-01 Challenge Providers)
- Auto configuration for docker containers
- Auto hot-reload on container state / config file changes
- idlesleeper: stop containers on idle, wake it up on traffic (optional, see screenshots)
- HTTP(s) reserve proxy
- OpenID Connect support
- HTTP middleware support
- Custom error pages support
- TCP and UDP port forwarding
- Web UI with App dashboard and config editor
- Supports linux/amd64, linux/arm64
- Written in Go
Setup DNS Records point to machine which runs GoDoxy
, e.g.
- A Record:
*.y.z
->10.0.10.1
- AAAA Record:
*.y.z
->::ffff:a00:a01
NOTE: GoDoxy is designed to be (and only works when) running in host
network mode, do not change it. To change listening ports, modify .env
.
-
Pull the latest docker images
docker pull ghcr.io/yusing/go-proxy:latest
-
Create new directory,
cd
into it, then run setup, or set up manuallydocker run --rm -v .:/setup ghcr.io/yusing/go-proxy /app/godoxy setup
-
(Optional) setup
docker-socket-proxy
other docker nodes (see Multi docker nodes setup) then add them insideconfig.yml
-
Start the container
docker compose up -d
-
You may now do some extra configuration on WebUI
https://godoxy.domain.com
-
Make
config
directory then grabconfig.example.yml
intoconfig/config.yml
mkdir -p config && wget https://raw.githubusercontent.com/yusing/go-proxy/v0.9/config.example.yml -O config/config.yml
-
Grab
.env.example
into.env
wget https://raw.githubusercontent.com/yusing/go-proxy/v0.9/.env.example -O .env
-
Grab
compose.example.yml
intocompose.yml
wget https://raw.githubusercontent.com/yusing/go-proxy/v0.9/compose.example.yml -O compose.yml
├── certs
│ ├── cert.crt
│ └── priv.key
├── compose.yml
├── config
│ ├── config.yml
│ ├── middlewares
│ │ ├── middleware1.yml
│ │ ├── middleware2.yml
│ ├── provider1.yml
│ └── provider2.yml
└── .env
-
Clone the repository
git clone https://github.com/yusing/go-proxy --depth=1
-
Install / Upgrade go (>=1.22) and
make
if 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