275 lines
9.6 KiB
Markdown
275 lines
9.6 KiB
Markdown
# 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**:
|
|
1. `config/nodes/validator-1/config.toml` (if `config/nodes/` structure exists)
|
|
2. `config/nodes/validator-1/config-validator.toml` (if `config/nodes/` structure exists)
|
|
3. `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**:
|
|
1. `config/nodes/sentry-1/config.toml` (if `config/nodes/` structure exists)
|
|
2. `config/nodes/sentry-1/config-sentry.toml` (if `config/nodes/` structure exists)
|
|
3. `config/config-sentry.toml` (flat structure fallback)
|
|
4. `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**:
|
|
1. `config/nodes/rpc-1/config.toml` (if `config/nodes/` structure exists)
|
|
2. `config/nodes/rpc-1/config-rpc-core.toml` (if `config/nodes/` structure exists)
|
|
3. `config/config-rpc-core.toml` (flat structure fallback)
|
|
|
|
**Destination**: `/etc/besu/config-rpc-core.toml`
|
|
|
|
#### VMID 2501: Permissioned RPC
|
|
**File Detection Order**:
|
|
1. `config/nodes/rpc-2/config.toml` (if `config/nodes/` structure exists)
|
|
2. `config/nodes/rpc-2/config-rpc-perm.toml` (if `config/nodes/` structure exists)
|
|
3. `config/config-rpc-perm.toml` (flat structure fallback)
|
|
|
|
**Destination**: `/etc/besu/config-rpc-perm.toml`
|
|
|
|
#### VMID 2502: Public RPC
|
|
**File Detection Order**:
|
|
1. `config/nodes/rpc-3/config.toml` (if `config/nodes/` structure exists)
|
|
2. `config/nodes/rpc-3/config-rpc-public.toml` (if `config/nodes/` structure exists)
|
|
3. `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/nodekey`
|
|
- `config/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 key
|
|
- `address` - Account address
|
|
|
|
### Validator Key Mapping
|
|
- `keys/validators/validator-1/` → VMID 1000
|
|
- `keys/validators/validator-2/` → VMID 1001
|
|
- `keys/validators/validator-3/` → VMID 1002
|
|
- `keys/validators/validator-4/` → VMID 1003
|
|
- `keys/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:
|
|
|
|
```bash
|
|
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**:
|
|
```bash
|
|
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:
|
|
1. `config/nodes/<node-name>/config.toml` exists, OR
|
|
2. Flat structure file exists (`config/config-validator.toml`, etc.)
|
|
|