Caddy Dashboard
A caddy dashboard connects to the web server admin API or metrics port. It shows live traffic stats, error logs, and routing rules in a browser. Web servers do not include a built-in graphic screen by default. Teams set up third-party web tools or log readers to view server status. When teams open the admin port to a dashboard, permissions often become too broad. Anyone who reaches that port can read or change live server routes. A safer setup limits who can reach the admin port and what actions
GitLab Security Dashboard: the complete guide
Architecture patterns, implementation strategies, and security best practices. Delivered to your inbox.
A caddy dashboard connects to the web server admin API or metrics port. It shows live traffic stats, error logs, and routing rules in a browser. Web servers do not include a built-in graphic screen by default. Teams set up third-party web tools or log readers to view server status. When teams open the admin port to a dashboard, permissions often become too broad. Anyone who reaches that port can read or change live server routes. A safer setup limits who can reach the admin port and what actions run.
How a caddy dashboard works with the server
The web server runs a local admin interface and an optional metrics endpoint. A caddy dashboard reads data from these two local sources to build charts. For traffic charts, the server exposes counters for requests, response times, and errors. A time-series collector scrapes these counters every few seconds and stores the numbers. A graphic tool then reads that database and draws charts for the team. This metrics path is read-only and does not change how the server runs.
Log dashboards work in a similar way to metrics tools. The server writes structured log entries for every web request it handles. Each entry holds the client address, path, status code, and response time. A log shipper reads these files and sends them to a central store. Engineers then open a web screen to filter errors and inspect slow paths. This helps the team find broken links or sudden traffic spikes fast.
Some teams also use a web screen to manage server routing rules. Unlike metrics, this screen talks straight to the live admin API endpoint. It reads the active server state as a single document from the port. When an engineer changes a route on the screen, it sends a write request. The web server loads the new state right away without dropping live requests.
What native admin controls solve and where gaps remain
By default, the web server binds its admin port to the local machine. This stops outside callers on the internet from reading or changing server rules. Teams can also require shared keys or client certificates on the admin endpoint. These native checks verify that a request comes from a known dashboard or host. They work well when a single automated tool manages the whole web server.
The problem starts when human engineers need to reach the admin endpoint too. To let a remote dashboard connect, teams often open the port on the network. Once a caller passes the network check, the admin API grants full control. There are no fine-grained roles inside the native admin port itself. A user who can read the current routes can also overwrite the whole setup. They can turn off TLS, reroute production traffic, or read secret values in memory.
GitLab Security Dashboard: architecture patterns and best practices
Continue reading? Get the full guide.
Free. No spam. Unsubscribe anytime.
Shared admin keys also make audit logs hard to read during an incident. The server log shows that an API call changed a route at a given time. It does not show which engineer clicked the button or ran the command. Network checks decide who can reach the port, not what each request can do. Teams need a way to tie every admin action to a specific person. They also need a way to approve sensitive changes before they hit the server.
Securing web server admin and log workflows
To reduce risk, teams separate read-only charts from live admin write actions. Metrics and log tools should only read from the metrics port and log files. They never need a direct path to the live admin control port. If a chart tool gets breached, the attacker still cannot change server routing rules.
When engineers inspect request logs on a dashboard, sensitive data is another risk. Web headers and query strings can hold emails, phone numbers, or card numbers. Masking rules can rewrite those matched fields in results before they reach the screen. For live admin changes, teams should avoid opening the control port to user machines. Instead, every admin request should require an identity check and a clear audit trail.
Add runtime guardrails and masking beside your databases and APIs
Login rules, role grants, and CI checks govern who connects to your stack. Yet any allowed script, engineer, or AI agent still runs commands with the full scope of its role. For workloads on Postgres, MySQL, SQL Server, MongoDB, ClickHouse, Kubernetes, SSH, or internal HTTP services, hoop.dev sits beside the service as an open-source proxy, a sidecar for your database or API.
Before a query runs, hoop.dev guardrails check the statement against your rules. An AI Analyzer you configure can score intent or hold risky calls for human review. Next, hoop.dev data masking rewrites sensitive fields in responses, and each verdict is logged per listener. Explore the MIT-licensed project on GitHub.
Frequently asked questions
Does the web server include a built-in graphic dashboard?
No, the core binary runs through a text file or an HTTP API. Teams add an external metrics reader or web UI to view charts in a browser.
Is it safe to expose the admin API port to the public network?
No, the admin port controls the entire web server state and holds sensitive settings. Keep it bound to localhost or protect it behind strict identity and network checks.
How can teams view server health without using the admin write API?
Turn on the built-in metrics endpoint and structured access logs in your setup. Point your chart and log tools to those read-only sources instead of the admin port.
Related guides
In this post