DAppNode package for dabeacon-indexer — a per-validator beacon-chain indexer with web UI, JSON API, and live SSE stream.
Each variant under package_variants/ produces a distinct DAppNode package:
| Network | Package name |
|---|---|
| Ethereum mainnet | dabeacon-indexer.dnp.dappnode.eth |
| Hoodi | dabeacon-indexer-hoodi.dnp.dappnode.eth |
| Gnosis | dabeacon-indexer-gnosis.dnp.dappnode.eth |
- Auto-imports validator pubkeys from your local Web3Signer install for the network and resolves them to validator indices via the beacon node.
- Optionally tracks additional validator indices entered manually in the wizard.
- Writes per-epoch attestation, proposal, and sync-committee outcomes (with rewards) into a bundled Postgres.
- Serves the indexer's web UI at the package's
.dappnodeURL.
| Field | Required | Purpose |
|---|---|---|
ENABLE_WEB3SIGNER_IMPORT |
no | Toggle Web3Signer auto-discovery. Defaults to true. |
STATIC_VALIDATORS |
no | Comma-separated list of additional validator indices. |
BACKFILL_BEACON_URL |
no | Optional separate archive-capable beacon node for historical backfill. Strongly recommended if your selected consensus client isn't archive-capable. |
SCAN_MODE |
no | auto (default) / sparse / dense — see upstream README. |
API_KEY |
no | If set, required for the live SSE endpoint. |
The beacon node URL and Web3Signer URL are not wizard fields — they're inferred at startup from the network and from your DAppNode Stakers UI selection (see below).
The package wraps the upstream image at ghcr.io/dappnode/dabeacon_indexer:<UPSTREAM_VERSION> with a thin entrypoint that:
- Reads
_DAPPNODE_GLOBAL_CONSENSUS_CLIENT_<NETWORK>(set by the DAppNode Stakers UI) and infers the beacon URL —http://beacon-chain.<client-alias>:<port>for most clients, with Nimbus's combinedbeacon-validator:4500handled. If no client is selected for this network, the package fails fast with an actionable error. - Infers the Web3Signer URL from the network (
web3signer.web3signer.dappnode:9000for mainnet,web3signer.web3signer-<network>.dappnode:9000otherwise). - Reads
STATIC_VALIDATORSfrom the wizard. - If Web3Signer import is enabled, calls
${WEB3SIGNER_URL}/api/v1/eth2/publicKeysfor the managed pubkeys. - Resolves each pubkey to a validator index via
${BEACON_URL}/eth/v1/beacon/states/head/validators/{pubkey}. - Sorts and deduplicates the combined list, exports it as
VALIDATOR_INDICES, and execs the upstream binary.
The Stakers integration uses helpers from dappnode/staker-package-scripts — the same package the official consensus-client packages rely on, so URL conventions stay in sync.
A bundled postgres:17-alpine provides storage; data persists in the postgres-data volume.
GPL-3.0-or-later.