- Fixed 104 broken references in 59 files - Consolidated 40+ duplicate status files - Archived duplicates to reports/archive/duplicates/ - Created scripts for reference fixing and consolidation - Updated content inconsistency reports All optional cleanup tasks complete.
6.6 KiB
6.6 KiB
SMOM-DBIS-138 Proxmox Deployment Guide
Complete guide for deploying the SMOM-DBIS-138 blockchain network on Proxmox VE using LXC containers.
Table of Contents
Prerequisites
Hardware Requirements
- Proxmox VE: Version 7.0 or later
- CPU: Minimum 16 cores (recommended 32+)
- RAM: Minimum 64GB (recommended 128GB+)
- Storage: Minimum 500GB SSD (recommended 1TB+ NVMe)
- Network: 1Gbps+ connection
Software Requirements
- Proxmox VE installed and configured
- Access to Proxmox host (root or sudo)
- Network connectivity for downloading packages
- Sufficient storage in Proxmox storage pools
Initial Setup
1. Prepare Proxmox Host
# On Proxmox host
# Update system
apt update && apt upgrade -y
# Install required packages
apt install -y curl wget jq git
# Ensure LXC is enabled
systemctl status lxc
2. Copy Deployment Package
Copy the smom-dbis-138-proxmox directory to your Proxmox host:
# Option 1: Clone/copy to Proxmox host
scp -r smom-dbis-138-proxmox root@proxmox-host:/opt/
# Option 2: Git clone (if in repository)
cd /opt
git clone <repository-url> smom-dbis-138-proxmox
3. Install OS Template
Download Debian 12 template:
# On Proxmox host
pveam download local debian-12-standard_12.2-1_amd64.tar.zst
Configuration
1. Configure Proxmox Connection
cd /opt/smom-dbis-138-proxmox
cp config/proxmox.conf.example config/proxmox.conf
nano config/proxmox.conf
Update with your Proxmox details:
PROXMOX_HOST: Your Proxmox hostname or IPPROXMOX_USER: Usuallyroot@pamPROXMOX_TOKEN_NAMEandPROXMOX_TOKEN_SECRET: Create API token in Proxmox UIPROXMOX_NODE: Your Proxmox node name (usuallypve)PROXMOX_STORAGE: Storage pool name
2. Configure Network
cp config/network.conf.example config/network.conf
nano config/network.conf
Update network settings:
SUBNET_BASE: Base subnet (e.g.,10.3.1)GATEWAY: Gateway IPVLAN_*: VLAN tags for each node type
3. Adjust Resource Allocations (Optional)
Edit config/proxmox.conf to adjust resources:
VALIDATOR_MEMORY,VALIDATOR_CORES,VALIDATOR_DISKSENTRY_MEMORY,SENTRY_CORES,SENTRY_DISKRPC_MEMORY,RPC_CORES,RPC_DISK
Deployment
Full Deployment
Deploy everything (Besu nodes, services, monitoring):
cd /opt/smom-dbis-138-proxmox
./scripts/deployment/deploy-all.sh
Step-by-Step Deployment
1. Deploy Besu Nodes
./scripts/deployment/deploy-besu-nodes.sh
This creates:
- Validator containers (default: 4)
- Sentry containers (default: 3)
- RPC containers (default: 3)
2. Copy Configuration Files
After containers are created, copy configuration files from the original project:
# From smom-dbis-138 project
SOURCE_PROJECT="/path/to/smom-dbis-138"
# Copy genesis.json to all containers
for vmid in 1000 1001 1002 1003 1004 1500 1501 1502 1503 2500 2501 2502; do
pct push $vmid "$SOURCE_PROJECT/config/genesis.json" /etc/besu/genesis.json
pct push $vmid "$SOURCE_PROJECT/config/permissions-nodes.toml" /etc/besu/permissions-nodes.toml
pct push $vmid "$SOURCE_PROJECT/config/permissions-accounts.toml" /etc/besu/permissions-accounts.toml
done
3. Copy Validator Keys
# Copy validator keys to validator containers only
for vmid in 1000 1001 1002 1003 1004; do
pct push $vmid "$SOURCE_PROJECT/keys/validators/*" /keys/validators/
pct exec $vmid -- chown -R besu:besu /keys
done
4. Update Static Nodes
# Generate and update static-nodes.json
./scripts/network/update-static-nodes.sh
5. Start Services
# Start all Besu services
for vmid in 1000 1001 1002 1003 1004 1500 1501 1502 1503 2500 2501 2502; do
pct exec $vmid -- systemctl start besu-validator.service 2>/dev/null || \
pct exec $vmid -- systemctl start besu-sentry.service 2>/dev/null || \
pct exec $vmid -- systemctl start besu-rpc.service 2>/dev/null
done
6. Verify Deployment
# Check container status
pct list
# Check service status
for vmid in 1000 1001 1002 1003 1004 1500 1501 1502 1503 2500 2501 2502; do
echo "Container $vmid:"
pct exec $vmid -- systemctl status besu-validator.service 2>/dev/null || \
pct exec $vmid -- systemctl status besu-sentry.service 2>/dev/null || \
pct exec $vmid -- systemctl status besu-rpc.service 2>/dev/null
done
# Check metrics endpoint
curl http://10.3.1.40:9545/metrics
Post-Deployment
1. Verify Network Connectivity
# Test P2P connectivity between nodes
pct exec 1000 -- ping -c 3 192.168.11.101 # validator to validator
pct exec 1500 -- ping -c 3 192.168.11.151 # sentry to sentry
2. Check Blockchain Sync
# Check block height from RPC node
curl -X POST http://10.3.1.40:8545 \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
3. Monitor Logs
# View Besu logs
pct exec 1000 -- journalctl -u besu-validator -f
Maintenance
Upgrade Nodes
Upgrade all nodes to a new Besu version:
./scripts/upgrade/upgrade-all.sh 24.1.0
Upgrade a single node:
./scripts/upgrade/upgrade-node.sh 1000 24.1.0
Backup
Create backup of all containers:
./scripts/backup/backup-all.sh
Backups are stored in /var/lib/vz/backup/smom-dbis-138/
Restore
Restore from snapshot:
# List snapshots
pct listsnapshot 1000
# Restore snapshot
pct rollback 1000 <snapshot-name>
Troubleshooting
Container Won't Start
# Check container status
pct status 1000
# View container console
pct console 1000
# Check systemd services
pct exec 1000 -- systemctl status besu-validator
Network Issues
# Check network configuration
pct config 1000
# Test connectivity
pct exec 1000 -- ping -c 3 8.8.8.8
Service Won't Start
# Check logs
pct exec 1000 -- journalctl -u besu-validator -n 50
# Check configuration
pct exec 1000 -- cat /etc/besu/config-validator.toml
# Verify files exist
pct exec 1000 -- ls -la /etc/besu/
Out of Disk Space
# Check disk usage
pct exec 1000 -- df -h
# Clean up old logs
pct exec 1000 -- journalctl --vacuum-time=7d