Easy to use reverse proxy with docker integration
Find a file
2025-04-26 03:30:22 +08:00
.github fix: update permissions in agent-binary workflow to allow write access for contents 2025-03-29 09:36:56 +08:00
.trunk misc: update gitignore and trunk, remove next-release.md 2025-03-28 03:28:17 +08:00
.vscode update default repo to main 2025-02-23 13:31:27 +08:00
agent feat(acl): connection level ip/geo blocking 2025-04-25 10:47:52 +08:00
cmd chore: completely drop prometheus support 2025-04-24 20:02:07 +08:00
examples n8n compose example 2024-12-11 07:21:04 +08:00
internal refactor: change OIDCScopes to GetCommaSepEnv 2025-04-26 03:30:22 +08:00
pkg refactor: improved init flow in main 2025-03-28 07:38:12 +08:00
schemas merge: main branch 2025-04-24 15:02:31 +08:00
screenshots update webui screenshot 2025-02-25 06:06:06 +08:00
scripts fix: improve install-agent.sh script with better error handling, support for arm64 architecture 2025-03-29 16:26:08 +08:00
.env.example feat(oidc): support token refreshing via offline_access scope 2025-04-23 17:50:22 +08:00
.gitignore chore: add rule files and debug dir to .gitignore 2025-04-22 03:19:05 +08:00
.gitlab-ci.yml added package version api, dependencies upgrade 2024-10-06 09:23:41 +08:00
.golangci.yml Feat/fileserver (#60) 2025-02-06 18:23:10 +08:00
compose.example.yml examples: add GODOXY_FRONTEND_PORT environment variable 2025-03-28 03:21:34 +08:00
config.example.yml docs: update README and config example for v0.11.0 2025-04-25 14:24:28 +08:00
Dockerfile chore: upgrade go to 1.24.2 and dependencies 2025-04-22 03:21:42 +08:00
go.mod deps: remove problematic sonic json library 2025-04-25 19:09:27 +08:00
go.sum deps: remove problematic sonic json library 2025-04-25 19:09:27 +08:00
LICENSE added license 2024-04-01 04:08:48 +00:00
Makefile merge: main branch 2025-04-24 15:02:31 +08:00
providers.example.yml readme updates, docs moved to wiki 2024-10-04 11:27:11 +08:00
README.md docs: update demo url 2025-04-26 00:45:17 +08:00
README_CHT.md docs: update demo url 2025-04-26 00:45:17 +08:00

GoDoxy

Quality Gate Status GitHub last commit Lines of Code Demo Discord

A lightweight, simple, and performant reverse proxy with WebUI.

For full documentation, check out Wiki

EN | 中文

Table of content

Running demo

https://demo.godoxy.dev

Deployed on Zeabur

Key Features

  • Simple
  • ACL: connection / request level access control
    • IP/CIDR
    • Country (Maxmind account required)
    • Timezone (Maxmind account required)
    • Access logging
  • 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
  • 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
  • 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 host network mode, do not change it.

To change listening ports, modify .env.

  1. Prepare a new directory for docker compose and config files.

  2. 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)"
    
  3. You may now do some extra configuration on WebUI https://godoxy.yourdomain.com

How does GoDoxy work

  1. List all the containers
  2. Read container name, labels and port configurations for each of them
  3. Create a route if applicable (a route is like a "Virtual Host" in NPM)
  4. Watch for container / config changes and update automatically

Note

GoDoxy uses the label proxy.aliases as the subdomain(s), if unset it defaults to the container_name field in docker compose.

For example, with the label proxy.aliases: qbt you can access your app via qbt.domain.com.

Screenshots

idlesleeper

idlesleeper

Metrics and Logs

Uptime Monitor Docker Logs Server Overview
Uptime Monitor Docker Logs Server Overview
System Monitor Graphs
System Monitor Graphs

Manual Setup

  1. 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

  2. Grab .env.example into .env

    wget https://raw.githubusercontent.com/yusing/godoxy/main/.env.example -O .env

  3. 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

  1. Clone the repository git clone https://github.com/yusing/godoxy --depth=1

  2. Install / Upgrade go (>=1.22) and make if not already

  3. Clear cache if you have built this before (go < 1.22) with go clean -cache

  4. get dependencies with make get

  5. build binary with make build

🔼Back to top