Parses Blocky's /metrics (Prometheus text) endpoint to show: - Blocking status (Enabled/Disabled) - Blocked domains count (denylist entries) - Total queries served - Cache hit rate % No REST stats endpoint exists in Blocky, so the proxy handler fetches and parses the Prometheus text format directly. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1.6 KiB
1.6 KiB
homepage-blocky-widget
A Blocky service widget for the Homepage dashboard.
Blocky is a DNS ad-blocker and resolver. This widget shows live stats pulled
from Blocky's Prometheus /metrics endpoint.
Preview
┌─────────────────────────────────────────┐
│ Pi DNS │
│ DNS ad-blocker │
│ │
│ Status Enabled │
│ Blocked Domains 84,242 │
│ Total Queries 333 │
│ Cache Hit Rate 10.5% │
└─────────────────────────────────────────┘
Requirements
- Blocky with
ports.httpconfigured (default: 4000) - Prometheus metrics enabled in Blocky config:
prometheus: enable: true path: /metrics
Installation
See INSTALL.md.
Why a custom widget?
Blocky has no REST endpoint for query statistics — only /api/blocking/status
(toggle state) and /metrics (Prometheus text format). This widget includes a
small proxy handler that fetches and parses the metrics endpoint, returning the
relevant values as JSON to the React component.
There is an open feature request at the official Homepage repo: https://github.com/gethomepage/homepage/discussions/2732
Once it reaches the required 20 upvotes, this widget can be submitted upstream.