- 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>
7.9 KiB
Proxmox Deployment Guide
Last Updated: 2026-01-31
Document Version: 1.0
Status: Active Documentation
Deploy Bridges via Proxmox Host
Date: 2025-01-19
Status: Ready for Execution
Target: VMID 2101 (besu-rpc-core-1) on Proxmox Host 192.168.11.10
Overview
This guide provides step-by-step instructions for deploying bridge contracts to ChainID 138 via the Proxmox host. The deployment executes inside VMID 2101 (Core RPC node) which has direct access to the Besu RPC endpoint.
Prerequisites
On Your Local Machine (with Proxmox access)
- SSH access to Proxmox host (192.168.11.10)
- SSH key configured for Proxmox host
- Project files available locally
- Network access to Proxmox host
On Proxmox Host
pctcommand available (Proxmox Container Toolkit)- VMID 2101 running
- SSH access to host as root (or configured user)
In VMID 2101
- Foundry installed (
forge,cast) - Bash shell
- Network access to RPC endpoint (192.168.11.211:8545)
- Project directory structure
Deployment Steps
Step 1: Copy Project Files to VM
From your local machine with project files:
cd /home/intlc/projects/proxmox
# Copy project files to VM
./scripts/copy-project-to-vm.sh
This script will:
- Create project directories in VM
- Copy
.envfile - Copy deployment scripts
- Copy contract source files
- Copy configuration files
Alternative Manual Method:
If the script doesn't work, manually copy files:
# From Proxmox host
PROXMOX_HOST="192.168.11.10"
VMID="2101"
# Create directories
ssh root@$PROXMOX_HOST "pct exec $VMID -- mkdir -p /home/intlc/projects/proxmox/smom-dbis-138"
ssh root@$PROXMOX_HOST "pct exec $VMID -- mkdir -p /home/intlc/projects/proxmox/scripts"
# Copy .env file
scp smom-dbis-138/.env root@$PROXMOX_HOST:/tmp/.env
ssh root@$PROXMOX_HOST "pct push $VMID /tmp/.env /home/intlc/projects/proxmox/smom-dbis-138/.env"
# Copy deployment script
scp scripts/deploy-all-bridges-standalone.sh root@$PROXMOX_HOST:/tmp/deploy.sh
ssh root@$PROXMOX_HOST "pct push $VMID /tmp/deploy.sh /home/intlc/projects/proxmox/scripts/deploy-all-bridges-standalone.sh"
ssh root@$PROXMOX_HOST "pct exec $VMID -- chmod +x /home/intlc/projects/proxmox/scripts/deploy-all-bridges-standalone.sh"
# Copy contract files (using tar for efficiency)
tar czf - smom-dbis-138/contracts smom-dbis-138/script smom-dbis-138/foundry.toml | \
ssh root@$PROXMOX_HOST "pct exec $VMID -- bash -c 'cd /home/intlc/projects/proxmox && tar xzf -'"
Step 2: Install Prerequisites in VM (if needed)
Check if prerequisites are installed:
./scripts/check-vm-prerequisites.sh
If prerequisites are missing, install them:
./scripts/setup-vm-for-deployment.sh
Manual Installation:
PROXMOX_HOST="192.168.11.10"
VMID="2101"
# Install system packages
ssh root@$PROXMOX_HOST "pct exec $VMID -- bash -c '
export DEBIAN_FRONTEND=noninteractive
apt-get update
apt-get install -y bc curl git build-essential jq
'"
# Install Foundry
ssh root@$PROXMOX_HOST "pct exec $VMID -- bash -c '
curl -L https://foundry.paradigm.xyz | bash
export PATH=\"\$HOME/.foundry/bin:\$PATH\"
foundryup
'"
Step 3: Verify Prerequisites
./scripts/check-vm-prerequisites.sh
Expected output:
- ✅ VM is running
- ✅ Foundry installed
- ✅ Cast available
- ✅ Bash available
- ✅ bc available
- ✅ curl available
- ✅ Project directory exists
- ✅ .env file exists
- ✅ RPC accessible from VM
Step 4: Execute Deployment
Option A: Using Automated Script
./scripts/deploy-via-proxmox.sh
Option B: Manual Execution via pct exec
PROXMOX_HOST="192.168.11.10"
VMID="2101"
# Execute deployment script in VM
ssh root@$PROXMOX_HOST "pct exec $VMID -- bash -c '
cd /home/intlc/projects/proxmox
export PATH=\"\$HOME/.foundry/bin:\$PATH\"
./scripts/deploy-all-bridges-standalone.sh
'"
Option C: Interactive Session
# SSH to Proxmox host
ssh root@192.168.11.10
# Enter VM
pct exec 2101 -- bash
# Inside VM
cd /home/intlc/projects/proxmox
export PATH="$HOME/.foundry/bin:$PATH"
./scripts/deploy-all-bridges-standalone.sh
Deployment Script Details
deploy-all-bridges-standalone.sh
This script performs:
-
Pre-flight Checks
- RPC connectivity
- Chain ID verification
- Block production check
- Deployer account balance
- EIP-1559 support
-
Gas Price Calculation
- Dynamic gas price from RPC
- EIP-1559 parameters
- Safety multipliers
-
Contract Deployment
- WETH9 Bridge
- WETH10 Bridge
- Router verification
- Configuration
-
Verification
- Contract addresses
- Transaction hashes
- Configuration status
Troubleshooting
Issue: "Connection timed out" to Proxmox host
Solution: Ensure you're running from a system with network access to 192.168.11.10
Issue: "No such file or directory" for forge/cast
Solution: Install Foundry in VM:
ssh root@192.168.11.10 "pct exec 2101 -- bash -c 'curl -L https://foundry.paradigm.xyz | bash && foundryup'"
Issue: "Project directory not found"
Solution: Copy project files:
./scripts/copy-project-to-vm.sh
Issue: "RPC not accessible from VM"
Solution: Check VM network configuration and RPC endpoint:
ssh root@192.168.11.10 "pct exec 2101 -- curl -X POST http://192.168.11.211:8545 -H 'Content-Type: application/json' -d '{\"jsonrpc\":\"2.0\",\"method\":\"eth_chainId\",\"params\":[],\"id\":1}'"
Issue: "Gas price below minimum"
Solution: The script automatically calculates gas prices. If issues persist, check:
- Minimum gas price in chain configuration
- EIP-1559 base fee
- Priority fee settings
Issue: "Replacement transaction underpriced"
Solution:
- Check for pending transactions:
ssh root@192.168.11.10 "pct exec 2101 -- cast txpool pending --rpc-url http://192.168.11.211:8545"
- Clear broadcast cache:
ssh root@192.168.11.10 "pct exec 2101 -- bash -c 'cd /home/intlc/projects/proxmox && rm -rf broadcast/*'"
- Increase gas price in deployment script
Verification
After deployment, verify contracts:
PROXMOX_HOST="192.168.11.10"
VMID="2101"
# Check deployed addresses
ssh root@$PROXMOX_HOST "pct exec $VMID -- cat /tmp/chain138-deployed-addresses-*.txt"
# Verify contracts on chain
ssh root@$PROXMOX_HOST "pct exec $VMID -- bash -c '
export PATH=\"\$HOME/.foundry/bin:\$PATH\"
cast code <BRIDGE_ADDRESS> --rpc-url http://192.168.11.211:8545
'"
Post-Deployment
-
Save Deployment Addresses
- Copy addresses from
/tmp/chain138-deployed-addresses-*.txtin VM - Update documentation with new addresses
- Copy addresses from
-
Configure Bridges
- Set destination chain selectors
- Configure token mappings
- Test bridge functionality
-
Update Documentation
- Record deployment hashes
- Update bridge registry
- Document configuration
Quick Reference
Key Commands
# Check VM status
ssh root@192.168.11.10 "pct status 2101"
# Execute command in VM
ssh root@192.168.11.10 "pct exec 2101 -- <command>"
# Copy file to VM
scp <file> root@192.168.11.10:/tmp/
ssh root@192.168.11.10 "pct push 2101 /tmp/<file> /path/in/vm"
# Interactive session
ssh root@192.168.11.10
pct exec 2101 -- bash
File Locations in VM
- Project:
/home/intlc/projects/proxmox/ - Scripts:
/home/intlc/projects/proxmox/scripts/ - Contracts:
/home/intlc/projects/proxmox/smom-dbis-138/contracts/ - Config:
/home/intlc/projects/proxmox/smom-dbis-138/config/ - .env:
/home/intlc/projects/proxmox/smom-dbis-138/.env - Deployment logs:
/tmp/deployment-*.log - Deployed addresses:
/tmp/chain138-deployed-addresses-*.txt
Support
For issues or questions:
- Check deployment logs in VM:
/tmp/deployment-*.log - Review RPC logs on Besu node
- Check transaction pool for stuck transactions
- Verify VM network connectivity
Last Updated: 2025-01-19
Status: Ready for Execution