Skip to main content

Installation

General intro​

This guide helps you set up a Terra node - a machine that syncs the entire blockchain, allowing you to interact with the network or become a validator in the future.

Install Required Packages​

These tools are essential for downloading, compiling, and running your node. They’re standard packages used in almost every node setup.

sudo apt update && sudo apt upgrade -y
sudo apt install curl git wget htop tmux build-essential jq make lz4 gcc unzip -y

Install Go​

Go (or Golang) is the programming language Terra is built with. We need it to build the node binary terrad from source code.

cd $HOME
sudo rm -rf /usr/local/go
wget https://go.dev/dl/go1.23.6.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.23.6.linux-amd64.tar.gz
echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> $HOME/.bash_profile
source ~/.bash_profile
[ ! -d ~/go/bin ] && mkdir -p ~/go/bin
go version
which go
rm -rf go1.23.6.linux-amd64.tar.gz

Download and build binary​

Option 1: Build from source

cd $HOME
rm -rf core
git clone https://github.com/phoenix-directive/core
cd core
git checkout v2.17.3
make install
terrad version
which terrad

Option 2: Download Prebuilt Binary

wget -O terrad https://snapshots.onnode.org/mainnet/terra/terrad
chmod +x terrad
mv terrad $HOME/go/bin
terrad version
which terrad

Initialize the node​

Set node configuration

terrad config chain-id phoenix-1

Initialize the node

terrad init you-node-name --chain-id phoenix-1

Download Genesis & Addrbook Files

genesis.json defines the starting state of the chain. addrbook.json helps your node discover peers.

curl -Ls https://snapshots.onnode.org/mainnet/terra/genesis.json > $HOME/.terra/config/genesis.json
curl -Ls https://snapshots.onnode.org/mainnet/terra/addrbook.json > $HOME/.terra/config/addrbook.json

Add seed

Seed nodes help your node find and connect to the network. It’s like a bootstrap contact list.

sed -i -e "s|^seeds *=.*|seeds = \"[email protected]:29656\"|" $HOME/.terra/config/config.toml

Set minimum gas price

This tells your node to accept transactions with at least 0.005uatom gas price. Required for block creation.

sed -i -e "s|^minimum-gas-prices *=.*|minimum-gas-prices = \"0.015uluna\"|" $HOME/.terra/config/app.toml

Pruning & Indexer Settings

Pruning saves disk space by deleting older data. Disabling indexer also reduces storage load.

sed -i \
-e 's|^pruning *=.*|pruning = "custom"|' \
-e 's|^pruning-keep-recent *=.*|pruning-keep-recent = "100"|' \
-e 's|^pruning-keep-every *=.*|pruning-keep-every = "0"|' \
-e 's|^pruning-interval *=.*|pruning-interval = "10"|' \
$HOME/.terra/config/app.toml

sed -i 's/indexer = "kv"/indexer = "null"/g' $HOME/.terra/config/config.toml

Download Snapshot​

Instead of syncing the chain from scratch (which can take days), a snapshot lets your node start from a recent blockchain state and catch up quickly.

wget -O terra_latest.tar.lz4 https://snapshots.onnode.org/mainnet/terra/terra_latest.tar.lz4 && lz4 -c -d terra_latest.tar.lz4 | tar -x -C $HOME/.terra

Create service​

This lets your node run in the background like a service and auto-restart if it crashes.

sudo tee /etc/systemd/system/terrad.service > /dev/null << EOF
[Unit]
Description=terra node service
After=network-online.target
[Service]
User=$USER
ExecStart=$(which terrad) start
Restart=on-failure
RestartSec=5
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF

Start the service and check the logs. This shows real-time logs to help you monitor your node’s sync progress and status.

sudo systemctl daemon-reload
sudo systemctl enable terrad
sudo systemctl restart terrad
sudo journalctl -u terrad -f

Check If Your Node Is Synced​

Run the following command to watch your node's sync status in real time:

watch -n 1 "curl -s localhost:26657/status | jq"

You're fully synced when "catching_up": false, your node is fully synced with the network and ready to use.

{
"latest_block_height": "1234567",
"latest_block_time": "2025-10-25T10:31:37Z",
"catching_up": false
}