Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
- ADD_CHAIN138_TO_LEDGER_LIVE: Ledger form done; public code review repo bis-innovations/LedgerLive; init/push commands - CONTRACT_DEPLOYMENT_RUNBOOK: Chain 138 gas price 1 gwei, 36-addr check, TransactionMirror workaround - CONTRACT_*: AddressMapper, MirrorManager deployed 2026-02-12; 36-address on-chain check - NEXT_STEPS_FOR_YOU: Ledger done; steps completable now (no LAN); run-completable-tasks-from-anywhere - MASTER_INDEX, OPERATOR_OPTIONAL, SMART_CONTRACTS_INVENTORY_SIMPLE: updates - LEDGER_BLOCKCHAIN_INTEGRATION_COMPLETE: bis-innovations/LedgerLive reference Co-authored-by: Cursor <cursoragent@cursor.com>
462 lines
11 KiB
Markdown
462 lines
11 KiB
Markdown
# Besu Configuration Guide
|
|
|
|
**Last Updated:** 2026-01-31
|
|
**Document Version:** 1.0
|
|
**Status:** Active Documentation
|
|
|
|
---
|
|
|
|
**Date**: 2026-01-17
|
|
**Version**: Besu v23.10.0+
|
|
**Purpose**: Comprehensive configuration reference for Besu nodes
|
|
|
|
---
|
|
|
|
## Overview
|
|
|
|
This guide provides complete configuration reference for Hyperledger Besu v23.10.0+. It covers valid configuration options, node type-specific patterns, and best practices.
|
|
|
|
---
|
|
|
|
## Valid Configuration Options (Besu v23.10.0+)
|
|
|
|
### Deprecated Options (Removed)
|
|
|
|
The following options are **deprecated** and should **not be used**:
|
|
|
|
| Option | Status | Replacement |
|
|
|--------|--------|-------------|
|
|
| `log-destination` | ❌ Deprecated | Use `logging` option |
|
|
| `fast-sync-min-peers` | ❌ Incompatible with FULL | Remove when using `sync-mode="FULL"` |
|
|
| `database-path` | ❌ Deprecated | Use `data-path` instead |
|
|
| `trie-logs-enabled` | ❌ Deprecated | Removed - no replacement |
|
|
| `accounts-enabled` | ❌ Deprecated | Removed - no replacement |
|
|
| `max-remote-initiated-connections` | ❌ Deprecated | Removed - no replacement |
|
|
| `rpc-http-host-allowlist` | ❌ Deprecated | Use firewall rules + CORS |
|
|
| `rpc-tx-feecap="0x0"` | ❌ Invalid | Remove or use valid Wei value |
|
|
| `tx-pool-max-size` | ❌ Legacy | Incompatible with layered implementation |
|
|
| `tx-pool-price-bump` | ❌ Legacy | Incompatible with layered implementation |
|
|
| `tx-pool-retention-hours` | ❌ Legacy | Incompatible with layered implementation |
|
|
|
|
---
|
|
|
|
## Core Configuration Options
|
|
|
|
### Network Configuration
|
|
|
|
```toml
|
|
# Network identifier
|
|
network-id=138
|
|
|
|
# P2P network binding
|
|
p2p-host="0.0.0.0"
|
|
p2p-port=30303
|
|
|
|
# Maximum peer connections
|
|
max-peers=25
|
|
|
|
# Enable/disable peer discovery
|
|
discovery-enabled=true
|
|
```
|
|
|
|
### Data Storage
|
|
|
|
```toml
|
|
# Root data directory (contains database, node keys)
|
|
data-path="/data/besu"
|
|
|
|
# Genesis block configuration
|
|
genesis-file="/genesis/genesis.json"
|
|
```
|
|
|
|
### Consensus Configuration
|
|
|
|
```toml
|
|
# Consensus protocol (detected from genesis.json for QBFT/IBFT)
|
|
miner-enabled=false
|
|
|
|
# Sync mode (FULL, FAST, or SNAP)
|
|
sync-mode="FULL"
|
|
```
|
|
|
|
### Logging Configuration
|
|
|
|
```toml
|
|
# Logging level: OFF, FATAL, WARN, INFO, DEBUG, TRACE, ALL
|
|
logging="WARN" # Use WARN for validators/RPC, INFO for archive nodes
|
|
```
|
|
|
|
**Logging Strategy**:
|
|
- **Validators**: `WARN` (minimal logs, consensus critical)
|
|
- **RPC Nodes**: `WARN` (minimal logs, performance)
|
|
- **Sentry/Archive**: `INFO` (detailed logs for archival)
|
|
|
|
---
|
|
|
|
## Node Type Configurations
|
|
|
|
### Validator Node Configuration
|
|
|
|
**Purpose**: Participate in QBFT consensus, block production
|
|
|
|
```toml
|
|
# Besu Configuration for Validator Nodes
|
|
data-path="/data"
|
|
genesis-file="/config/genesis.json"
|
|
|
|
network-id=138
|
|
p2p-host="0.0.0.0"
|
|
p2p-port=30303
|
|
|
|
# Consensus
|
|
miner-enabled=false
|
|
sync-mode="FULL"
|
|
|
|
# RPC Configuration (DISABLED for security)
|
|
rpc-http-enabled=false
|
|
rpc-ws-enabled=false
|
|
|
|
# Logging (minimal)
|
|
logging="WARN"
|
|
|
|
# Permissioning
|
|
permissions-nodes-config-file-enabled=true
|
|
permissions-nodes-config-file="/config/permissions-nodes.toml"
|
|
permissions-accounts-config-file-enabled=true
|
|
permissions-accounts-config-file="/config/permissions-accounts.toml"
|
|
|
|
# Network
|
|
static-nodes-file="/config/static-nodes.json"
|
|
discovery-enabled=true
|
|
|
|
# P2P
|
|
max-peers=25
|
|
|
|
# Metrics
|
|
metrics-enabled=true
|
|
metrics-port=9545
|
|
metrics-host="0.0.0.0"
|
|
```
|
|
|
|
**Key Features**:
|
|
- ✅ RPC disabled (security)
|
|
- ✅ Minimal logging (WARN)
|
|
- ✅ Full sync mode
|
|
- ✅ Node and account permissioning enabled
|
|
|
|
---
|
|
|
|
### RPC Node Configuration
|
|
|
|
**Purpose**: Serve JSON-RPC API requests (dApps, indexers, tools)
|
|
|
|
#### Core RPC Node
|
|
|
|
```toml
|
|
# Besu Configuration for Core/Admin RPC Nodes
|
|
data-path="/data/besu"
|
|
genesis-file="/genesis/genesis.json"
|
|
|
|
network-id=138
|
|
p2p-host="0.0.0.0"
|
|
p2p-port=30303
|
|
|
|
miner-enabled=false
|
|
sync-mode="FULL"
|
|
|
|
# RPC Configuration (full admin APIs)
|
|
rpc-http-enabled=true
|
|
rpc-http-host="0.0.0.0"
|
|
rpc-http-port=8545
|
|
rpc-http-api=["ETH","NET","WEB3","TXPOOL","QBFT","ADMIN","DEBUG","TRACE"]
|
|
# CORS: Internal network only
|
|
rpc-http-cors-origins=["http://192.168.11.0/24","http://localhost","http://127.0.0.1"]
|
|
|
|
rpc-ws-enabled=true
|
|
rpc-ws-host="0.0.0.0"
|
|
rpc-ws-port=8546
|
|
rpc-ws-api=["ETH","NET","WEB3","TXPOOL","QBFT","ADMIN"]
|
|
rpc-ws-origins=["*"]
|
|
|
|
# Logging (minimal)
|
|
logging="WARN"
|
|
|
|
# Permissioning
|
|
permissions-nodes-config-file-enabled=true
|
|
permissions-nodes-config-file="/var/lib/besu/permissions/permissions-nodes.toml"
|
|
|
|
# Network
|
|
static-nodes-file="/var/lib/besu/static-nodes.json"
|
|
discovery-enabled=false # Core RPC: internal only
|
|
|
|
# P2P
|
|
max-peers=25
|
|
|
|
# Metrics
|
|
metrics-enabled=true
|
|
metrics-port=9545
|
|
metrics-host="0.0.0.0"
|
|
```
|
|
|
|
#### Public RPC Node
|
|
|
|
```toml
|
|
# Minimal read-only APIs for public access
|
|
rpc-http-api=["ETH","NET","WEB3"]
|
|
rpc-http-cors-origins=["*"]
|
|
rpc-ws-enabled=false
|
|
discovery-enabled=true
|
|
```
|
|
|
|
#### ThirdWeb RPC Node
|
|
|
|
```toml
|
|
# ThirdWeb-compatible APIs
|
|
rpc-http-api=["ETH","NET","WEB3","DEBUG","TRACE"]
|
|
rpc-http-cors-origins=["*"]
|
|
rpc-ws-enabled=true
|
|
max-peers=50 # Higher peer count for connectivity
|
|
rpc-http-timeout=60
|
|
```
|
|
|
|
**Key Features**:
|
|
- ✅ RPC enabled with appropriate APIs
|
|
- ✅ Minimal logging (WARN)
|
|
- ✅ CORS configured appropriately
|
|
- ✅ Permissioning enabled
|
|
|
|
---
|
|
|
|
### Sentry Node Configuration
|
|
|
|
**Purpose**: Full archive nodes, P2P relay between validators and external peers
|
|
|
|
```toml
|
|
# Besu Configuration for Sentry Nodes
|
|
data-path="/data/besu"
|
|
genesis-file="/genesis/genesis.json"
|
|
|
|
network-id=138
|
|
p2p-host="0.0.0.0"
|
|
p2p-port=30303
|
|
|
|
miner-enabled=false
|
|
sync-mode="FULL" # Full archive mode
|
|
|
|
# RPC Configuration (internal only)
|
|
rpc-http-enabled=true
|
|
rpc-http-host="0.0.0.0"
|
|
rpc-http-port=8545
|
|
rpc-http-api=["ETH","NET","WEB3","ADMIN"]
|
|
rpc-http-cors-origins=["*"]
|
|
|
|
rpc-ws-enabled=true
|
|
rpc-ws-host="0.0.0.0"
|
|
rpc-ws-port=8546
|
|
rpc-ws-api=["ETH","NET","WEB3"]
|
|
|
|
# Logging (archive - detailed logs)
|
|
logging="INFO"
|
|
|
|
# Permissioning
|
|
permissions-nodes-config-file-enabled=true
|
|
permissions-nodes-config-file="/var/lib/besu/permissions/permissions-nodes.toml"
|
|
|
|
# Network
|
|
static-nodes-file="/var/lib/besu/static-nodes.json"
|
|
discovery-enabled=true # Open P2P discovery
|
|
|
|
# P2P
|
|
max-peers=25
|
|
|
|
# Metrics
|
|
metrics-enabled=true
|
|
metrics-port=9545
|
|
metrics-host="0.0.0.0"
|
|
```
|
|
|
|
**Key Features**:
|
|
- ✅ Full archive mode (`sync-mode="FULL"`)
|
|
- ✅ Detailed logging (INFO)
|
|
- ✅ Open P2P discovery
|
|
- ✅ Internal RPC access
|
|
|
|
---
|
|
|
|
## Configuration Patterns
|
|
|
|
### Logging Levels by Use Case
|
|
|
|
| Node Type | Logging Level | Rationale |
|
|
|-----------|---------------|-----------|
|
|
| Validator | `WARN` | Minimal logs, reduce I/O, focus on errors |
|
|
| RPC | `WARN` | Minimal logs, reduce I/O, better performance |
|
|
| Sentry/Archive | `INFO` | Detailed logs for archival and debugging |
|
|
|
|
### Sync Modes
|
|
|
|
| Sync Mode | Description | Use Case |
|
|
|-----------|-------------|----------|
|
|
| `FULL` | Full blockchain sync, all history | Validators, Archive nodes |
|
|
| `FAST` | Fast sync, recent history only | Non-archive RPC nodes |
|
|
| `SNAP` | Snapshot sync (if available) | Quick bootstrap |
|
|
|
|
**Note**: `fast-sync-min-peers` option is incompatible with `FULL` sync mode.
|
|
|
|
### RPC API Selection
|
|
|
|
#### Minimal (Public RPC)
|
|
```toml
|
|
rpc-http-api=["ETH","NET","WEB3"]
|
|
```
|
|
|
|
#### Standard (Application RPC)
|
|
```toml
|
|
rpc-http-api=["ETH","NET","WEB3","TXPOOL","QBFT"]
|
|
```
|
|
|
|
#### Full Admin (Core RPC)
|
|
```toml
|
|
rpc-http-api=["ETH","NET","WEB3","TXPOOL","QBFT","ADMIN","DEBUG","TRACE"]
|
|
```
|
|
|
|
---
|
|
|
|
## Security Configuration
|
|
|
|
### CORS Configuration
|
|
|
|
```toml
|
|
# Internal network only (Core RPC)
|
|
rpc-http-cors-origins=["http://192.168.11.0/24","http://localhost","http://127.0.0.1"]
|
|
|
|
# Public access (Public RPC)
|
|
rpc-http-cors-origins=["*"]
|
|
```
|
|
|
|
**Best Practice**: Use firewall rules in combination with CORS for defense in depth.
|
|
|
|
### Permissioning
|
|
|
|
#### Node Permissioning
|
|
```toml
|
|
permissions-nodes-config-file-enabled=true
|
|
permissions-nodes-config-file="/var/lib/besu/permissions/permissions-nodes.toml"
|
|
```
|
|
|
|
#### Account Permissioning (Validators)
|
|
```toml
|
|
permissions-accounts-config-file-enabled=true
|
|
permissions-accounts-config-file="/config/permissions-accounts.toml"
|
|
```
|
|
|
|
---
|
|
|
|
## Common Configuration Issues
|
|
|
|
### Issue: Unknown Options Error
|
|
|
|
**Symptom**: `Unknown options in TOML configuration file`
|
|
|
|
**Cause**: Using deprecated options from older Besu versions
|
|
|
|
**Solution**: Remove deprecated options (see list above)
|
|
|
|
### Issue: Invalid rpc-tx-feecap Value
|
|
|
|
**Symptom**: Configuration parsing error
|
|
|
|
**Cause**: `rpc-tx-feecap="0x0"` cannot be converted to Wei
|
|
|
|
**Solution**: Remove the option or use valid Wei value
|
|
|
|
### Issue: fast-sync-min-peers with FULL sync
|
|
|
|
**Symptom**: Configuration warning or error
|
|
|
|
**Cause**: `fast-sync-min-peers` is incompatible with `sync-mode="FULL"`
|
|
|
|
**Solution**: Remove `fast-sync-min-peers` when using FULL sync mode
|
|
|
|
---
|
|
|
|
## Configuration Validation
|
|
|
|
Use the validation script to check configurations:
|
|
|
|
```bash
|
|
# Validate all configs
|
|
./scripts/validate-besu-config.sh
|
|
|
|
# Validate specific config
|
|
./scripts/validate-besu-config.sh <config-file>
|
|
```
|
|
|
|
Validation checks:
|
|
- ✅ TOML syntax
|
|
- ✅ Deprecated options (should be 0)
|
|
- ✅ Required options present
|
|
- ✅ Valid option values (log levels, sync modes)
|
|
- ✅ Path references reasonable
|
|
|
|
---
|
|
|
|
## Configuration File Locations
|
|
|
|
### Source Project
|
|
- `smom-dbis-138/config/` - Source configuration files
|
|
- `smom-dbis-138-proxmox/templates/besu-configs/` - Template files
|
|
|
|
### Deployment
|
|
- Validators: `/etc/besu/config-validator.toml`
|
|
- Sentries: `/etc/besu/config-sentry.toml`
|
|
- RPC Nodes: `/etc/besu/config-rpc-*.toml`
|
|
|
|
See `docs/04-configuration/BESU_PATH_REFERENCE.md` for complete path mapping.
|
|
|
|
---
|
|
|
|
## Best Practices
|
|
|
|
### 1. Minimal Logging
|
|
- Use `WARN` for validators and RPC nodes
|
|
- Use `INFO` only for archive nodes that need detailed logs
|
|
|
|
### 2. Security
|
|
- Disable RPC on validators
|
|
- Use specific CORS origins (not wildcards) where possible
|
|
- Implement firewall rules for access control
|
|
|
|
### 3. Performance
|
|
- Use appropriate `max-peers` for network size
|
|
- Configure sync mode based on archival needs
|
|
- Remove deprecated options that may cause issues
|
|
|
|
### 4. Maintenance
|
|
- Validate configs before deployment
|
|
- Keep configs in version control
|
|
- Document any deviations from templates
|
|
|
|
---
|
|
|
|
## Related Documentation
|
|
|
|
- `docs/04-configuration/BESU_PATH_REFERENCE.md` - Path structure reference
|
|
- `docs/05-network/BESU_FIREWALL_RULES.md` - Firewall configuration
|
|
- `docs/04-configuration/BESU_CLEANUP_COMPLETE.md` - Cleanup summary
|
|
- `scripts/validate-besu-config.sh` - Configuration validation
|
|
|
|
---
|
|
|
|
## References
|
|
|
|
- Besu Official Documentation: https://besu.hyperledger.org/en/stable/
|
|
- Besu v23.10.0 Release Notes: Check for latest changes
|
|
- Configuration Options Reference: https://besu.hyperledger.org/en/stable/Reference/CLI/CLI-Syntax/
|
|
|
|
---
|
|
|
|
**Last Updated**: 2026-01-17
|
|
**Version**: Besu v23.10.0+
|
|
**Status**: Production Ready
|