Blocky DNS ad-blocker widget for Homepage dashboard
|
Some checks failed
Lint / eslint (push) Failing after 1m32s
- Fix proxy.js: use utils/config/service-helpers (correct path for Homepage v1.7.0; utils/service-helpers does not exist) - Fix component.jsx: blank line between external and utils/ imports as required by Homepage ESLint import/order rule - Add .eslintrc.json mirroring Homepage's ESLint config - Add package.json with ESLint dev dependencies - Add Forgejo Actions workflow to lint on push/PR Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| .forgejo/workflows | ||
| src/widgets/blocky | ||
| translations | ||
| .eslintrc.json | ||
| .gitignore | ||
| INSTALL.md | ||
| package.json | ||
| README.md | ||
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.