9.6 KiB
Files Copy Checklist
Complete checklist of all files that need to be copied during deployment.
Source Project Location
Default: /home/intlc/projects/smom-dbis-138
Required Files for Besu Deployment
1. Genesis File (ALL Besu Nodes)
- Source:
config/genesis.json - Destination:
/etc/besu/genesis.json - Copied to: All Besu nodes (validators, sentries, RPC)
- Status: ⚠️ REQUIRED - Deployment will fail if missing
2. Permissions Files (ALL Besu Nodes)
permissions-nodes.toml
- Source:
config/permissions-nodes.toml - Destination:
/etc/besu/permissions-nodes.toml - Copied to: All Besu nodes
- Status: ⚠️ REQUIRED - Required for node allowlisting
permissions-accounts.toml
- Source:
config/permissions-accounts.toml - Destination:
/etc/besu/permissions-accounts.toml - Copied to: All Besu nodes (if exists)
- Status: ⚠️ OPTIONAL - Required if account permissioning is enabled
3. Static Nodes File (ALL Besu Nodes)
- Source:
config/static-nodes.json(generated during bootstrap) - Destination:
/etc/besu/static-nodes.json - Copied to: All Besu nodes
- Status: ⚠️ GENERATED - Created/updated by bootstrap script
Node-Specific Configuration Files
Validators (VMID 1000-1004)
File Detection Order:
config/nodes/validator-1/config.toml(ifconfig/nodes/structure exists)config/nodes/validator-1/config-validator.toml(ifconfig/nodes/structure exists)config/config-validator.toml(flat structure fallback)
Destination: /etc/besu/config-validator.toml
Node Mapping:
- VMID 1000 → validator-1
- VMID 1001 → validator-2
- VMID 1002 → validator-3
- VMID 1003 → validator-4
- VMID 1004 → validator-5
Sentries (VMID 1500-1503)
File Detection Order:
config/nodes/sentry-1/config.toml(ifconfig/nodes/structure exists)config/nodes/sentry-1/config-sentry.toml(ifconfig/nodes/structure exists)config/config-sentry.toml(flat structure fallback)config/config-member.toml(backwards compatibility)
Destination: /etc/besu/config-sentry.toml
Node Mapping:
- VMID 1500 → sentry-1
- VMID 1501 → sentry-2
- VMID 1502 → sentry-3
- VMID 1503 → sentry-4
RPC Nodes (VMID 2500-2502) - Type-Specific
Each RPC node uses a different config file type:
VMID 2500: Core RPC
File Detection Order:
config/nodes/rpc-1/config.toml(ifconfig/nodes/structure exists)config/nodes/rpc-1/config-rpc-core.toml(ifconfig/nodes/structure exists)config/config-rpc-core.toml(flat structure fallback)
Destination: /etc/besu/config-rpc-core.toml
VMID 2501: Permissioned RPC
File Detection Order:
config/nodes/rpc-2/config.toml(ifconfig/nodes/structure exists)config/nodes/rpc-2/config-rpc-perm.toml(ifconfig/nodes/structure exists)config/config-rpc-perm.toml(flat structure fallback)
Destination: /etc/besu/config-rpc-perm.toml
VMID 2502: Public RPC
File Detection Order:
config/nodes/rpc-3/config.toml(ifconfig/nodes/structure exists)config/nodes/rpc-3/config-rpc-public.toml(ifconfig/nodes/structure exists)config/config-rpc-public.toml(flat structure fallback)
Destination: /etc/besu/config-rpc-public.toml
Node Mapping:
- VMID 2500 → rpc-1 (Core RPC)
- VMID 2501 → rpc-2 (Permissioned RPC)
- VMID 2502 → rpc-3 (Public RPC)
Node Keys (if using config/nodes/ structure)
Node Keys
- Source:
config/nodes/<node-name>/nodekey - Destination:
/data/besu/nodekey - Copied to: Node-specific (each node gets its own)
- Status: ⚠️ OPTIONAL - Only if using node-specific directories
Example:
config/nodes/validator-1/nodekey→ VMID 1000:/data/besu/nodekeyconfig/nodes/sentry-1/nodekey→ VMID 1500:/data/besu/nodekey
Validator Keys (VALIDATORS ONLY - VMID 1000-1004)
Validator Key Directories
- Source:
keys/validators/validator-*/ - Destination:
/keys/validators/validator-*/ - Copied to: Validator nodes only
- Status: ⚠️ REQUIRED - Validators will not function without keys
Required Files Per Validator
Each keys/validators/validator-N/ directory must contain:
key- Private key (CRITICAL - keep secure!)key.pub- Public keyaddress- Account address
Validator Key Mapping
keys/validators/validator-1/→ VMID 1000keys/validators/validator-2/→ VMID 1001keys/validators/validator-3/→ VMID 1002keys/validators/validator-4/→ VMID 1003keys/validators/validator-5/→ VMID 1004
Complete File Structure Reference
../smom-dbis-138/
├── config/
│ ├── genesis.json ⚠️ REQUIRED - All nodes
│ ├── permissions-nodes.toml ⚠️ REQUIRED - All nodes
│ ├── permissions-accounts.toml ⚠️ OPTIONAL - All nodes (if account permissioning)
│ ├── static-nodes.json ⚠️ GENERATED - Created by bootstrap script
│ │
│ ├── config-validator.toml ⚠️ FALLBACK - Validators (if no nodes/ structure)
│ ├── config-sentry.toml ⚠️ FALLBACK - Sentries (if no nodes/ structure)
│ ├── config-rpc-public.toml ⚠️ FALLBACK - RPC (if no nodes/ structure)
│ │
│ └── nodes/ ⚠️ OPTIONAL - Node-specific configs
│ ├── validator-1/
│ │ ├── config.toml # Preferred over flat structure
│ │ └── nodekey # Optional node identification key
│ ├── validator-2/
│ ├── ...
│ ├── sentry-1/
│ │ ├── config.toml
│ │ └── nodekey
│ ├── sentry-2/
│ ├── ...
│ ├── rpc-1/
│ │ ├── config.toml
│ │ └── nodekey
│ └── ...
│
└── keys/
└── validators/
├── validator-1/ ⚠️ REQUIRED - VMID 1000
│ ├── key # Private key (CRITICAL)
│ ├── key.pub # Public key
│ └── address # Account address
├── validator-2/ ⚠️ REQUIRED - VMID 1001
├── validator-3/ ⚠️ REQUIRED - VMID 1002
├── validator-4/ ⚠️ REQUIRED - VMID 1003
└── validator-5/ ⚠️ REQUIRED - VMID 1004
Pre-Deployment Verification
Run this checklist before deployment:
SOURCE_PROJECT="/home/intlc/projects/smom-dbis-138"
# Check required files
echo "=== Required Files ==="
[ -f "$SOURCE_PROJECT/config/genesis.json" ] && echo "✓ genesis.json" || echo "✗ genesis.json MISSING"
[ -f "$SOURCE_PROJECT/config/permissions-nodes.toml" ] && echo "✓ permissions-nodes.toml" || echo "✗ permissions-nodes.toml MISSING"
# Check validator keys
echo ""
echo "=== Validator Keys ==="
for i in 1 2 3 4 5; do
if [ -d "$SOURCE_PROJECT/keys/validators/validator-$i" ]; then
[ -f "$SOURCE_PROJECT/keys/validators/validator-$i/key" ] && echo "✓ validator-$i/key" || echo "✗ validator-$i/key MISSING"
[ -f "$SOURCE_PROJECT/keys/validators/validator-$i/key.pub" ] && echo "✓ validator-$i/key.pub" || echo "✗ validator-$i/key.pub MISSING"
[ -f "$SOURCE_PROJECT/keys/validators/validator-$i/address" ] && echo "✓ validator-$i/address" || echo "✗ validator-$i/address MISSING"
else
echo "✗ validator-$i/ directory MISSING"
fi
done
# Check config files (flat structure)
echo ""
echo "=== Config Files (Flat Structure) ==="
[ -f "$SOURCE_PROJECT/config/config-validator.toml" ] && echo "✓ config-validator.toml" || echo "⚠ config-validator.toml (optional if nodes/ structure exists)"
[ -f "$SOURCE_PROJECT/config/config-sentry.toml" ] && echo "✓ config-sentry.toml" || echo "⚠ config-sentry.toml (optional if nodes/ structure exists)"
[ -f "$SOURCE_PROJECT/config/config-rpc-public.toml" ] && echo "✓ config-rpc-public.toml" || echo "⚠ config-rpc-public.toml (optional if nodes/ structure exists)"
# Check config/nodes/ structure (if exists)
echo ""
echo "=== Node-Specific Configs (Optional) ==="
if [ -d "$SOURCE_PROJECT/config/nodes" ]; then
echo "✓ config/nodes/ structure exists"
find "$SOURCE_PROJECT/config/nodes" -name "config.toml" | while read f; do
echo " ✓ $(basename $(dirname $f))/config.toml"
done
else
echo "⚠ config/nodes/ not found (will use flat structure)"
fi
Copy Script Reference
Primary Script: scripts/copy-besu-config-with-nodes.sh
Usage:
cd /home/intlc/projects/proxmox
./smom-dbis-138-proxmox/scripts/copy-besu-config-with-nodes.sh /home/intlc/projects/smom-dbis-138
Features:
- ✅ Detects
config/nodes/structure automatically - ✅ Falls back to flat structure if needed
- ✅ Copies node-specific configs when available
- ✅ Copies validator keys to validators only
- ✅ Sets proper ownership (besu:besu)
Troubleshooting
Missing genesis.json
Error: genesis.json not found
Solution: Ensure config/genesis.json exists in source project
Missing Validator Keys
Error: Validator keys directory not found
Solution: Verify keys/validators/validator-*/ directories exist with required files
Config File Not Found
Warning: No config file found for validator/sentry/rpc
Solution: Ensure either:
config/nodes/<node-name>/config.tomlexists, OR- Flat structure file exists (
config/config-validator.toml, etc.)