GoDoxy

A lightweight, simple, and performant reverse proxy with WebUI.
For full documentation, check out Wiki
EN | δΈζ
Currently working on feat/godoxy-agent.
For contribution, please fork this instead of default branch.
Table of content
Key Features
- Easy to use
- Effortless configuration
- Simple multi-node setup with GoDoxy agents
- Error messages is clear and detailed, easy troubleshooting
- Auto SSL with Let's Encrypt and DNS-01 (See Supported DNS-01 Challenge Providers)
- Auto hot-reload on container state / config file changes
- Create routes dynamically from running docker containers
- idlesleeper: stop containers on idle, wake it up on traffic (optional, see screenshots)
- HTTP reserve proxy and TCP/UDP port forwarding
- OpenID Connect integration
- HTTP middleware and Custom error pages support
- Web UI with App dashboard, config editor, uptime monitor, system monitor, docker logs viewer (available on nightly builds)
- Supports linux/amd64, linux/arm64
- Written in Go
πΌBack to top
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)
GoDoxy uses the label proxy.aliases
as the subdomain(s), if unset it defaults to container_name
.
For example, with the label proxy.aliases: qbt
you can access your app via qbt.domain.com
.
Setup
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
.
-
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)"
-
Start the container docker compose up -d
and wait for it to be ready
-
You may now do some extra configuration on WebUI https://godoxy.yourdomain.com
πΌBack to top
Screenshots
idlesleeper

Metrics and Logs
In development, available on nightly builds.





Uptime Monitor |
Docker Logs |
Server Overview |
System Monitor |
Graphs |
πΌBack to top
Manual Setup
-
Make config
directory then grab config.example.yml
into config/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
into compose.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
πΌBack to top