Full Supernode Deployment
A full supernode runs every component in the Elastos stack. This is required for Elastos Council members and recommended for anyone who wants to support the complete network.
This page is just the install step. Start with Set Up Your Council Node — it sequences this page with the security, DID-binding, claim-transaction, and monitoring steps you actually need to go live as a council validator.
Initialization Order
Initialize ELA first. Sidechains can be initialized independently, but in mining mode their start commands reference ELA's keystore for PBFT consensus signing. The Arbiter genuinely depends on all chains being initialized.
1. ELA (no dependencies — initialize first)
2. ESC (init is independent; mining mode start needs ELA keystore)
3. ESC-Oracle (requires ESC)
4. EID (init is independent; mining mode start needs ELA keystore)
5. EID-Oracle (requires EID)
6. PG (init is independent; mining mode start needs ELA keystore)
7. PG-Oracle (requires PG)
8. Arbiter (requires ELA, ESC, EID, PG — copies ELA keystore)
Complete Walkthrough
# ─── Step 1: Install Elastos Node for Ubuntu ───
# Downloads node.sh to ~/node and verifies its published SHA-256 checksum.
curl -fsSL https://raw.githubusercontent.com/elastos/Elastos.Node/master/build/skeleton/install.sh | bash
# ─── Step 2: Dependencies, then initialize (choose the 'full' profile when asked) ───
# Install the packages node.sh needs.
sudo apt-get install -y jq lsof apache2-utils curl openssl
~/node/node.sh setup # initializes every chain in the right order; choose 'full'
~/node/node.sh swap # optional: 16G swap headroom for the initial sync
~/node/node.sh firewall # peer/consensus ports only — detects your SSH port, asks before enabling; RPC stays on 127.0.0.1
~/node/node.sh set_cron # restart on reboot + log compression
# Prefer to initialize each chain selectively instead? After node.sh is installed:
~/node/node.sh ela init
~/node/node.sh esc init
~/node/node.sh esc-oracle init
~/node/node.sh eid init
~/node/node.sh eid-oracle init
~/node/node.sh pg init
~/node/node.sh pg-oracle init
~/node/node.sh arbiter init
# ─── Step 3: Start all services ───
~/node/node.sh start
# This starts in dependency order:
# ela → esc → esc-oracle → eid → eid-oracle → pg → pg-oracle → arbiter
# ─── Step 4: Verify everything is running ───
# (node.sh set_cron from Step 2 enabled @reboot autostart + log compression)
~/node/node.sh summary
~/node/node.sh status
Post-Deployment Verification
# Check all chain statuses at once
~/node/node.sh status
# Verify each chain individually
~/node/node.sh ela status
~/node/node.sh esc status
~/node/node.sh eid status
~/node/node.sh arbiter status
Cron-Based Auto-Restart
The set_cron command installs two crontab entries:
@reboot ~/node/node.sh start
*/10 * * * * ~/node/node.sh compress_log
@reboot: Automatically starts all installed chains when the server boots*/10 * * * *: Compresses rotated log files every 10 minutes
Runtime log rotation is handled by Apache's rotatelogs with 20 MB file size limits. Each chain pipes its stderr through:
rotatelogs ~/node/esc/logs/esc-%Y-%m-%d-%H_%M_%S.log 20M
To verify cron is set up:
crontab -l | grep node.sh