Other

项目介绍

yusing/godoxy 是一个托管在 GitHub 上的开源项目,主要使用 Go 编写,采用 Other 许可证,目前获得 4.2k 个 Star、192 次 Fork。

仓库全名
yusing/godoxy
开源许可证
Other
Star 数
4.2k
Fork 数
192
未关闭 Issue
9

README 摘要

A lightweight, simple, and performant reverse proxy with WebUI. Website | Wiki | Discord EN | 简体中文 | 繁體中文 Have questions? Ask ChatGPT! (Thanks to @ismesid) Running demo 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…

完整内容见 GitHub 原始 README 或本页 。

常见问题

godoxy 用什么语言开发?

主要使用 Go 编写,采用 Other 许可证,目前有 4.2k 个 Star。

godoxy 可以免费商用吗?

仓库标注的许可证为 Other,商用前请先阅读仓库 LICENSE 文件确认授权范围。

如何获取 godoxy 的源码?

可以直接克隆仓库:git clone https://github.com/yusing/godoxy.git,默认分支为 main;安装与运行步骤见仓库 README。

godoxy 最近还在维护吗?

仓库最近一次更新为 1 天前,当前有 9 个未关闭 Issue;Star 数为 4.2k,可作为社区活跃度的参考。

关于

GitHub 原始描述(英文)

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

描述取自 GitHub 官方 API,保持仓库作者书写的原文。

简要分析

热度分
4576
价值分
2564
活跃状态
活跃

语言占比

CSS
Dockerfile
Go
Go Template
HTML
JavaScript
Python
Shell
TypeScript

Release

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

评论

暂无评论