# Docs ## impl - [agent/cmd](llms.mdx/docs/impl/agent-cmd): The main entry point for the GoDoxy Agent, a secure monitoring and proxy agent that runs alongside Docker containers - [agent/pkg/agent/stream](llms.mdx/docs/impl/agent-pkg-agent-stream): This package implements a small header-based handshake that allows an authenticated client to request forwarding to a `(host, port)` destination. It supports both TCP-over-TLS and UDP-over-DTLS transports - [agent/pkg/agent](llms.mdx/docs/impl/agent-pkg-agent): The `agent` package provides the client-side implementation for interacting with GoDoxy agents. It handles agent configuration, secure communication via TLS, and provides utilities for agent deployment and management - [agent/pkg/agentproxy](llms.mdx/docs/impl/agent-pkg-agentproxy): Package for configuring HTTP proxy connections through the GoDoxy Agent using HTTP headers - [agent/pkg/certs](llms.mdx/docs/impl/agent-pkg-certs): Certificate management package for creating and extracting certificate archives - [agent/pkg/env](llms.mdx/docs/impl/agent-pkg-env): Environment configuration package for the GoDoxy Agent - [agent/pkg/handler](llms.mdx/docs/impl/agent-pkg-handler): HTTP request handler package for the GoDoxy Agent - [cmd/tcp_echo_server](llms.mdx/docs/impl/cmd-tcp_echo_server): Minimal TCP echo service for development testing of SNI TCP routing - [cmd](llms.mdx/docs/impl/cmd): Main entry point package for GoDoxy, a lightweight reverse proxy with WebUI for Docker containers - [cache](llms.mdx/docs/impl/goutils-cache): Caching utilities for memoizing context-aware functions with TTL, retries, and optional bounded key eviction - [env](llms.mdx/docs/impl/goutils-env): Environment variable utilities with prefix support and type-safe parsing - [goutils/errs](llms.mdx/docs/impl/goutils-errs): gperr is an error interface that supports nested structure and subject highlighting - [goutils/eventqueue](llms.mdx/docs/impl/goutils-eventqueue): A generic, buffered event queue with batch processing and configurable flush intervals - [goutils/fs](llms.mdx/docs/impl/goutils-fs): Filesystem utilities for directory traversal and file listing - [goutils/http/accesslog](llms.mdx/docs/impl/goutils-http-accesslog): HTTP access logging interface for recording request and response details - [goutils/http/httpheaders](llms.mdx/docs/impl/goutils-http-httpheaders): HTTP headers utilities for proxy and middleware applications - [goutils/http/reverseproxy](llms.mdx/docs/impl/goutils-http-reverseproxy): Enhanced HTTP reverse proxy with WebSocket and HTTP/2 support, integrated with godoxy's logging and access control systems - [goutils/http/websocket](llms.mdx/docs/impl/goutils-http-websocket): WebSocket connection manager with automatic ping-pong, JSON messaging, and periodic updates - [goutils/http](llms.mdx/docs/impl/goutils-http): HTTP utilities for request/response handling, reverse proxy, and WebSocket support - [goutils/intern](llms.mdx/docs/impl/goutils-intern): Internal string handling using unique handles for memory efficiency - [goutils/io](llms.mdx/docs/impl/goutils-io): IO utilities for copying data with context support and buffer pooling - [goutils/mockable](llms.mdx/docs/impl/goutils-mockable): Mockable interface utilities for testing - [goutils/num](llms.mdx/docs/impl/goutils-num): Number utilities including percentage type - [goutils/pool](llms.mdx/docs/impl/goutils-pool): Thread-safe object pool for managing collections of objects with string keys - [goutils/server](llms.mdx/docs/impl/goutils-server): Server utilities for HTTP/HTTPS/HTTP3 server management - [goutils/strutils/ansi](llms.mdx/docs/impl/goutils-strings-ansi): ANSI color code utilities for terminal output formatting - [goutils/strutils](llms.mdx/docs/impl/goutils-strings): String utilities for manipulation, formatting, and parsing - [goutils/synk](llms.mdx/docs/impl/goutils-synk): A pool of byte buffers that are reused instead of allocated and freed - [goutils/task](llms.mdx/docs/impl/goutils-task): Task utility package for managing object lifetimes with hierarchical subtasks, callbacks, and graceful shutdown - [testing](llms.mdx/docs/impl/goutils-testing): Testing utilities with testify wrappers and logging support - [goutils/version](llms.mdx/docs/impl/goutils-version): Version utilities for semantic versioning with parsing and comparison - [Implementation details](llms.mdx/docs/impl): This section contains the implementation details of the GoDoxy project. - [internal/acl](llms.mdx/docs/impl/internal-acl): Access control at the TCP connection level with IP/CIDR, timezone, and country-based filtering - [internal/agentpool](llms.mdx/docs/impl/internal-agentpool): Thread-safe pool for managing remote Docker agent connections - [internal/api/v1](llms.mdx/docs/impl/internal-api-v1): Implements the v1 REST API handlers for GoDoxy, exposing endpoints for managing routes, Docker containers, certificates, metrics, and system configuration - [internal/auth](llms.mdx/docs/impl/internal-auth): Authentication providers supporting OIDC and username/password authentication with JWT-based sessions - [internal/autocert](llms.mdx/docs/impl/internal-autocert): Automated SSL certificate management using the ACME protocol (Let's Encrypt and compatible CAs) - [internal/config/query](llms.mdx/docs/impl/internal-config-query): Read-only access to the request runtime state, including route providers and system statistics - [internal/config](llms.mdx/docs/impl/internal-config): Owns configuration preparation, acceptance, runtime activation, reload serialization, and lifecycle diagnostics - [internal/dnsproviders](llms.mdx/docs/impl/internal-dnsproviders): DNS provider integrations for Let's Encrypt certificate management via the lego library - [internal/docker](llms.mdx/docs/impl/internal-docker): Docker container discovery, connection management, and label-based route configuration - [internal/entrypoint](llms.mdx/docs/impl/internal-entrypoint): The entrypoint package provides the main HTTP entry point for GoDoxy, handling domain-based routing, middleware application, short link matching, access logging, and HTTP server lifecycle management - [internal/health/check](llms.mdx/docs/impl/internal-health-check): Low-level health check implementations for different protocols and services in GoDoxy - [internal/health/monitor](llms.mdx/docs/impl/internal-health-monitor): Route health monitor construction, scheduling, last-seen tracking, and status change notifications - [internal/health](llms.mdx/docs/impl/internal-health): Shared health configuration, status, and monitor contracts - [internal/homepage/icons](llms.mdx/docs/impl/internal-homepage-icons): Icon URL parsing, fetching, and listing for the homepage dashboard - [internal/homepage/integrations/qbittorrent](llms.mdx/docs/impl/internal-homepage-integrations-qbittorrent): This package provides a qBittorrent widget for the GoDoxy homepage dashboard, enabling real-time monitoring of torrent status and transfer statistics - [internal/homepage/widgets](llms.mdx/docs/impl/internal-homepage-widgets): This package provides a widget framework for the GoDoxy homepage dashboard, enabling integration with various service providers to display real-time data - [internal/homepage](llms.mdx/docs/impl/internal-homepage): The homepage package provides the GoDoxy WebUI dashboard with support for categories, favorites, widgets, dynamic item configuration, and icon management - [internal/idlewatcher/provider](llms.mdx/docs/impl/internal-idlewatcher-provider): Implements container runtime abstractions for Docker and Proxmox LXC backends - [internal/idlewatcher/runtime](llms.mdx/docs/impl/internal-idlewatcher-runtime): Idlewatcher configuration and provider contracts - [internal/idlewatcher](llms.mdx/docs/impl/internal-idlewatcher): Manages container lifecycle based on idle timeout, automatically stopping/pausing containers and waking them on request - [internal/jsonstore](llms.mdx/docs/impl/internal-jsonstore): The jsonstore package provides persistent JSON storage with namespace support, using thread-safe concurrent maps and automatic loading/saving - [internal/loadbalancer](llms.mdx/docs/impl/internal-loadbalancer): Serializable load-balancer configuration - [internal/logging/accesslog](llms.mdx/docs/impl/internal-logging-accesslog): Provides HTTP access logging with file rotation, log filtering, and multiple output formats for request and ACL event logging - [internal/logging/memlogger](llms.mdx/docs/impl/internal-logging-memlogger): Provides a thread-safe in-memory circular buffer logger with WebSocket-based real-time streaming for log data - [internal/logging](llms.mdx/docs/impl/internal-logging): Structured logging capabilities for GoDoxy, including application logging, HTTP access logging, and in-memory log streaming - [internal/maxmind](llms.mdx/docs/impl/internal-maxmind): The maxmind package provides MaxMind GeoIP database integration for IP geolocation, including automatic database downloading and updates - [internal/metrics/period](llms.mdx/docs/impl/internal-metrics-period): Provides time-bucketed metrics storage with configurable periods, enabling historical data aggregation and real-time streaming - [internal/metrics/systeminfo](llms.mdx/docs/impl/internal-metrics-systeminfo): Collects and aggregates system metrics including CPU, memory, disk, network, and sensor data with configurable aggregation modes - [internal/metrics/uptime](llms.mdx/docs/impl/internal-metrics-uptime): Tracks and aggregates route health status over time, providing uptime/downtime statistics and latency metrics - [internal/metrics](llms.mdx/docs/impl/internal-metrics): System monitoring and metrics collection for GoDoxy with time-series storage and REST/WebSocket APIs - [internal/net/gphttp/loadbalancer](llms.mdx/docs/impl/internal-net-gphttp-loadbalancer): Load balancing package providing multiple distribution algorithms, sticky sessions, and server health management - [internal/net/gphttp/middleware/captcha](llms.mdx/docs/impl/internal-net-gphttp-middleware-captcha): CAPTCHA verification middleware package providing session-based captcha challenge and verification - [internal/net/gphttp/middleware/errorpage](llms.mdx/docs/impl/internal-net-gphttp-middleware-errorpage): Custom error page serving middleware that replaces default HTTP error responses with styled custom pages - [internal/net/gphttp/middleware](llms.mdx/docs/impl/internal-net-gphttp-middleware): HTTP middleware framework providing request/response processing, middleware chaining, and composition from YAML files - [internal/net/gphttp](llms.mdx/docs/impl/internal-net-gphttp): HTTP utilities package providing transport configuration, default HTTP client, and a wrapper around `http.ServeMux` with panic recovery - [internal/net](llms.mdx/docs/impl/internal-net): The net package provides network utility functions for GoDoxy, including TCP connection testing and network-related helpers - [internal/notif](llms.mdx/docs/impl/internal-notif): The notif package provides a notification dispatching system for GoDoxy, supporting multiple providers (Webhook, Gotify, Ntfy) with retry logic and exponential backoff - [internal/proxmox](llms.mdx/docs/impl/internal-proxmox): The proxmox package provides Proxmox VE integration for GoDoxy, enabling management of Proxmox LXC containers - [internal/route/provider](llms.mdx/docs/impl/internal-route-provider): Discovers and loads routes from Docker containers, YAML files, and remote agents - [internal/route/rules/presets](llms.mdx/docs/impl/internal-route-rules-presets): Provides embedded, pre-configured rule sets for common routing patterns - [internal/route/rules](llms.mdx/docs/impl/internal-route-rules): Implements a rule engine for HTTP request/response processing, enabling conditional routing, header manipulation, authentication, and more - [internal/route/stream](llms.mdx/docs/impl/internal-route-stream): Implements TCP and UDP stream proxying for non-HTTP protocols - [internal/route](llms.mdx/docs/impl/internal-route): Route configuration, runtime metadata, and lifecycle glue - [internal/routeimpl](llms.mdx/docs/impl/internal-routeimpl): Concrete route implementations - [internal/routevalidate](llms.mdx/docs/impl/internal-routevalidate): Route finalization, validation, and implementation construction - [internal/routing](llms.mdx/docs/impl/internal-routing): Shared routing contracts - [internal/serialization](llms.mdx/docs/impl/internal-serialization): Flexible, type-safe serialization/deserialization with validation support for GoDoxy configuration - [internal/watcher](llms.mdx/docs/impl/internal-watcher): Provides file and Docker event watching capabilities for GoDoxy, enabling dynamic configuration updates - [socket-proxy/cmd](llms.mdx/docs/impl/socket-proxy-cmd): The entry point for the Docker Socket Proxy sub-project, a secure proxy that exposes the Docker socket with fine-grained access control - [socket-proxy/pkg/reverseproxy](llms.mdx/docs/impl/socket-proxy-pkg-reverseproxy): This package provides an HTTP reverse proxy implementation for proxying requests to Unix sockets (typically Docker sockets). It is based on Go's `net/http/httputil.ReverseProxy` with simplifications for socket proxying use cases - [socket-proxy/pkg](llms.mdx/docs/impl/socket-proxy-pkg): Core package for the Docker Socket Proxy, providing secure access to the Docker API with endpoint filtering and access control ## godoxy - [Benchmarks](llms.mdx/docs/godoxy/Benchmarks-and-Resource-Usage): Benchmark and resource usage of GoDoxy - [Gallery](llms.mdx/docs/godoxy/Gallery): Gallery of GoDoxy - [Setup](llms.mdx/docs/godoxy/Setup): Setup GoDoxy - [API Reference](llms.mdx/docs/openapi): Generated reference for the GoDoxy HTTP API. - [Access Control](llms.mdx/docs/godoxy/advanced-topics/Access-Control): Configure access control for GoDoxy - [Certificates](llms.mdx/docs/godoxy/advanced-topics/Certificates): Configure certificates for GoDoxy - [Domain Matching](llms.mdx/docs/godoxy/advanced-topics/Domain-Matching): Configure domain matching for GoDoxy - [Health monitoring](llms.mdx/docs/godoxy/advanced-topics/Health-Monitoring): Configure health monitoring for GoDoxy - [Idle Sleep](llms.mdx/docs/godoxy/advanced-topics/Idle-Sleep): Automatically sleep idle containers and wake them on traffic. Saves resources for infrequently used services - [Inbound mTLS](llms.mdx/docs/godoxy/advanced-topics/Inbound-MTLS): Require client certificates on HTTPS using named trust profiles - [Load Balancing](llms.mdx/docs/godoxy/advanced-topics/Load-Balancing): Distribute traffic across multiple backend instances for high availability and scalability - [Notifications](llms.mdx/docs/godoxy/advanced-topics/Notifications): Receive alerts about service health, certificate renewals, and configuration errors - [CSS Injection](llms.mdx/docs/godoxy/customization/CSS-Injection): Inject CSS into the HTML of your application - [Custom Error Pages](llms.mdx/docs/godoxy/customization/Custom-Error-Pages): Configure custom HTML error pages to provide branded, user-friendly responses when errors occur - [Short Links](llms.mdx/docs/godoxy/customization/Short-Links): Redirect short, memorable links to your services using the built-in `go/` shortlink feature - [Dashboard Configuration](llms.mdx/docs/godoxy/customization/WebUI): Customize how applications appear on the GoDoxy dashboard. Configure display names, icons, categories, and descriptions - [v0.29.0](llms.mdx/docs/godoxy/migration/v0.29.0): Breaking changes and Docker upgrades from v0.28.1 - [Basics](llms.mdx/docs/godoxy/getting-started/Basics): Basics of GoDoxy - [Configuring GoDoxy](llms.mdx/docs/godoxy/getting-started/Configuring-GoDoxy): undefined - [Configuring Routes](llms.mdx/docs/godoxy/getting-started/Configuring-Routes): Routes define how GoDoxy directs traffic to your applications. This guide covers all configuration methods, from Docker labels to route files - [DNS-01 Providers](llms.mdx/docs/godoxy/getting-started/DNS-01-Providers): Configure DNS-01 providers for GoDoxy - [Examples](llms.mdx/docs/godoxy/getting-started/Examples): Examples of how to configure GoDoxy - [Multi Docker Nodes](llms.mdx/docs/godoxy/getting-started/Multi-Docker-Nodes): Setup multi docker nodes for GoDoxy - [OpenID Connect (OIDC)](llms.mdx/docs/godoxy/getting-started/OIDC): Configure OIDC authentication for GoDoxy and per-application middleware - [Proxmox Integration](llms.mdx/docs/godoxy/getting-started/Proxmox): Manage Proxmox VE PVE nodes and LXC containers with GoDoxy. This integration provides node-level monitoring, container lifecycle management, power operations, and resource monitoring - [Middlewares](llms.mdx/docs/godoxy/advanced-topics/middlewares): Configure middlewares for GoDoxy - [Actions](llms.mdx/docs/godoxy/advanced-topics/rule-based-routing/Actions): Actions are the command lines inside `{ ... }`. In YAML, the same commands go in `do:`. - [Conditions](llms.mdx/docs/godoxy/advanced-topics/rule-based-routing/Conditions): Conditions are used to match the request and determine if the rule should be applied. - [Rule-Based Routing](llms.mdx/docs/godoxy/advanced-topics/rule-based-routing): Configure rule-based routing for GoDoxy - [CIDR Whitelist](llms.mdx/docs/godoxy/advanced-topics/middlewares/access-control/CIDR-Whitelist): Allow/deny requests by IP range - [Rate Limiter](llms.mdx/docs/godoxy/advanced-topics/middlewares/access-control/Rate-Limiter): Limit request rate per client - [Crowdsec AppSec](llms.mdx/docs/godoxy/advanced-topics/middlewares/authentication-and-security/Crowdsec-AppSec): Bot protection with Crowdsec AppSec - [Forward Auth](llms.mdx/docs/godoxy/advanced-topics/middlewares/authentication-and-security/Forward-Auth): Forward authentication to another service - [OIDC](llms.mdx/docs/godoxy/advanced-topics/middlewares/authentication-and-security/OIDC): OpenID Connect authentication - [hCaptcha](llms.mdx/docs/godoxy/advanced-topics/middlewares/authentication-and-security/hCaptcha): Bot protection with hCaptcha - [Cloudflare Real IP](llms.mdx/docs/godoxy/advanced-topics/middlewares/ip-resolution/Cloudflare-Real-IP): Resolve client IP from Cloudflare proxy headers - [Real IP](llms.mdx/docs/godoxy/advanced-topics/middlewares/ip-resolution/Real-IP): Resolve client IP from proxy headers - [Modify Request](llms.mdx/docs/godoxy/advanced-topics/middlewares/request-response-modification/Modify-Request): Modify request headers and paths - [Modify Response](llms.mdx/docs/godoxy/advanced-topics/middlewares/request-response-modification/Modify-Response): Modify response headers and paths - [X-Forwarded Headers](llms.mdx/docs/godoxy/advanced-topics/middlewares/request-response-modification/X-Forwarded-Headers): Modify X-Forwarded headers - [Custom Error Pages](llms.mdx/docs/godoxy/advanced-topics/middlewares/traffic-control/Custom-Error-Pages): Customize error responses - [Redirect HTTP](llms.mdx/docs/godoxy/advanced-topics/middlewares/traffic-control/Redirect-HTTP): Redirect HTTP requests to HTTPS - [Modify HTML](llms.mdx/docs/godoxy/advanced-topics/middlewares/content-modification/Modify-HTML): Modify the HTML content - [Themed](llms.mdx/docs/godoxy/advanced-topics/middlewares/content-modification/Themed): Inject theme CSS into the HTML - [Create a new agent](llms.mdx/docs/openapi/create): Create a new agent and return the docker compose file, encrypted CA and client PEMs The returned PEMs are encrypted with a random key and will be used for verification when adding a new agent - [List routes](llms.mdx/docs/openapi/list): List routes - [Verify a new agent](llms.mdx/docs/openapi/verify): Verify a new agent and return the number of routes added - [Auth Callback](llms.mdx/docs/openapi/callback): Handles the callback from the provider after successful authentication - [Check authentication status](llms.mdx/docs/openapi/check): Checks if the user is authenticated by validating their token - [Login](llms.mdx/docs/openapi/login): Initiates the login process by redirecting the user to the provider's login page - [Logout](llms.mdx/docs/openapi/logout): Logs out the user by invalidating the token - [Get docker info](llms.mdx/docs/openapi/info): Get docker info - [Renew cert](llms.mdx/docs/openapi/renew): Renew cert - [Get container](llms.mdx/docs/openapi/container): Get container by container id - [Get containers](llms.mdx/docs/openapi/containers): Get containers - [Get docker container logs](llms.mdx/docs/openapi/logs): Get docker container logs by container id - [Restart container](llms.mdx/docs/openapi/restart): Restart container by container id - [Start container](llms.mdx/docs/openapi/start): Start container by container id - [Get container stats](llms.mdx/docs/openapi/docker/stats/id/get): Get container stats by container id - [Stop container](llms.mdx/docs/openapi/stop): Stop container by container id - [Get events history](llms.mdx/docs/openapi/events): undefined - [Get favicon](llms.mdx/docs/openapi/favicon): Get favicon - [Get file content](llms.mdx/docs/openapi/get): Get file content - [Set file content](llms.mdx/docs/openapi/set): Set file content - [Validate route](llms.mdx/docs/openapi/validate): Validate route, - [Get routes health info](llms.mdx/docs/openapi/health): Get health info by route name - [List homepage categories](llms.mdx/docs/openapi/categories): List homepage categories - [Increment item click](llms.mdx/docs/openapi/item-click): Increment item click. - [Homepage items](llms.mdx/docs/openapi/items): Homepage items - [Set homepage category order](llms.mdx/docs/openapi/set-category-order): Set homepage category order. - [Override single homepage item](llms.mdx/docs/openapi/set-item): Override single homepage item. - [Set homepage item all sort order](llms.mdx/docs/openapi/set-item-all-sort-order): Set homepage item all sort order. - [Set homepage item fav sort order](llms.mdx/docs/openapi/set-item-fav-sort-order): Set homepage item fav sort order. - [Set homepage item favorite](llms.mdx/docs/openapi/set-item-favorite): Set homepage item favorite. - [Set homepage item sort order](llms.mdx/docs/openapi/set-item-sort-order): Set homepage item sort order. - [Set homepage item visibility](llms.mdx/docs/openapi/set-item-visible): POST list of item ids and visibility value. - [Override multiple homepage items](llms.mdx/docs/openapi/set-items-batch): Override multiple homepage items. - [List icons](llms.mdx/docs/openapi/icons): List icons - [Get system info](llms.mdx/docs/openapi/all_system_info): Get system info - [Get system info](llms.mdx/docs/openapi/system_info): Get system info - [Get uptime](llms.mdx/docs/openapi/uptime): Get uptime - [Get journalctl output](llms.mdx/docs/openapi/journalctl): Get journalctl output for node or LXC container. If vmid is not provided, streams node journalctl. - [Restart LXC container](llms.mdx/docs/openapi/lxcRestart): Restart LXC container by node and vmid - [Start LXC container](llms.mdx/docs/openapi/lxcStart): Start LXC container by node and vmid - [Stop LXC container](llms.mdx/docs/openapi/lxcStop): Stop LXC container by node and vmid - [Get proxmox node stats](llms.mdx/docs/openapi/nodeStats): Get proxmox node stats in json - [Get proxmox VM stats](llms.mdx/docs/openapi/vmStats): Get proxmox VM stats in format of "STATUS|CPU%%|MEM USAGE/LIMIT|MEM%%|NET I/O|BLOCK I/O" - [Get tail output](llms.mdx/docs/openapi/tail): Get tail output for node or LXC container. If vmid is not provided, streams node tail. - [List routes by provider](llms.mdx/docs/openapi/byProvider): List routes by provider - [Rule Playground](llms.mdx/docs/openapi/playground): Test rules against mock request/response - [List route providers](llms.mdx/docs/openapi/providers): List route providers - [List route](llms.mdx/docs/openapi/route): List route - [Get GoDoxy stats](llms.mdx/docs/openapi/stats): Get stats - [Get version](llms.mdx/docs/openapi/version): Get the version of the GoDoxy - [Get WebUI config](llms.mdx/docs/openapi/config): Get WebUI config