Skip to main content
HOW-TO

Set Up Your Elastos DAO Council Node

You won a seat on the Elastos DAO Council. This is the complete install — deploy the full ecosystem with Elastos Node for Ubuntu (node.sh), then claim the node on-chain under your council DID. Install the OS packages, initialize the chains with node.sh setup, then open the peer/consensus ports with node.sh firewall — it detects your SSH port and asks before enabling the firewall, and the RPC always stays on 127.0.0.1.

Council Members Only

For council members running the full ecosystem (ELA, ESC, EID, PG, Arbiter). Running a community BPoS validator instead? See Set Up a BPoS Supernode.

At a glance
  • Who: Newly seated council members
  • How long: ~30 min hands-on, plus 3–7 days of background chain sync
  • End state: A live full supernode claimed under your council DID, joining the active validator set

Requirements

  • Ubuntu 22.04 LTS or newer (Ubuntu only — not Debian, CentOS, RHEL, or Arch)
  • 8+ CPU cores (dedicated, not shared/burstable), 48+ GB RAM, 1 TB SSD/NVMe
  • Your council DID and root/sudo access
Fewer than 8 cores? Read this first

setup initializes every chain in parallel, which saturates a small CPU and can time out. Initialize one at a time instead — ~/node/node.sh ela init, then esc, eid, pg, arbiter. Under-spec hardware will still struggle to keep up with the network; treat it as temporary.

# 1. Install the runner (downloads to ~/node, checksum-verified)
curl -fsSL https://raw.githubusercontent.com/elastos/Elastos.Node/master/build/skeleton/install.sh | bash

# 2. Install the packages node.sh needs
sudo apt-get install -y jq lsof apache2-utils curl openssl

# 3. Initialize the full stack. Choose the 'full' profile. Press Enter for auto keystore
# passwords. At each "Miner Address" prompt, paste your own cold EVM address — skipping
# it sends rewards to a local account you can lose with the server.
# (Change one later with: ~/node/node.sh reward set 0x<your-cold-address>)
~/node/node.sh setup

# 4. Host prep: swap headroom, open ports (SSH-safe: detects your SSH port, asks first),
# and autostart on reboot
~/node/node.sh swap
~/node/node.sh firewall
~/node/node.sh set_cron

# 5. Start, then report status to the council monitor (outbound — no ports opened)
~/node/node.sh start
~/node/node.sh monitor monitor.elastos.io

# 6. Watch sync (3–7 days). Claim only once every chain is at network height.
~/node/node.sh health

Claim in Essentials (after full sync): run ~/node/node.sh ela status --verbose, copy the Public Key (66-char hex), then in Essentials → Elastos Council open "The election has ended (View)", tap the binding button, paste the key, and Confirm.

Keeping the node current

~/node/node.sh update_script   # update node.sh (checksum-verified)
~/node/node.sh update # update the chain binaries

Important notes

Uptime matters. If 1/3 of council nodes can't run normally, ESC and EID can't finalize cross-chain transactions without a quorum. Missed arbiter rounds are visible on-chain and count against you in the next election.

Switching servers. Sync the new server fully, then repoint the council seat during a low-activity window.