- 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>
5.4 KiB
Install Besu in CT 1504 (Sentry) and 2301 (RPC) — Runbook
Context: Containers 1504 (ml110) and 2301 (ml110) are running but have no Besu installed (no /opt/besu, no /etc/besu). This runbook installs Besu and configs so the nodes can join Chain 138.
Host: ml110 (192.168.11.10). Run from project root or from the host.
Prerequisites
- SSH to ml110:
ssh root@192.168.11.10 - Containers 1504 and 2301 are running (
pct status 1504/pct status 2301) - Chain 138 configs available (genesis, config-sentry.toml, config-rpc-private.toml or config-rpc.toml) — from repo or from a working node (e.g. 1500, 2101)
Option A: Run install scripts inside each CT (from host)
1. Push install script and run in 1504 (Sentry)
From project root (so the host can reach the script via SSH + stdin or copy):
# Copy install script to host, then into container
scp smom-dbis-138-proxmox/install/besu-sentry-install.sh root@192.168.11.10:/tmp/
ssh root@192.168.11.10 "pct push 1504 /tmp/besu-sentry-install.sh /tmp/besu-sentry-install.sh && pct exec 1504 -- bash /tmp/besu-sentry-install.sh"
The script installs Java, Besu 23.10.0, creates besu user, /opt/besu, /etc/besu, and a template config-sentry.toml.template. It does not copy the real Chain 138 config.
2. Push Chain 138 config and genesis into 1504
You need a real config-sentry.toml and genesis.json in the container. Either copy from working sentry 1500 (on r630-01), or from repo templates (adjust IPs/bootnodes as needed).
From r630-01 (where 1500 has config):
# On r630-01: export config and genesis from 1500
ssh root@192.168.11.11 "pct exec 1500 -- cat /etc/besu/config-sentry.toml" > /tmp/config-sentry-1504.toml
ssh root@192.168.11.11 "pct exec 1500 -- cat /etc/besu/genesis.json" > /tmp/genesis.json
# Push to ml110 and into 1504
scp /tmp/config-sentry-1504.toml /tmp/genesis.json root@192.168.11.10:/tmp/
ssh root@192.168.11.10 "pct push 1504 /tmp/config-sentry-1504.toml /etc/besu/config-sentry.toml"
ssh root@192.168.11.10 "pct push 1504 /tmp/genesis.json /etc/besu/genesis.json"
ssh root@192.168.11.10 "pct exec 1504 -- chown besu:besu /etc/besu/config-sentry.toml /etc/besu/genesis.json"
If you use repo templates instead, push smom-dbis-138-proxmox/templates/besu-configs/config-sentry.toml and the chain genesis.json (e.g. from smom-dbis-138-proxmox/config/genesis.json) and adjust any node-specific settings (data-path, p2p-host, etc.).
3. Enable and start sentry in 1504
ssh root@192.168.11.10 "pct exec 1504 -- systemctl enable besu-sentry.service && pct exec 1504 -- systemctl start besu-sentry.service"
ssh root@192.168.11.10 "pct exec 1504 -- systemctl status besu-sentry.service"
4. Install Besu in 2301 (RPC)
scp smom-dbis-138-proxmox/install/besu-rpc-install.sh root@192.168.11.10:/tmp/
ssh root@192.168.11.10 "pct push 2301 /tmp/besu-rpc-install.sh /tmp/besu-rpc-install.sh && pct exec 2301 -- bash /tmp/besu-rpc-install.sh"
The RPC install creates config-rpc.toml.template. For 2301 (private RPC) you need a real config — e.g. config-rpc-private.toml or a copy of the RPC config from 2101/2400.
Copy config from working RPC (e.g. 2400 on ml110):
ssh root@192.168.11.10 "pct exec 2400 -- cat /etc/besu/config-rpc.toml" > /tmp/config-rpc-2301.toml
# Edit if 2301 uses config-rpc-private.toml (different APIs/permissions)
scp /tmp/config-rpc-2301.toml root@192.168.11.10:/tmp/
ssh root@192.168.11.10 "pct push 2301 /tmp/config-rpc-2301.toml /etc/besu/config-rpc-private.toml"
ssh root@192.168.11.10 "pct exec 2301 -- chown besu:besu /etc/besu/config-rpc-private.toml"
If the service file points to config-rpc.toml, either rename or symlink, or edit the unit:
ssh root@192.168.11.10 "pct exec 2301 -- sed -i 's|config-rpc.toml|config-rpc-private.toml|g' /etc/systemd/system/besu-rpc.service"
ssh root@192.168.11.10 "pct exec 2301 -- systemctl daemon-reload"
Push genesis into 2301 (same as 1504). Then:
ssh root@192.168.11.10 "pct exec 2301 -- systemctl enable besu-rpc.service && pct exec 2301 -- systemctl start besu-rpc.service"
ssh root@192.168.11.10 "pct exec 2301 -- systemctl status besu-rpc.service"
Option B: Use fix script after install (units only)
If you only create the systemd units (e.g. Besu already installed but unit missing), run on ml110:
# From project root
ssh root@192.168.11.10 'bash -s' < scripts/fix-besu-services-on-host.sh
That script only creates besu-sentry.service / besu-rpc.service when /opt/besu and the relevant config already exist; it does not install Besu.
Verification
# Sentry 1504
ssh root@192.168.11.10 "pct exec 1504 -- systemctl is-active besu-sentry"
# RPC 2301
ssh root@192.168.11.10 "pct exec 2301 -- systemctl is-active besu-rpc"
curl -s -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' http://192.168.11.232:8545
Or from project root: bash scripts/review-sentry-and-rpc-nodes.sh.
References
- FULL_FIXES_PREPARED.md — master checklist
- APPLIED_FIXES_20260207.md — why 1504/2301 were skipped
- MISSING_CONTAINERS_LIST.md — container inventory
- Install scripts:
smom-dbis-138-proxmox/install/besu-sentry-install.sh,besu-rpc-install.sh