How to Deploy a Node
Overview
This page explains how to set up and operate a Real Network node. The Real blockchain is EVM-compatible and runs under a Proof-of-Staked-Authority (PoSA) consensus with less than 3-second block times.
Node Types
Full Node: Syncs the entire blockchain and exposes RPC endpoints for queries.
Validator Node: Participates in block production and consensus. Requires staking and sentry node architecture.
Hardware and Network Requirements
Role
CPU
RAM
Disk
Network
Full Node
4 vCPU
16 GB
1 TB NVMe
100 Mbps
Validator
8 vCPU
32 GB
2 TB NVMe
200 Mbps
OS: Ubuntu 22.04 LTS (recommended)
Ports: 30303 (p2p), 8545 (HTTP RPC), 8546 (WS RPC), 6060 (metrics)
Time Sync: Keep system clock in sync using NTP.
Quick Start (Docker)
# Install dependencies
sudo apt update && sudo apt install -y docker.io docker-compose-plugin curl jq
# Create directories
sudo mkdir -p /opt/real/{data,config}
# Download configs
curl -L "<GENESIS_JSON_URL>" -o /opt/real/config/genesis.json
curl -L "<BOOTNODES_URL>" -o /opt/real/config/bootnodes.txt
# Create docker-compose.yml
cat > /opt/real/docker-compose.yml <<'YAML'
services:
real-node:
image: <REAL_NODE_IMAGE>:<TAG>
container_name: real-node
restart: unless-stopped
ports:
- "30303:30303/tcp"
- "30303:30303/udp"
- "127.0.0.1:8545:8545"
- "127.0.0.1:8546:8546"
- "6060:6060"
volumes:
- /opt/real/data:/var/lib/real
- /opt/real/config:/config
command: [
"--data-path=/var/lib/real",
"--chain=/config/genesis.json",
"--bootnodes-file=/config/bootnodes.txt",
"--nat=extip:<PUBLIC_IP>",
"--port=30303",
"--rpc-http-enabled=true",
"--rpc-http-addr=0.0.0.0",
"--rpc-http-port=8545",
"--metrics-enabled=true",
"--metrics-port=6060"
]
YAML
# Launch node
cd /opt/real && docker compose up -dBinary Installation (Alternative)
# Download release
curl -L "<REAL_NODE_TARBALL_URL>" -o /tmp/real-node.tar.gz
sudo mkdir -p /opt/real/{bin,config,data}
cd /opt/real/bin && sudo tar -xzf /tmp/real-node.tar.gz
# Systemd service
sudo tee /etc/systemd/system/real-node.service > /dev/null <<'UNIT'
[Unit]
Description=Real Node
After=network-online.target
[Service]
ExecStart=/opt/real/bin/real-node \
--data-path=/opt/real/data \
--chain=/opt/real/config/genesis.json \
--bootnodes-file=/opt/real/config/bootnodes.txt \
--port=30303 \
--rpc-http-enabled=true \
--rpc-http-addr=127.0.0.1 \
--rpc-http-port=8545 \
--metrics-enabled=true \
--metrics-port=6060
Restart=on-failure
RestartSec=5
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
UNIT
sudo systemctl daemon-reload
sudo systemctl enable real-node
sudo systemctl start real-nodeFast Sync from Snapshot
# Stop node
sudo systemctl stop real-node || true
# Clear data
m -rf /opt/real/data && mkdir -p /opt/real/data
# Download snapshot
curl -L "<SNAPSHOT_URL>" | tar -xz -C /opt/real/data
# Restart
sudo systemctl start real-nodeBecoming a Validator
Generate validator keys (offline if possible).
Fund the validator address with staking tokens.
Register validator metadata via CLI or dApp.
Stake the minimum required amount.
Run the validator behind sentry nodes to protect its IP.
Monitoring and Maintenance
Metrics endpoint:
http://localhost:6060/metrics(Prometheus)Logs:
docker logs -f real-nodeorjournalctl -u real-nodeAlerts: trigger if block height lags >100 blocks or peer count <3
Security Best Practices
Keep RPC on
127.0.0.1; never expose it directly to the internet.Use firewalls (UFW/security groups) to restrict access.
Apply system and Docker updates regularly.
Back up validator keys and config files securely.
Last updated