{"id":25872510,"url":"https://github.com/yusing/godoxy","last_synced_at":"2026-05-05T12:01:51.304Z","repository":{"id":225176660,"uuid":"764979648","full_name":"yusing/godoxy","owner":"yusing","description":"Easy to use reverse proxy with docker integration","archived":false,"fork":false,"pushed_at":"2025-02-23T06:27:33.000Z","size":208234,"stargazers_count":1257,"open_issues_count":9,"forks_count":50,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-02-23T07:25:43.102Z","etag":null,"topics":["docker","go","golang","homepage","letsencrypt","microservice","reverse-proxy","self-hosted","startpage"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yusing.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"yusing","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":"yusingwysq","thanks_dev":null,"custom":null}},"created_at":"2024-02-29T03:52:35.000Z","updated_at":"2025-02-23T06:10:28.000Z","dependencies_parsed_at":"2024-03-29T14:24:25.762Z","dependency_job_id":"e63afd5a-1804-4794-af0a-48f96d2d8c9d","html_url":"https://github.com/yusing/godoxy","commit_stats":null,"previous_names":["yusing/go-proxy","yusing/godoxy"],"tags_count":63,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yusing%2Fgodoxy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yusing%2Fgodoxy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yusing%2Fgodoxy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yusing%2Fgodoxy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yusing","download_url":"https://codeload.github.com/yusing/godoxy/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241476452,"owners_count":19968916,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","go","golang","homepage","letsencrypt","microservice","reverse-proxy","self-hosted","startpage"],"created_at":"2025-03-02T08:01:24.436Z","updated_at":"2026-05-05T12:01:51.298Z","avatar_url":"https://github.com/yusing.png","language":"Go","funding_links":["https://github.com/sponsors/yusing","https://buymeacoffee.com/yusingwysq"],"categories":["Software","Linux","Go","Recently Updated"],"sub_categories":["Web Servers","Selfhosted","[Mar 08, 2025](/content/2025/03/08/README.md)"],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"assets/godoxy.png\" width=\"200\"\u003e\n\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=yusing_go-proxy\u0026metric=alert_status)](https://sonarcloud.io/summary/new_code?id=yusing_go-proxy)\n![GitHub last commit](https://img.shields.io/github/last-commit/yusing/godoxy)\n[![Lines of Code](https://sonarcloud.io/api/project_badges/measure?project=yusing_go-proxy\u0026metric=ncloc)](https://sonarcloud.io/summary/new_code?id=go-proxy)\n\n![Demo](https://img.shields.io/website?url=https%3A%2F%2Fdemo.godoxy.dev\u0026label=Demo\u0026link=https%3A%2F%2Fdemo.godoxy.dev)\n[![Discord](https://dcbadge.limes.pink/api/server/umReR62nRd?style=flat)](https://discord.gg/umReR62nRd)\n\nA lightweight, simple, and performant reverse proxy with WebUI.\n\n\u003ch5\u003e\n\u003ca href=\"https://docs.godoxy.dev\"\u003eWebsite\u003c/a\u003e | \u003ca href=\"https://docs.godoxy.dev/Home.html\"\u003eWiki\u003c/a\u003e | \u003ca href=\"https://discord.gg/umReR62nRd\"\u003eDiscord\u003c/a\u003e\n\u003c/h5\u003e\n\n\u003ch5\u003eEN | \u003ca href=\"README_CHT.md\"\u003e中文\u003c/a\u003e\u003c/h5\u003e\n\n\u003cimg src=\"screenshots/webui.jpg\" style=\"max-width: 650\"\u003e\n\nHave questions? Ask [ChatGPT](https://chatgpt.com/g/g-6825390374b481919ad482f2e48936a1-godoxy-assistant)! (Thanks to [@ismesid](https://github.com/arevindh))\n\n\u003c/div\u003e\n\n## Table of content\n\n\u003c!-- TOC --\u003e\n\n- [Table of content](#table-of-content)\n- [Running demo](#running-demo)\n- [Key Features](#key-features)\n- [Prerequisites](#prerequisites)\n- [Setup](#setup)\n- [How does GoDoxy work](#how-does-godoxy-work)\n- [Proxmox Integration](#proxmox-integration)\n  - [Automatic Route Binding](#automatic-route-binding)\n  - [WebUI Management](#webui-management)\n- [Update / Uninstall system agent](#update--uninstall-system-agent)\n- [Screenshots](#screenshots)\n  - [idlesleeper](#idlesleeper)\n  - [Metrics and Logs](#metrics-and-logs)\n- [Manual Setup](#manual-setup)\n  - [Folder structrue](#folder-structrue)\n- [Build it yourself](#build-it-yourself)\n- [Star History](#star-history)\n\n## Running demo\n\n\u003chttps://demo.godoxy.dev\u003e\n\n## Key Features\n\n- **Simple**\n  - Effortless configuration with [simple labels](https://docs.godoxy.dev/Docker-labels-and-Route-Files) or WebUI\n  - [Simple multi-node setup](https://docs.godoxy.dev/Configurations#multi-docker-nodes-setup)\n  - Detailed error messages for easy troubleshooting.\n- **ACL**: connection / request level access control\n  - IP/CIDR\n  - Country **(Maxmind account required)**\n  - Timezone **(Maxmind account required)**\n  - **Access logging**\n  - Periodic notification of access summaries for number of allowed and blocked connections\n- **Advanced Automation**\n  - Automatic SSL certificate management with Let's Encrypt ([using DNS-01 Challenge](https://docs.godoxy.dev/DNS-01-Providers))\n  - Auto-configuration for Docker containers\n  - Hot-reloading of configurations and container state changes\n- **Container Runtime Support**\n  - Docker\n  - Podman\n- **Idle-sleep**: stop and wake containers based on traffic _(see [screenshots](#idlesleeper))_\n  - Docker containers\n  - Proxmox LXC containers\n- **Proxmox Integration**\n  - **Automatic route binding**: Routes automatically bind to Proxmox nodes or LXC containers by matching hostname, IP, or alias\n  - **LXC lifecycle control**: Start, stop, restart containers directly from WebUI\n  - **Real-time logs**: Stream journalctl logs from nodes and LXC containers via WebSocket\n- **Traffic Management**\n  - HTTP reserve proxy\n  - TCP/UDP port forwarding\n  - **OpenID Connect support**: SSO and secure your apps easily\n  - **ForwardAuth support**: integrate with any auth provider (e.g. TinyAuth)\n- **Customization**\n  - [HTTP middlewares](https://docs.godoxy.dev/Middlewares)\n  - [Custom error pages support](https://docs.godoxy.dev/Custom-Error-Pages)\n- **Web UI**\n  - App Dashboard\n  - Config Editor\n  - Uptime and System Metrics\n  - **Docker**\n    - Container lifecycle management (start, stop, restart)\n    - Real-time container logs via WebSocket\n  - **Proxmox**\n    - LXC container lifecycle management (start, stop, restart)\n    - Real-time node and LXC journalctl logs via WebSocket\n- **Cross-Platform support**\n  - Supports **linux/amd64** and **linux/arm64**\n- **Efficient and Performant**\n  - Written in **[Go](https://go.dev)**\n\n## Prerequisites\n\nConfigure Wildcard DNS Record(s) to point to machine running `GoDoxy`, e.g.\n\n- A Record: `*.domain.com` -\u003e `10.0.10.1`\n- AAAA Record (if you use IPv6): `*.domain.com` -\u003e `::ffff:a00:a01`\n\n## Setup\n\n\u003e [!NOTE]\n\u003e GoDoxy is designed to be running in `host` network mode, do not change it.\n\u003e\n\u003e To change listening ports, modify `.env`.\n\n1. Prepare a new directory for docker compose and config files.\n\n2. Run setup script inside the directory, or [set up manually](#manual-setup)\n\n   ```shell\n   /bin/sh -c \"$(curl -fsSL https://raw.githubusercontent.com/yusing/godoxy/main/scripts/setup.sh)\"\n   ```\n\n3. Start the docker compose service from generated `compose.yml`:\n\n   ```shell\n   docker compose up -d\n   ```\n\n4. You may now do some extra configuration on WebUI `https://godoxy.yourdomain.com`\n\n## How does GoDoxy work\n\n1. List all the containers\n2. Read container name, labels and port configurations for each of them\n3. Create a route if applicable (a route is like a \"Virtual Host\" in NPM)\n4. Watch for container / config changes and update automatically\n\n\u003e [!NOTE]\n\u003e GoDoxy uses the label `proxy.aliases` as the subdomain(s), if unset it defaults to the `container_name` field in docker compose.\n\u003e\n\u003e For example, with the label `proxy.aliases: qbt` you can access your app via `qbt.domain.com`.\n\n## Proxmox Integration\n\nGoDoxy can automatically discover and manage Proxmox nodes and LXC containers through configured providers.\n\n### Automatic Route Binding\n\nRoutes are automatically linked to Proxmox resources through reverse lookup:\n\n1. **Node-level routes** (VMID = 0): When hostname, IP, or alias matches a Proxmox node name or IP\n2. **Container-level routes** (VMID \u003e 0): When hostname, IP, or alias matches an LXC container\n\nThis enables seamless proxy configuration without manual binding:\n\n```yaml\nroutes:\n  pve-node-01:\n    host: pve-node-01.internal\n    port: 8006\n    # Automatically links to Proxmox node pve-node-01\n```\n\n### WebUI Management\n\nFrom the WebUI, you can:\n\n- **LXC Lifecycle Control**: Start, stop, restart containers\n- **Node Logs**: Stream real-time journalctl or log files output from nodes\n- **LXC Logs**: Stream real-time journalctl or log files output from containers\n\n## Update / Uninstall system agent\n\nInstaller supports both systemd and Alpine/OpenRC (`rc-service`) hosts.\n\nUpdate:\n\n```bash\nsh -c \"$(curl -fsSL https://github.com/yusing/godoxy/raw/refs/heads/main/scripts/install-agent.sh)\" -- update\n```\n\nUninstall:\n\n```bash\nsh -c \"$(curl -fsSL https://github.com/yusing/godoxy/raw/refs/heads/main/scripts/install-agent.sh)\" -- uninstall\n```\n\n## Screenshots\n\n### idlesleeper\n\n![idlesleeper](screenshots/idlesleeper.webp)\n\n### Metrics and Logs\n\n\u003cdiv align=\"center\"\u003e\n  \u003ctable\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"\u003e\u003cimg src=\"screenshots/routes.jpg\" alt=\"Routes\" width=\"350\"/\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003cimg src=\"screenshots/servers.jpg\" alt=\"Servers\" width=\"350\"/\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"\u003e\u003cb\u003eRoutes\u003c/b\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003cb\u003eServers\u003c/b\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/table\u003e\n\u003c/div\u003e\n\n## Manual Setup\n\n1. Make `config` directory then grab `config.example.yml` into `config/config.yml`\n\n   `mkdir -p config \u0026\u0026 wget https://raw.githubusercontent.com/yusing/godoxy/main/config.example.yml -O config/config.yml`\n\n2. Grab `.env.example` into `.env`\n\n   `wget https://raw.githubusercontent.com/yusing/godoxy/main/.env.example -O .env`\n\n3. Grab `compose.example.yml` into `compose.yml`\n\n   `wget https://raw.githubusercontent.com/yusing/godoxy/main/compose.example.yml -O compose.yml`\n\n### Folder structrue\n\n```shell\n├── certs\n│   ├── cert.crt\n│   └── priv.key\n├── compose.yml\n├── config\n│   ├── config.yml\n│   ├── middlewares\n│   │   ├── middleware1.yml\n│   │   ├── middleware2.yml\n│   ├── provider1.yml\n│   └── provider2.yml\n├── data\n│   ├── metrics # metrics data\n│   │   ├── uptime.json\n│   │   └── system_info.json\n└── .env\n```\n\n## Build it yourself\n\n1. Clone the repository `git clone https://github.com/yusing/godoxy --depth=1`\n\n2. Install / Upgrade [go (\u003e=1.22)](https://go.dev/doc/install) and `make` if not already\n\n3. Clear cache if you have built this before (go \u003c 1.22) with `go clean -cache`\n\n4. get dependencies with `make get`\n\n5. build binary with `make build`\n\n## Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=yusing/godoxy\u0026type=Date)](https://www.star-history.com/#yusing/godoxy\u0026Date)\n\n[🔼Back to top](#table-of-content)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyusing%2Fgodoxy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyusing%2Fgodoxy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyusing%2Fgodoxy/lists"}