Easy to use reverse proxy with docker integration
Find a file
2025-03-28 03:21:34 +08:00
.github update default image name 2025-02-23 13:28:35 +08:00
.trunk merge feat/godoxy-agent and update README 2025-03-28 03:13:59 +08:00
.vscode update default repo to main 2025-02-23 13:31:27 +08:00
cmd simplify setup with script 2025-02-18 05:43:33 +08:00
examples n8n compose example 2024-12-11 07:21:04 +08:00
internal security: sanitize uri 2025-03-22 23:58:37 +08:00
pkg added package version api, dependencies upgrade 2024-10-06 09:23:41 +08:00
schemas autocert: add porkbun cert provider 2025-02-13 23:48:35 +08:00
screenshots update webui screenshot 2025-02-25 06:06:06 +08:00
scripts merge feat/godoxy-agent and update README 2025-03-28 03:13:59 +08:00
.env.example examples: add GODOXY_FRONTEND_PORT environment variable 2025-03-28 03:21:34 +08:00
.gitignore fix npm package 2025-01-25 02:36:22 +08:00
.gitlab-ci.yml added package version api, dependencies upgrade 2024-10-06 09:23:41 +08:00
.gitmodules refactor file names, readme updates, removed frontend submodule as it is being built independently 2024-09-25 11:22:25 +08:00
.golangci.yml Feat/fileserver (#60) 2025-02-06 18:23:10 +08:00
bun.lock fix npm package 2025-01-25 02:36:22 +08:00
compose.example.yml examples: add GODOXY_FRONTEND_PORT environment variable 2025-03-28 03:21:34 +08:00
config.example.yml adjusted and simplified default config and compose.yml 2025-02-04 07:04:05 +08:00
Dockerfile deps upgrade 2025-02-18 16:39:25 +08:00
go.mod merge feat/godoxy-agent and update README 2025-03-28 03:13:59 +08:00
go.sum merge feat/godoxy-agent and update README 2025-03-28 03:13:59 +08:00
LICENSE added license 2024-04-01 04:08:48 +00:00
Makefile fix Makefile 2025-03-23 00:05:10 +08:00
next-release.md merge feat/godoxy-agent and update README 2025-03-28 03:13:59 +08:00
package.json autocert: add porkbun cert provider 2025-02-13 23:48:35 +08:00
providers.example.yml readme updates, docs moved to wiki 2024-10-04 11:27:11 +08:00
README.md merge feat/godoxy-agent and update README 2025-03-28 03:13:59 +08:00
README_CHT.md merge feat/godoxy-agent and update README 2025-03-28 03:13:59 +08:00
tsconfig.json fix npm package 2025-01-25 02:36:22 +08:00

GoDoxy

Quality Gate Status GitHub last commit Lines of Code

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

  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)

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.

  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. Start the container docker compose up -d and wait for it to be ready

  4. You may now do some extra configuration on WebUI https://godoxy.yourdomain.com

🔼Back to top

Screenshots

idlesleeper

idlesleeper

Metrics and Logs

In development, available on nightly builds.

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

🔼Back to top

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