Full Sync Node
General Steps
-
Provision a machine
-
Notify core team of IP/IPs range (
x.x.x.x:x.x.x.x
) and SKALE Chain for full-sync. -
Complete Full Sync setup
Node Machine Requirements
-
A Linux x86_64 machine
-
Ubuntu 18.04
-
8 physical cores
-
32GB RAM
-
100GB root storage
-
2TB attached storage
Node Network Requirements
-
Ports 80, 443, 3009, and 10000–18192, and ICMP IPv4 shouldn’t be closed by external firewall
Node Software Prerequisites
-
16GB Swap
-
docker
-
docker-compose → 1.27.4
-
iptables-persistent, btrfs-progs, lsof, lvm2, psmisc, and apt packages
From Fresh Machine
sudo apt-get update
# Install Docker and Docker-compose
sudo apt-get install docker.io
sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# Install other dependencies
sudo apt install iptables-persistent btrfs-progs lsof lvm2 psmisc
# Setup Swapfile
sudo fallocate -l 16G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo cp /etc/fstab /etc/fstab.bak
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Before proceeding, notify the core team of the IP address of your full-sync node. It’s suggested to use an elastic IP for the whitelisted IP address. |
Installation
-
Download sync-node-cli tool
VERSION_NUM=2.2.0-sync-node.6 && sudo -E bash -c "curl -L https://github.com/skalenetwork/node-cli/releases/download/$VERSION_NUM/skale-$VERSION_NUM-`uname -s`-`uname -m`-sync > /usr/local/bin/skale"
-
Apply executable permissions to the downloaded binary:
chmod +x /usr/local/bin/skale
-
Test the installation
skale --help
-
Prepare
.env
file:CONTAINER_CONFIGS_STREAM="2.2.0-sync-node.0" ENDPOINT=[[By Validator], YOUR GETH/INFURA ENDPOINT] MANAGER_CONTRACTS_ABI_URL="https://raw.githubusercontent.com/skalenetwork/skale-network/master/releases/mainnet/skale-manager/1.9.0/skale-manager-1.9.0-mainnet-abi.json" IMA_CONTRACTS_ABI_URL="https://raw.githubusercontent.com/skalenetwork/skale-network/master/releases/mainnet/IMA/1.3.0/mainnet/abi.json" DISK_MOUNTPOINT=[[By Validator], your attached storage /dev/sda or /dev/xvdd (this is an example. You just need to use your 2TB block device)] DOCKER_LVMPY_STREAM="1.0.2-stable.0" ENV_TYPE="mainnet" SCHAIN_NAME=[[By Validator], SCHAIN NAME FOR YOUR SYNC NODE]
-
Init sync node:
skale sync-node init [ENV_FILE_PATH]
-
Wait until your sync node will be inited
-
After the node is successfully inited, wait until
skaled
will download the snapshot and starts catchup blocks (usually 15–30 minutes)
Setup SSL certs
Node SSL certificates support secure communication with sChain endpoints. By default, each node of a SKALE Chain listens on HTTP and WS ports. If SSL certs exist on the node, then HTTPS and WSS ports are also turned on.
To upload SSL certs to the node run:
skale ssl upload -c $PATH_TO_CERT_FILE -k $PATH_TO_KEY_FILE
To check the status of your certs run:
skale ssl status
Once certs are uploaded, HTTPS/WSS endpoints should become available for your chain.
Full sync node update
Update full sync SKALE node on current machine
skale sync-node update [ENV_FILEPATH]
Options:
-
--yes
- update without additional confirmation
Arguments:
-
ENV_FILEPATH
- path to env file where parameters are defined
You can just update a file with environment variables used during skale sync-node init .
|