Container discovery replaces most manual proxy hosts
GoDoxy watches Docker and Podman, reads container names, labels, and exposed ports, then creates routes when the metadata matches. A proxy.aliases label becomes the subdomain, with the Compose container name as the default. Route files cover services that are not described by labels. Hot reload lets container or configuration changes update the proxy without rebuilding a static list by hand.
The Web UI manages routes, configuration, containers, logs, metrics, and uptime. That is the main reason to choose GoDoxy over a small Caddy file. It also increases the proxy's authority: access to the container runtime and management actions can affect much more than HTTP routing. Put the administrative hostname behind strong authentication, restrict its network reach, and avoid exposing runtime sockets beyond the service that needs them.
Host networking and wildcard DNS are design requirements
The quick start begins with wildcard A or AAAA records pointing at the GoDoxy host. It explicitly says to run in host network mode and change listening ports through the environment file. The setup script generates Compose and configuration files, after which the Web UI is expected at a godoxy subdomain. This is a short path when you control DNS and the host.
It is a poor fit for platforms that forbid host networking or hide the container runtime. DNS-01 certificates need credentials for a supported provider, and release v0.31.0 adds Infomaniak while updating the ACME library. The release warns that multiple certificate providers should use matching resolver lists because the underlying library applies resolvers process-wide. Certificate renewal deserves a staging test before the proxy owns every service.
What happened when we ran it
Our fresh container installed Go dependencies in 112 seconds and built commit 6f52e6a in 77 seconds. The checkout contained 1,842 files, about 185,062 source lines, and 12.3 MB. It included 8 CI workflow files and a Dockerfile, while the repository did not have a top-level tests directory. Go packages can keep tests beside source, so that directory signal is not a test count.
The complete Go test command exited with code 1 after 73 seconds. It reported 7 passed packages and 42 failed out of 49. The final log showed build failures in serialization, types, and watcher packages, including invalid references from github.com/yusing/goutils/http to net/http/internal/http2.errStreamClosed and from serialization to time.unitMap. We do not have evidence in the supplied log to assign a deeper cause.
Our sandbox used Go 1.24 with 3 CPUs, 8 GB of RAM, no secrets, and no privileged access. Release v0.31.0 now states that source builds require Go 1.27. The measured build still succeeded on the supplied image, while the test suite did not. A current source build should follow the release's newer requirement, use the documented shadowtree commands, and verify all packages before producing an image.
Idle sleep can save resources and surprise users
GoDoxy can stop idle Docker containers or Proxmox LXCs and wake them when traffic arrives. For a homelab service used a few times per week, this can cut memory and CPU use without maintaining separate schedules. The proxy must remain available, recognize the request, start the target, and hold or retry traffic until the application responds. Startup time becomes user-visible latency.
Health monitoring controls that decision, so label semantics matter. Open issue #256 says proxy.exclude: true removes a route while health monitoring continues unless another wildcard health-check label is set. The request proposes one full opt-out label. Until behavior changes, audit excluded containers explicitly. An operator may reasonably assume 'exclude' means GoDoxy leaves the container alone, and that assumption is currently unsafe.
Proxmox control makes this more than a reverse proxy
GoDoxy can bind routes to Proxmox nodes or LXCs by matching hostnames, addresses, and aliases. The Web UI can start, stop, or restart containers and stream node or LXC logs through WebSockets. Multi-node Docker support serves a similar need for services spread across hosts. These features suit a lab where the proxy is already the central directory for applications.
Remote control adds failure modes. Issue #233 described repeated EOF errors, route loss, and high CPU with many remote Docker providers over mutual TLS in v0.29.x; it was closed in August 2026. Release v0.31.0 includes several fixes for Docker and Proxmox stream record boundaries. Reproduce your node count and connection type during an upgrade, then confirm routes survive provider disconnects.
Access rules cover common homelab needs, with limits
HTTP routes can use OpenID Connect, ForwardAuth, custom middleware, IP or CIDR rules, and country or timezone rules backed by a MaxMind account. TCP and UDP forwarding cover services outside HTTP. Custom error pages, access logs, and periodic summaries round out routine administration. This is a useful set for private dashboards and shared household services.
The proxy is not a general TLS passthrough switch. Issue #218 requested SNI-based proxying so separate sites could retain their own wildcard certificates behind one port 443 listener; the request was closed in August without that feature appearing in the README. Choose Traefik, Caddy, or another layer when passthrough is central. Do not design around a closed request as if it were promised work.
v0.31.0 is active and changes build assumptions
GitHub listed 4,115 stars and 10 combined issues and pull requests when fetched. The last push was August 25, 2026, four days after v0.31.0. That release fixes OIDC session recovery, icon handling, stream records, configuration drafts, and Docker health fallback. It also moves source builds to Go 1.27 and removes configurable Sonic JSON support.
Those breaking notes make version pinning important even in a homelab. Keep Compose, environment, routes, certificate state, and provider files in a backed-up directory. Test the new image against a secondary hostname, inspect authentication and WebSocket routes, then move traffic. GoDoxy earns a trial for its unusual mix of proxy automation and infrastructure controls, but the failed measured suite argues for more care than the short setup script suggests.

