The icon fetching logic now checks if the target service is healthy before attempting to fetch icons. If the health monitor reports an unhealthy status, the function returns HTTP 503 Service Unavailable instead of proceeding. Additionally, the icon cache lookup now includes infinite retry logic with a 15-second backoff interval, improving resilience during transient service outages. Previously, failed lookups would not be retried. The `route` interface was extended with a `HealthMonitor()` method to support the health check functionality.
Table of content
- Table of content
- Running demo
- Key Features
- Prerequisites
- Setup
- How does GoDoxy work
- Update / Uninstall system agent
- Screenshots
- Manual Setup
- Build it yourself
- Star History
Running demo
Key Features
- Simple
- Effortless configuration with simple labels or WebUI
- Simple multi-node setup
- Detailed error messages for easy troubleshooting.
- ACL: connection / request level access control
- IP/CIDR
- Country (Maxmind account required)
- Timezone (Maxmind account required)
- Access logging
- Periodic notification of access summaries for number of allowed and blocked connections
- Advanced Automation
- Automatic SSL certificate management with Let's Encrypt (using DNS-01 Challenge)
- Auto-configuration for Docker containers
- Hot-reloading of configurations and container state changes
- Container Runtime Support
- Docker
- Podman
- Idle-sleep: stop and wake containers based on traffic (see screenshots)
- Docker containers
- Proxmox LXCs
- Traffic Management
- HTTP reserve proxy
- TCP/UDP port forwarding
- OpenID Connect support: SSO and secure your apps easily
- ForwardAuth support: integrate with any auth provider (e.g. TinyAuth)
- Customization
- Web UI
- App Dashboard
- Config Editor
- Uptime and System Metrics
- Docker Logs Viewer
- Cross-Platform support
- Supports linux/amd64 and linux/arm64
- Efficient and Performant
- Written in Go
Prerequisites
Configure Wildcard DNS Record(s) to point to machine running GoDoxy, e.g.
- A Record:
*.domain.com->10.0.10.1 - AAAA Record (if you use IPv6):
*.domain.com->::ffff:a00:a01
Setup
Note
GoDoxy is designed to be running in
hostnetwork 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 docker compose service from generated
compose.yml:docker compose up -d -
You may now do some extra configuration on WebUI
https://godoxy.yourdomain.com
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.aliasesas the subdomain(s), if unset it defaults to thecontainer_namefield in docker compose.For example, with the label
proxy.aliases: qbtyou can access your app viaqbt.domain.com.
Update / Uninstall system agent
Update:
bash -c "$(curl -fsSL https://github.com/yusing/godoxy/raw/refs/heads/main/scripts/install-agent.sh)" -- update
Uninstall:
bash -c "$(curl -fsSL https://github.com/yusing/godoxy/raw/refs/heads/main/scripts/install-agent.sh)" -- uninstall
Screenshots
idlesleeper
Metrics and Logs
Manual Setup
-
Make
configdirectory then grabconfig.example.ymlintoconfig/config.ymlmkdir -p config && wget https://raw.githubusercontent.com/yusing/godoxy/main/config.example.yml -O config/config.yml -
Grab
.env.exampleinto.envwget https://raw.githubusercontent.com/yusing/godoxy/main/.env.example -O .env -
Grab
compose.example.ymlintocompose.ymlwget 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
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




