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
}