
* feat: idle sleep for proxmox LXCs * refactor: replace deprecated docker api types * chore(api): remove debug task list endpoint * refactor: move servemux to gphttp/servemux; favicon.go to v1/favicon * refactor: introduce Pool interface, move agent_pool to agent module * refactor: simplify api code * feat: introduce debug api * refactor: remove net.URL and net.CIDR types, improved unmarshal handling * chore: update Makefile for debug build tag, update README * chore: add gperr.Unwrap method * feat: relative time and duration formatting * chore: add ROOT_DIR environment variable, refactor * migration: move homepage override and icon cache to $BASE_DIR/data, add migration code * fix: nil dereference on marshalling service health * fix: wait for route deletion * chore: enhance tasks debuggability * feat: stdout access logger and MultiWriter * fix(agent): remove agent properly on verify error * fix(metrics): disk exclusion logic and added corresponding tests * chore: update schema and prettify, fix package.json and Makefile * fix: I/O buffer not being shrunk before putting back to pool * feat: enhanced error handling module * chore: deps upgrade * feat: better value formatting and handling --------- Co-authored-by: yusing <yusing@6uo.me>
6.2 KiB
Executable file
GoDoxy
A lightweight, simple, and performant reverse proxy with WebUI.
For full documentation, check out Wiki
EN | 中文

Table of content
Running demo
Key Features
- Easy to use
- Effortless configuration
- Simple multi-node setup with GoDoxy agents or Docker Socket Proxies
- Error messages is clear and detailed, easy troubleshooting
- Auto SSL with Let's Encrypt (See Supported DNS-01 Challenge Providers)
- Auto hot-reload on container state / config file changes
- Container aware: create routes dynamically from running docker containers
- idlesleeper: stop and wake containers based on traffic (optional, see screenshots)
- HTTP reserve proxy and TCP/UDP port forwarding
- OpenID Connect integration: SSO and secure your apps easily
- HTTP middleware and Custom error pages support
- Web UI with App dashboard, config editor, uptime and system metrics, docker logs viewer
- Supports linux/amd64 and linux/arm64
- Written in Go
Prerequisites
Setup Wildcard DNS Record(s) for machine running GoDoxy
, e.g.
- A Record:
*.domain.com
->10.0.10.1
- AAAA Record (if you use IPv6):
*.domain.com
->::ffff:a00:a01
How does GoDoxy work
- List all the containers
- Read container name, labels and port configurations for each of them
- Create a route if applicable (a route is like a "Virtual Host" in NPM)
- Watch for container / config changes and update automatically
Note
GoDoxy uses the label
proxy.aliases
as the subdomain(s), if unset it defaults to thecontainer_name
field in docker compose.For example, with the label
proxy.aliases: qbt
you can access your app viaqbt.domain.com
.
Setup
Note
GoDoxy is designed to be running in
host
network mode, do not change it.To change listening ports, modify
.env
.
-
Prepare a new directory for docker compose and config files.
-
Run setup script inside the directory, or set up manually
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/yusing/godoxy/main/scripts/setup.sh)"
-
You may now do some extra configuration on WebUI
https://godoxy.yourdomain.com
Screenshots
idlesleeper
Metrics and Logs
![]() |
![]() |
![]() |
Uptime Monitor | Docker Logs | Server Overview |
![]() |
![]() |
|
System Monitor | Graphs |
Manual Setup
-
Make
config
directory then grabconfig.example.yml
intoconfig/config.yml
mkdir -p config && wget https://raw.githubusercontent.com/yusing/godoxy/main/config.example.yml -O config/config.yml
-
Grab
.env.example
into.env
wget https://raw.githubusercontent.com/yusing/godoxy/main/.env.example -O .env
-
Grab
compose.example.yml
intocompose.yml
wget https://raw.githubusercontent.com/yusing/godoxy/main/compose.example.yml -O compose.yml
Folder structrue
├── certs
│ ├── cert.crt
│ └── priv.key
├── compose.yml
├── config
│ ├── config.yml
│ ├── middlewares
│ │ ├── middleware1.yml
│ │ ├── middleware2.yml
│ ├── provider1.yml
│ └── provider2.yml
├── data
│ ├── metrics # metrics data
│ │ ├── uptime.json
│ │ └── system_info.json
└── .env
Build it yourself
-
Clone the repository
git clone https://github.com/yusing/godoxy --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