GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - yusing/godoxy: High-performance reverse proxy and container orchestrator for self-hosters

BranchesTags
Open more actions menu

Latest commit

 

History

2,375 Commits
2,375 Commits

Folders and files

NameName
Last commit message
Last commit date
.github
.github
 
 
.shadowtree
.shadowtree
 
 
.trunk
.trunk
 
 
.vscode
.vscode
 
 
agent
agent
 
 
assets
assets
 
 
cmd
cmd
 
 
e2e
e2e
 
 
examples
examples
 
 
goutils @ e4dc8ec
goutils @ e4dc8ec
 
 
internal
internal
 
 
pkg
pkg
 
 
screenshots
screenshots
 
 
scripts
scripts
 
 
socket-proxy
socket-proxy
 
 
webui @ 24719f9
webui @ 24719f9
 
 
.dockerignore
.dockerignore
 
 
.env.example
.env.example
 
 
.gitagentignore
.gitagentignore
 
 
.gitignore
.gitignore
 
 
.gitlab-ci.yml
.gitlab-ci.yml
 
 
.gitmodules
.gitmodules
 
 
.golangci.yml
.golangci.yml
 
 
.shadowtree.toml
.shadowtree.toml
 
 
AGENTS.md
AGENTS.md
 
 
CODE_OF_CONDUCT.md
CODE_OF_CONDUCT.md
 
 
Dockerfile
Dockerfile
 
 
Jenkinsfile
Jenkinsfile
 
 
LICENSE
LICENSE
 
 
README.md
README.md
 
 
README_CHS.md
README_CHS.md
 
 
README_CHT.md
README_CHT.md
 
 
compose.example.yml
compose.example.yml
 
 
config.example.yml
config.example.yml
 
 
dev.Dockerfile
dev.Dockerfile
 
 
dev.compose.yml
dev.compose.yml
 
 
go.mod
go.mod
 
 
go.sum
go.sum
 
 
providers.example.yml
providers.example.yml
 
 
rootless-compose.example.yml
rootless-compose.example.yml
 
 
rootless.env.example
rootless.env.example
 
 
sonar-project.properties
sonar-project.properties
 
 

Repository files navigation

Quality Gate Status GitHub last commit Lines of Code

Demo Discord

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

Website | Wiki | Discord
EN | 简体中文 | 繁體中文

Have questions? Ask ChatGPT! (Thanks to @ismesid)

Running demo

https://demo.godoxy.dev

Quick start

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

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/sh -c "$(curl -fsSL https://raw.githubusercontent.com/yusing/godoxy/main/scripts/setup.sh)"
  3. Start the docker compose service from generated compose.yml:

    docker compose up -d
  4. You may now do some extra configuration on WebUI https://godoxy.yourdomain.com

Key features

  • Simple setup
    • Configure routes with Docker labels or route files
    • Manage routes, config, containers, logs, metrics, and uptime from the WebUI
    • Use multi-node Docker setups
  • Automatic routing
    • Discover Docker and Podman containers
    • Hot-reload config and container state changes
    • Manage Let's Encrypt certificates with DNS-01 providers
  • Traffic management
    • HTTP reverse proxy
    • TCP/UDP port forwarding
    • OpenID Connect SSO
    • ForwardAuth integration, e.g. TinyAuth
    • HTTP middlewares
    • Custom error pages
  • Access control
    • IP/CIDR rules
    • Country and timezone rules with a MaxMind account
    • Access logging
    • Periodic access summaries
  • Idle sleep
    • Stop and wake Docker containers based on traffic
    • Stop and wake Proxmox LXC containers based on traffic
  • Proxmox integration
    • Bind routes automatically to nodes or LXC containers
    • Start, stop, and restart LXC containers from the WebUI
    • Stream node and LXC logs through WebSocket
  • Platform support
    • Linux amd64
    • Linux arm64

How GoDoxy works

  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

Routes Servers
Routes Servers

Proxmox Integration

GoDoxy can automatically discover and manage Proxmox nodes and LXC containers through configured providers.

Automatic Route Binding

Routes are automatically linked to Proxmox resources through reverse lookup:

  1. Node-level routes (VMID = 0): When hostname, IP, or alias matches a Proxmox node name or IP
  2. Container-level routes (VMID > 0): When hostname, IP, or alias matches an LXC container

This enables seamless proxy configuration without manual binding:

routes:
  pve-node-01:
    host: pve-node-01.internal
    port: 8006
    # Automatically links to Proxmox node pve-node-01

WebUI Management

From the WebUI, you can:

  • LXC Lifecycle Control: Start, stop, restart containers
  • Node Logs: Stream real-time journalctl or log files output from nodes
  • LXC Logs: Stream real-time journalctl or log files output from containers

Update / uninstall system agent

Installer supports both systemd and Alpine/OpenRC (rc-service) hosts.

Update:

sh -c "$(curl -fsSL https://github.com/yusing/godoxy/raw/refs/heads/main/scripts/install-agent.sh)" -- update

Uninstall:

sh -c "$(curl -fsSL https://github.com/yusing/godoxy/raw/refs/heads/main/scripts/install-agent.sh)" -- uninstall

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 structure

├── 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 from source

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

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

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

  4. Get dependencies with shadowtree mod-tidy

  5. Build binary with shadowtree build

Star History

Star History Chart

About

High-performance reverse proxy and container orchestrator for self-hosters

docs.godoxy.dev

Topics

dockergogolanghomepageletsencryptmicroservicereverse-proxyself-hostedstartpage

Resources

Readme
License

Code of conduct

Code of conduct
Activity

Stars

4.2k stars

Watchers

15 watching

Forks

193 forks
Report repository

Releases

Sponsor this project

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.