Blocky DNS ad-blocker widget for Homepage dashboard
Find a file
Alkim Ake Gozen a7fa4dbaf1
Some checks failed
Lint / eslint (push) Failing after 1m32s
fix: correct imports and add ESLint CI
- 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>
2026-05-21 13:34:33 +09:00
.forgejo/workflows fix: correct imports and add ESLint CI 2026-05-21 13:34:33 +09:00
src/widgets/blocky fix: correct imports and add ESLint CI 2026-05-21 13:34:33 +09:00
translations feat: initial Blocky widget for Homepage dashboard 2026-05-21 11:59:09 +09:00
.eslintrc.json fix: correct imports and add ESLint CI 2026-05-21 13:34:33 +09:00
.gitignore feat: initial Blocky widget for Homepage dashboard 2026-05-21 11:59:09 +09:00
INSTALL.md feat: initial Blocky widget for Homepage dashboard 2026-05-21 11:59:09 +09:00
package.json fix: correct imports and add ESLint CI 2026-05-21 13:34:33 +09:00
README.md feat: initial Blocky widget for Homepage dashboard 2026-05-21 11:59:09 +09:00

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.http configured (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.