Files
proxmox/docs/06-besu/PROXMOX_DEPLOYMENT_GUIDE.md
defiQUG fbda1b4beb
Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
docs: Ledger Live integration, contract deploy learnings, NEXT_STEPS updates
- 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>
2026-02-12 15:46:57 -08:00

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

  • pct command 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 .env file
  • 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:

  1. Pre-flight Checks

    • RPC connectivity
    • Chain ID verification
    • Block production check
    • Deployer account balance
    • EIP-1559 support
  2. Gas Price Calculation

    • Dynamic gas price from RPC
    • EIP-1559 parameters
    • Safety multipliers
  3. Contract Deployment

    • WETH9 Bridge
    • WETH10 Bridge
    • Router verification
    • Configuration
  4. 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:

  1. Check for pending transactions:
ssh root@192.168.11.10 "pct exec 2101 -- cast txpool pending --rpc-url http://192.168.11.211:8545"
  1. Clear broadcast cache:
ssh root@192.168.11.10 "pct exec 2101 -- bash -c 'cd /home/intlc/projects/proxmox && rm -rf broadcast/*'"
  1. 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

  1. Save Deployment Addresses

    • Copy addresses from /tmp/chain138-deployed-addresses-*.txt in VM
    • Update documentation with new addresses
  2. Configure Bridges

    • Set destination chain selectors
    • Configure token mappings
    • Test bridge functionality
  3. 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:

  1. Check deployment logs in VM: /tmp/deployment-*.log
  2. Review RPC logs on Besu node
  3. Check transaction pool for stuck transactions
  4. Verify VM network connectivity

Last Updated: 2025-01-19
Status: Ready for Execution