Back to rankings

yusing/godoxy

Godocs.godoxy.dev

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

dockergogolangletsencryptmicroservicereverse-proxyhomepageself-hostedstartpage
Star Growth
Stars
3.5k
Forks
150
Weekly Growth
Issues
13
1k2k3k
Sep 25Dec 25Apr 26Jul 26
ArtifactsGo Modulesgo get github.com/yusing/godoxy
README

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

Related repositories
louislam/uptime-kuma

A fancy self-hosted monitoring tool

JavaScriptnpmMIT Licenseuptimemonitoring
uptime.kuma.pet
89.4k8.1k
Stirling-Tools/Stirling-PDF

#1 PDF Application on GitHub that lets you edit PDFs on any device anywhere

JavaMavenOtherdockerjava
stirling.com
87.7k7.8k
macrozheng/mall

mall项目是一套电商系统,包括前台商城系统及后台管理系统,基于Spring Boot+MyBatis实现,采用Docker容器化部署。 前台商城系统包含首页门户、商品推荐、商品搜索、商品展示、购物车、订单流程、会员中心、客户服务、帮助中心等模块。 后台管理系统包含商品管理、订单管理、会员管理、促销管理、运营管理、内容管理、统计报表、财务管理、权限管理、设置等模块。

JavaMavenApache License 2.0spring-bootspring-security
macrozheng.com/admin/
84.3k29.8k
bregman-arie/devops-exercises

Linux, Jenkins, AWS, SRE, Prometheus, Docker, Python, Ansible, Git, Kubernetes, Terraform, OpenStack, SQL, NoSQL, Azure, GCP, DNS, Elastic, Network, Virtualization. DevOps Interview Questions

PythonPyPIOtherdevopsaws
83.3k19.8k
netdata/netdata

The fastest path to AI-powered full stack observability, even for lean teams.

GoGo ModulesGNU General Public License v3.0monitoringdocker
netdata.cloud
79.8k6.5k
moby/moby

The Moby Project - a collaborative project for the container ecosystem to assemble container-based systems

GoGo ModulesApache License 2.0dockercontainers
mobyproject.org
71.9k19k
traefik/traefik

The Cloud Native Application Proxy

GoGo ModulesMIT Licensemicroservicedocker
traefik.io
64.1k6.1k
dani-garcia/vaultwarden

Unofficial Bitwarden compatible server written in Rust, formerly known as bitwarden_rs

Rustcrates.ioGNU Affero General Public License v3.0vaultwardenbitwarden
64k3k
usememos/memos

Open-source, self-hosted note-taking tool built for quick capture. Markdown-native, lightweight, and fully yours.

GoGo ModulesMIT Licensereactgo
usememos.com
61.7k4.6k
sansan0/TrendRadar

⭐AI-driven public opinion & trend monitor with multi-platform aggregation, RSS, and smart alerts.🎯 告别信息过载,你的 AI 舆情监控助手与热点筛选工具!聚合多平台热点 + RSS 订阅,支持关键词精准筛选。AI 智能筛选新闻 + AI 翻译 + AI 分析简报直推手机,也支持接入 MCP 架构,赋能 AI 自然语言对话分析、情感洞察与趋势预测等。支持 Docker ,数据本地/云端自持。集成微信/飞书/钉钉/Telegram/邮件/ntfy/bark/slack 等渠道智能推送。

PythonPyPIGNU General Public License v3.0data-analysispython
trendradar.sandev.cc
60.8k24.8k
coollabsio/coolify

An open-source, self-hostable PaaS alternative to Vercel, Heroku & Netlify that lets you easily deploy static sites, databases, full-stack applications and 280+ one-click services on your own servers.

PHPPackagistApache License 2.0nodejsmysql
coolify.io
59.2k5.1k
appwrite/appwrite

Appwrite® - complete cloud infrastructure for your web, mobile and AI apps. Including Auth, Databases, Storage, Functions, Messaging, Hosting, Realtime and more

TypeScriptnpmBSD 3-Clause "New" or "Revised" Licenseappwritedocker
appwrite.io
56.6k5.6k