Skip to main content

How to Run a Full Node

This guide walks you through the process of setting up a node on Stable Testnet.

System Requirements

Before proceeding, ensure your system meets the following minimum requirements:

  • CPU: 4 cores
  • Memory: 8GB RAM
  • Storage: 500 GB NVMe/SSD with Write Throughput > 1000 MiBps
  • Network: 100 Mbps bandwidth

Step-by-step Guide

Install stabled

For Ubuntu 24.04

wget https://stable-testnet-data.s3.us-east-1.amazonaws.com/v7/stabled_testnet-v7_6436c55_ubuntu24.04_amd64.tar.gz
tar -xvzf stabled_testnet-v7_6436c55_ubuntu24.04_amd64.tar.gz
sudo mv stabled /usr/bin

For Ubuntu 22.04

wget https://stable-testnet-data.s3.us-east-1.amazonaws.com/v7/stabled_testnet-v7_6436c55_ubuntu22.04_amd64.tar.gz
tar -xvzf stabled_testnet-v7_6436c55_ubuntu22.04_amd64.tar.gz
sudo mv stabled /usr/bin

For Debian

wget https://stable-testnet-data.s3.us-east-1.amazonaws.com/v7/stabled_testnet-v7_6436c55_debian12_amd64.tar.gz
tar -xvzf stabled_testnet-v7_6436c55_debian12_amd64.tar.gz
sudo mv stabled /usr/bin

Initialize a New Stable Node

Before running your Stable node, we need to initialize the chain:

# The argument <moniker> is the custom username of your node. It should be human-readable.
export MONIKER=<moniker>
# Stable Testnet has a chain-id of "stabletestnet_2201-1"
stabled init $MONIKER --chain-id stabletestnet_2201-1

Prepare Configuration to Join Testnet

You should now update the default configuration with the Testnet's genesis file and application config file, as well as configure your persistent peers with seed nodes.

Genesis file

# Genesis file
wget https://stable-testnet-data.s3.us-east-1.amazonaws.com/stable_testnet_genesis.zip
unzip stable_testnet_genesis.zip
cp genesis.json ~/.stabled/config/genesis.json

Config files

wget https://stable-testnet-data.s3.us-east-1.amazonaws.com/rpc_node_config.zip
unzip rpcnode_config.zip
cp config.toml ~/.stabled/config/config.toml

sed -i "s/^moniker = \".*\"/moniker = \"$MONIKER\"/" ~/.stabled/config/config.toml
  • Please update the ~/.stabled/config/app.toml file accordingly.
  • For app.toml json-rpc.enable, the default value is false. Make sure you change the value to true.
  • Also in app.toml json-rpc.allow-unprotected-txs, make sure you change the value to true.

You can run the command below to verify the genesis checksum:

sha256sum ~/.stabled/config/genesis.json

# the output should be 66afbb6e57e6faf019b3021de299125cddab61d433f28894db751252f5b8eaf2

Configure systemd Service for stabled

Edit the config at /etc/systemd/system/stabled.service:

[Unit]
Description=Stable Daemon Service
After=network-online.target

[Service]
SyslogIndentifier=stabled
ExecStart=/bin/bash -c '/usr/bin/stabled start --chain-id stabletestnet_2201-1'
LimitNOFILE=65535
Type=simple
Restart=always
RestartSec=3
User=<USER>


[Install]
WantedBy=multi-user.target

Commands

Starting and restarting the systemd service:

sudo systemctl daemon-reload
sudo systemctl restart stabled
sudo systemctl status stabled

# enable start on system boot
sudo systemctl enable stabled

# To check Logs
journalctl -u stabled -f

If an error occurs in _C_getpwuid_r when running as a daemon, check /etc/nsswitch.conf and verify the order for passwd; try prioritizing files.

Node sync via snapshot

Use the instructions below to sync your node with the latest snapshot. Snapshots are updated weekly on Mondays at 00:00 UTC.

Archive Snapshot

sudo apt install -y wget zstd tar

sudo systemctl stop stable.service
mkdir $HOME/snapshot
cd $HOME/snapshot

wget https://stable-snapshot.s3.eu-central-1.amazonaws.com/archive.tar.zst

zstd -d --long=31 --memory=2048MB -c archive.tar.zst | tar -xvf - -C $HOME/.stabled

sudo systemctl start stable.service
sudo systemctl status stable.service

Pruned Snapshot

sudo apt install -y wget lz4 tar

sudo systemctl stop stable.service

mkdir $HOME/snapshot
cd $HOME/snapshot

wget https://stable-snapshot.s3.eu-central-1.amazonaws.com/snapshot.tar.lz4

tar -I lz4 -xvf $HOME/snapshot/snapshot.tar.lz4 -C $HOME/.stabled

sudo systemctl start stable.service
sudo systemctl status stable.service