GitHub - yusing/godoxy: High-performance reverse proxy and container orchestrator for self-hosters
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
社区作者 · zZz
它解决什么问题
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 .
- Prepare a new directory for Docker Compose and config files.
- 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 ) "
- Start the docker compose service from generated compose.yml :
docker compose up -d- 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
- List all the containers
- Read container name, labels, and port configurations for each of them
- Create a route if applicable (a route is like a "Virtual Host" in NPM)
- 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
Metrics and Logs
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:
- Node-level routes (VMID = 0): When hostname, IP, or alias matches a Proxmox node name or IP
- 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 ) " -- updateUninstall:
sh -c " $( curl -fsSL https://github.com/yusing/godoxy/raw/refs/heads/main/scripts/install-agent.sh ) " -- uninstallManual Setup
-
Make config directory then grab config.example.yml into config/config.ymlmkdir -p config && wget https://raw.githubusercontent.com/yusing/godoxy/main/config.example.yml -O config/config.yml- Grab .env.example into .env
wget https://raw.githubusercontent.com/yusing/godoxy/main/.env.example -O .env- Grab compose.example.yml into compose.yml
wget https://raw.githubusercontent.com/yusing/godoxy/main/compose.example.yml -O compose.ymlFolder 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
- Clone the repository git clone https://github.com/yusing/godoxy --depth=1
- Install / Upgrade go (>=1.22) and shadowtree if not already
- Clear cache if you have built this before (go < 1.22) with go clean -cache
- Get dependencies with shadowtree mod-tidy
- Build binary with shadowtree build
Star History
— 本文由 AI 根据公开来源辅助整理,命令、版本与许可证请在使用前到原始页面复核。
安装 / 开始使用
Quick start Configure Wildcard DNS Record(s) to point to machine running GoDoxy , e.g.
Note GoDoxy is designed to be running in host network mode, do not change it. To change listening ports, modify .env . - Prepare a new directory for Docker Compose and config files.
- 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 ) " - Start the docker compose service from generated compose.yml :
- A Record: *.domain.com -> 10.0.10.1
- AAAA Record (if you use IPv6): *.domain.com -> ::ffff:a00:a01
docker compose up -d- You may now do some extra configuration on WebUI https://godoxy.yourdomain.com Key features
How GoDoxy works
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 Metrics and Logs 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:
This enables seamless proxy configuration without manual binding: routes : pve-node-01 : host : pve-node-01.internal port : 8006
- 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
- List all the containers
- Read container name, labels, and port configurations for each of them
- Create a route if applicable (a route is like a "Virtual Host" in NPM)
- Watch for container / config changes and update automatically
- Node-level routes (VMID = 0): When hostname, IP, or alias matches a Proxmox node name or IP
- Container-level routes (VMID > 0): When hostname, IP, or alias matches an LXC container
Automatically links to Proxmox node pve-node-01
WebUI Management From the WebUI, you can:
Update / uninstall system agent Installer supports both systemd and Alpine/OpenRC ( rc-service ) hosts. Update:
- 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
sh -c " $( curl -fsSL https://github.com/yusing/godoxy/raw/refs/heads/main/scripts/install-agent.sh ) " -- updateUninstall:
sh -c " $( curl -fsSL https://github.com/yusing/godoxy/raw/refs/heads/main/scripts/install-agent.sh ) " -- uninstallManual Setup -
Make config directory then grab config.example.yml into config/config.ymlmkdir -p config && wget https://raw.githubusercontent.com/yusing/godoxy/main/config.example.yml -O config/config.yml- Grab .env.example into .env