Easy to use reverse proxy with docker integration
Find a file
2025-04-17 06:10:37 +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 fix: version parsing 2025-04-16 15:14:41 +08:00
cmd feat: proxmox idlewatcher (#88) 2025-04-16 14:52:33 +08:00
examples n8n compose example 2024-12-11 07:21:04 +08:00
internal fix: docker clients not caching properly 2025-04-16 15:20:25 +08:00
migrations feat: proxmox idlewatcher (#88) 2025-04-16 14:52:33 +08:00
pkg fix: improve json marshal performance, reduce necessary allocations 2025-04-17 06:10:13 +08:00
schemas feat: proxmox idlewatcher (#88) 2025-04-16 14:52:33 +08:00
screenshots update webui screenshot 2025-02-25 06:06:06 +08:00
scripts feat: enhance setup script with authentication options and DNS provider selection, fix not setting api user correctly 2025-04-11 10:02:00 +08:00
.env.example chore: add GODOXY_API_JWT_SECURE to .env.example 2025-04-11 07:44:40 +08:00
.gitignore feat: proxmox idlewatcher (#88) 2025-04-16 14:52:33 +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 feat: add websocket writer and error handling utilities 2025-03-28 08:14:06 +08:00
Dockerfile chore: add migrations directory to Dockerfile 2025-04-16 12:56:17 +08:00
go.mod feat: custom json marshaling implementation, replace json and yaml library (#89) 2025-04-16 15:02:11 +08:00
go.sum feat: custom json marshaling implementation, replace json and yaml library (#89) 2025-04-16 15:02:11 +08:00
LICENSE added license 2024-04-01 04:08:48 +00:00
Makefile feat: proxmox idlewatcher (#88) 2025-04-16 14:52:33 +08:00
providers.example.yml readme updates, docs moved to wiki 2024-10-04 11:27:11 +08:00
README.md feat: proxmox idlewatcher (#88) 2025-04-16 14:52:33 +08:00
README_CHT.md feat: proxmox idlewatcher (#88) 2025-04-16 14:52:33 +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://godoxy.demo.6uo.me

Deployed on Zeabur

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

  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.

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

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