Easy to use reverse proxy with docker integration
Find a file
2025-03-29 16:44:16 +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(agent): fix agent host validatation and improve file path handling 2025-03-29 16:44:16 +08:00
cmd refactor: clean up logger and metric initialization flow 2025-03-29 02:59:40 +08:00
examples n8n compose example 2024-12-11 07:21:04 +08:00
internal fix(agent): fix agent host validatation and improve file path handling 2025-03-29 16:44:16 +08:00
pkg refactor: improved init flow in main 2025-03-28 07:38:12 +08:00
schemas refactor: move typescript stuff to 'schemas' directory 2025-03-28 09:28:02 +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 examples: add GODOXY_FRONTEND_PORT environment variable 2025-03-28 03:21:34 +08:00
.gitignore misc: update gitignore and trunk, remove next-release.md 2025-03-28 03:28:17 +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 cicd: simplify and optimize Dockerfile, bump Go version to 1.24.1 2025-03-28 03:25:17 +08:00
go.mod deps upgrade 2025-03-28 08:45:59 +08:00
go.sum deps upgrade 2025-03-28 08:45:59 +08:00
LICENSE added license 2024-04-01 04:08:48 +00:00
Makefile refactor: move typescript stuff to 'schemas' directory 2025-03-28 09:28:02 +08:00
providers.example.yml readme updates, docs moved to wiki 2024-10-04 11:27:11 +08:00
README.md chore: remove outdated note about ongoing feature branch from README 2025-03-29 10:07:16 +08:00
README_CHT.md docs: README update 2025-03-28 03:23:06 +08:00

GoDoxy

Quality Gate Status GitHub last commit Lines of Code Discord

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

For full documentation, check out Wiki

EN | 中文

Table of content

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

🔼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)
  4. Watch for container / config changes and update automatically

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 (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

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