This README provides a comprehensive guide to installing and running a node on the Stable testnet (chain ID: stabletestnet_2201-1). It is based on the official documentation from Stable Docs. This guide is intended for developers and node operators with basic Linux knowledge.
Note: This is for the testnet only. Always refer to the official docs for the latest updates, as testnet parameters may change.
- A Linux server (AMD64 or ARM64 architecture) meeting the system requirements (e.g., sufficient CPU, RAM, storage).
- Root or sudo access.
- Basic familiarity with Linux command line.
- Tools like
wget,tar,unzip,jq(for JSON parsing), andsha256suminstalled. - Go installed (for Cosmovisor, if using the recommended setup).
Use pre-compiled binaries. Building from source is not supported.
# Download the latest binary
wget https://stable-testnet-data.s3.us-east-1.amazonaws.com/stabled-latest-linux-amd64-testnet.tar.gz
# Extract the archive
tar -xvzf stabled-0.8.1-testnet-linux-amd64.tar.gz
# Move binary to system path
sudo mv stabled /usr/bin/
# Verify installation
stabled version# Download the binary
wget https://stable-testnet-data.s3.us-east-1.amazonaws.com/stabled-latest-linux-arm64-testnet.tar.gz
# Extract and install
tar -xvzf stabled-0.8.1-testnet-linux-arm64.tar.gz
sudo mv stabled /usr/bin/
# Verify installation
stabled versionexport MONIKER="your-node-name" # Replace with a unique namestabled init $MONIKER --chain-id stabletestnet_2201-1This creates the configuration directory at ~/.stabled/.
# Backup default genesis
mv ~/.stabled/config/genesis.json ~/.stabled/config/genesis.json.backup
# Download testnet genesis
wget https://stable-testnet-data.s3.us-east-1.amazonaws.com/stable_testnet_genesis.zip
unzip stable_testnet_genesis.zip
# Move to config directory
cp genesis.json ~/.stabled/config/genesis.json
# Verify checksum
sha256sum ~/.stabled/config/genesis.json
# Expected: 66afbb6e57e6faf019b3021de299125cddab61d433f28894db751252f5b8eaf2wget https://stable-testnet-data.s3.us-east-1.amazonaws.com/rpc_node_config.zip
unzip rpcnode_config.zip
# Backup original config
cp ~/.stabled/config/config.toml ~/.stabled/config/config.toml.backup
# Apply new configuration
cp config.toml ~/.stabled/config/config.toml
# Update moniker
sed -i "s/^moniker = \".*\"/moniker = \"$MONIKER\"/" ~/.stabled/config/config.tomlEdit ~/.stabled/config/app.toml:
[json-rpc]
enable = true
address = "0.0.0.0:8545"
ws-address = "0.0.0.0:8546"
allow-unprotected-txs = trueEdit ~/.stabled/config/config.toml:
[p2p]
max_num_inbound_peers = 50
max_num_outbound_peers = 30
persistent_peers = "5ed0f977a26ccf290e184e364fb04e268ef16430@37.187.147.27:26656,128accd3e8ee379bfdf54560c21345451c7048c7@37.187.147.22:26656"
pex = true
[rpc]
laddr = "tcp://0.0.0.0:26657"
max_open_connections = 900
cors_allowed_origins = ["*"]We recommend using Cosmovisor for automatic upgrades. Alternatively, use a standard systemd service.
go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@latest
# Or download pre-built: wget https://github.com/cosmos/cosmos-sdk/releases/download/cosmovisor%2Fv1.7.0/cosmovisor-v1.7.0-linux-amd64.tar.gz
# tar -xvzf cosmovisor-v1.7.0-linux-amd64.tar.gz
# sudo mv cosmovisor /usr/bin/
cosmovisor versionAdd to ~/.bashrc or ~/.profile:
echo "# Cosmovisor Configuration" >> ~/.bashrc
echo "export DAEMON_NAME=stabled" >> ~/.bashrc
echo "export DAEMON_HOME=$HOME/.stabled" >> ~/.bashrc
echo "export DAEMON_ALLOW_DOWNLOAD_BINARIES=true" >> ~/.bashrc
echo "export DAEMON_RESTART_AFTER_UPGRADE=true" >> ~/.bashrc
echo "export DAEMON_LOG_BUFFER_SIZE=512" >> ~/.bashrc
echo "export UNSAFE_SKIP_BACKUP=true" >> ~/.bashrc
source ~/.bashrcmkdir -p ~/.stabled/cosmovisor/genesis/bin
mkdir -p ~/.stabled/cosmovisor/upgrades
cp /usr/bin/stabled ~/.stabled/cosmovisor/genesis/bin/
ln -s ~/.stabled/cosmovisor/genesis ~/.stabled/cosmovisor/currentexport SERVICE_NAME=stable # Or your preferred name
sudo tee /etc/systemd/system/${SERVICE_NAME}.service > /dev/null <<EOF
[Unit]
Description=Cosmovisor daemon
After=network-online.target
[Service]
Environment="DAEMON_NAME=stabled"
Environment="DAEMON_HOME=$HOME/.stabled"
Environment="DAEMON_RESTART_AFTER_UPGRADE=true"
Environment="DAEMON_ALLOW_DOWNLOAD_BINARIES=true"
Environment="DAEMON_LOG_BUFFER_SIZE=512"
Environment="UNSAFE_SKIP_BACKUP=true"
User=$USER
ExecStart=$(which cosmovisor) run start --chain-id stabletestnet_2201-1
Restart=always
RestartSec=3
LimitNOFILE=65535
StandardOutput=journal
StandardError=journal
SyslogIdentifier=${SERVICE_NAME}
[Install]
WantedBy=multi-user.target
EOFsudo systemctl daemon-reload
sudo systemctl enable ${SERVICE_NAME}
sudo systemctl start ${SERVICE_NAME}
sudo systemctl status ${SERVICE_NAME}
sudo journalctl -u ${SERVICE_NAME} -fexport SERVICE_NAME=stable
sudo tee /etc/systemd/system/${SERVICE_NAME}.service > /dev/null <<EOF
[Unit]
Description=Stable Daemon Service
After=network-online.target
[Service]
User=$USER
ExecStart=/usr/bin/stabled start --chain-id stabletestnet_2201-1
Restart=always
RestartSec=3
LimitNOFILE=65535
StandardOutput=journal
StandardError=journal
SyslogIdentifier=${SERVICE_NAME}
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable ${SERVICE_NAME}
sudo systemctl start ${SERVICE_NAME}
sudo systemctl status ${SERVICE_NAME}
sudo journalctl -u ${SERVICE_NAME} -fWhen an upgrade is announced (e.g., v0.8.0):
UPGRADE_NAME="v0.8.0"
mkdir -p ~/.stabled/cosmovisor/upgrades/$UPGRADE_NAME/bin
# Download and extract new binary
wget https://stable-testnet-data.s3.us-east-1.amazonaws.com/v8/stabled-0.8.0-testnet-linux-amd64.tar.gz
tar -xvzf stabled-0.8.0-testnet-linux-amd64.tar.gz
mv stabled ~/.stabled/cosmovisor/upgrades/$UPGRADE_NAME/bin/curl -s localhost:26657/status | jq '.result.sync_info'
curl -s localhost:26657/net_info | jq '.result.n_peers'
curl -s localhost:26657/status | jq '.result.sync_info.latest_block_height'sudo journalctl -u ${SERVICE_NAME} -f
sudo journalctl -u ${SERVICE_NAME} --since "1 hour ago" | grep -i errorsudo ufw allow 22/tcp # SSH
sudo ufw allow 26656/tcp # P2P
sudo ufw allow 26657/tcp # RPC (if external)
sudo ufw enableFor faster sync, use snapshots from the Snapshots Guide.
- Check logs for errors.
- Ensure ports are open and disk space is available.
- Refer to Troubleshooting Guide.
- Configure further: Configuration Guide
- Monitor: Monitoring Guide
- Join Discord: Stable Discord
If you encounter issues, open an issue in this repo or check the official docs.