Skip to main content

Nibiru Installation

Chain ID: nibiru-itn-1 | Latest Version Tag: v0.19.2 | Custom Port: 139

System Requirements

Minimum Requirements

  • CPU: 4 cores
  • RAM: 8 GB
  • Storage: 200 GB SSD
  • Network: 100 Mbps

Recommended Requirements

  • CPU: 8 cores
  • RAM: 16 GB
  • Storage: 500 GB NVMe SSD
  • Network: 100 Mbps

Setup Validator Name

Replace YOUR_MONIKER_GOES_HERE with your validator name

MONIKER="YOUR_MONIKER_GOES_HERE"

Install Dependencies

Install Go and build tools
# Update system and install build tools
sudo apt -q update
sudo apt -qy install curl git jq lz4 build-essential
sudo apt -qy upgrade

# Install Go
sudo rm -rf /usr/local/go
curl -Ls https://go.dev/dl/go1.19.9.linux-amd64.tar.gz | sudo tar -xzf - -C /usr/local
eval $(echo 'export PATH=$PATH:/usr/local/go/bin' | sudo tee /etc/profile.d/golang.sh)
eval $(echo 'export PATH=$PATH:$HOME/go/bin' | tee -a $HOME/.profile)

Download and Build Binaries

Build from source
# Clone project repository
cd $HOME
rm -rf nibiru
git clone https://github.com/NibiruChain/nibiru.git
cd nibiru
git checkout v0.19.2

# Build binaries
make build

# Install binaries
sudo cp build/nibid /usr/local/bin/

Configure Nibiru Node

Initialize and configure
# Set vars
nibid config keyring-backend test
nibid config chain-id nibiru-itn-1
nibid init $MONIKER --chain-id nibiru-itn-1

# Download genesis and addrbook
curl -Ls https://snapshots.kjnodes.com/nibiru/genesis.json > $HOME/.nibid/config/genesis.json
curl -Ls https://snapshots.kjnodes.com/nibiru/addrbook.json > $HOME/.nibid/config/addrbook.json

# Add seeds
sed -i -e "s|^seeds *=.*|seeds = \"3f472746f46493309650e5a033076689996c8881@nibiru-testnet.rpc.kjnodes.com:13959\"|" $HOME/.nibid/config/config.toml

# Set custom ports
sed -i -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:13958\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:13957\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:13960\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:13956\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":13966\"%" $HOME/.nibid/config/config.toml
sed -i -e "s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:13917\"%; s%^address = \":8080\"%address = \":13980\"%; s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:13990\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:13991\"%" $HOME/.nibid/config/app.toml

Configure Pruning and Gas

Optimize configuration
# Set pruning
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 = "19"|' \
$HOME/.nibid/config/app.toml

# Set minimum gas price and enable prometheus
sed -i -e "s|^minimum-gas-prices *=.*|minimum-gas-prices = \"0.025unibiru\"|" $HOME/.nibid/config/app.toml
sed -i -e "s|prometheus = false|prometheus = true|" $HOME/.nibid/config/config.toml

Create Service File

Setup systemd service
sudo tee /etc/systemd/system/nibid.service > /dev/null <<EOF
[Unit]
Description=Nibiru node
After=network-online.target

[Service]
User=$USER
ExecStart=/usr/local/bin/nibid start --home $HOME/.nibid
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF

Enable and Start Service

sudo systemctl daemon-reload
sudo systemctl enable nibid
sudo systemctl restart nibid && sudo journalctl -u nibid -f --no-hostname -o cat

Download Latest Snapshot

To catch up quickly, you can download a recent snapshot:

1. Stop the service and reset data

sudo systemctl stop nibid && nibid tendermint unsafe-reset-all --home $HOME/.nibid --keep-addr-book

2. Download and extract snapshot

curl -L https://snapshots.kjnodes.com/nibiru-testnet/snapshot_latest.tar.lz4 | tar -Ilz4 -xf - -C $HOME/.nibid
[[ -f $HOME/.nibid/data/upgrade-info.json ]] && cp $HOME/.nibid/data/upgrade-info.json $HOME/.nibid/cosmovisor/genesis/upgrade-info.json

3. Start the service

sudo systemctl start nibid && sudo journalctl -u nibid -f --no-hostname -o cat

Create Wallet

Create a new wallet for your validator

# Create wallet
nibid keys add wallet

# Save wallet and validator info
nibid_WALLET_ADDRESS=$(nibid keys show wallet -a)
nibid_VALOPER_ADDRESS=$(nibid keys show wallet --bech val -a)
echo "export NIBID_WALLET_ADDRESS=\"$NIBID_WALLET_ADDRESS\"" >> $HOME/.bash_profile
echo "export NIBID_VALOPER_ADDRESS=\"$NIBID_VALOPER_ADDRESS\"" >> $HOME/.bash_profile
source $HOME/.bash_profile
⚠️ Important: Save your mnemonic phrase in a secure location!

Fund Your Wallet

Before creating a validator, you need to fund your wallet with testnet tokens.

Wallet Address: Use the address from the command above

Faucet: Visit the official Nibiru faucet or ask in Discord

Create Validator

Once your wallet is funded and your node is synced, create your validator:

nibid tx staking create-validator \
--amount 1000000unibi \
--pubkey $(nibid tendermint show-validator) \
--moniker $MONIKER \
--identity "FFB0AA51A2DF5955" \
--website "https://kjnodes.com" \
--details "Providing professional staking services with love" \
--chain-id nibiru-itn-1 \
--commission-rate 0.05 \
--commission-max-rate 0.20 \
--commission-max-change-rate 0.01 \
--min-self-delegation 1 \
--from wallet \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.025unibi \
-y

Useful Commands

Check sync status

nibid status 2>&1 | jq .SyncInfo

Check validator key

[[ $(nibid q staking validator $NIBID_VALOPER_ADDRESS -oj | jq -r .consensus_pubkey.key) = $(nibid status | jq -r .ValidatorInfo.PubKey.value) ]] && echo -e "\n\e[1m\e[32mTrue\e[0m\n" || echo -e "\n\e[1m\e[31mFalse\e[0m\n"

Check validator

nibid query staking validator $NIBID_VALOPER_ADDRESS

Check balance

nibid query bank balances $NIBID_WALLET_ADDRESS

Monitoring

Monitor your validator performance:

Advanced Configuration

Set up a pricefeeder

info

{% hint style="warning" %}

To run pricefeeder you validator should be in active set. Otherwise price feeder will not vote on periods. {% endhint %}

  1. Install the pricefeeder binary
curl -s https://get.nibiru.fi/pricefeeder! | bash
  1. Create new wallet for pricefeeder and save 24 word mnemonic phrase
nibid keys add pricefeeder-wallet
  1. Top up the pricefeeder-wallet going to Nibiru Discord #faucet channel.

    info

    In order to make pricefeeder work, it needs some testnet tokens to pay for transaction fees

  2. Export pricefeeder mnemonic into environment variable

export FEEDER_MNEMONIC="my pricefeeder 24 word mnemonic phrase goes here ..."
  1. Setup the systemd service
export CHAIN_ID="nibiru-itn-1"
export GRPC_ENDPOINT="localhost:39090"
export WEBSOCKET_ENDPOINT="ws://localhost:39657/websocket"
export EXCHANGE_SYMBOLS_MAP='{ "bitfinex": { "ubtc:uusd": "tBTCUSD", "ueth:uusd": "tETHUSD", "uusdt:uusd": "tUSTUSD" }, "binance": { "ubtc:uusd": "BTCUSD", "ueth:uusd": "ETHUSD", "uusdt:uusd": "USDTUSD", "uusdc:uusd": "USDCUSD", "uatom:uusd": "ATOMUSD", "ubnb:uusd": "BNBUSD", "uavax:uusd": "AVAXUSD", "usol:uusd": "SOLUSD", "uada:uusd": "ADAUSD", "ubtc:unusd": "BTCUSD", "ueth:unusd": "ETHUSD", "uusdt:unusd": "USDTUSD", "uusdc:unusd": "USDCUSD", "uatom:unusd": "ATOMUSD", "ubnb:unusd": "BNBUSD", "uavax:unusd": "AVAXUSD", "usol:unusd": "SOLUSD", "uada:unusd": "ADAUSD" } }'
export VALIDATOR_ADDRESS=$(nibid keys show wallet --bech val -a)

sudo tee /etc/systemd/system/pricefeeder.service<<EOF
[Unit]
Description=Nibiru Pricefeeder
Requires=network-online.target
After=network-online.target

[Service]
Type=exec
User=$USER
Group=$USER
ExecStart=/usr/local/bin/pricefeeder
Restart=on-failure
ExecReload=/bin/kill -HUP $MAINPID
KillSignal=SIGTERM
PermissionsStartOnly=true
LimitNOFILE=65535
Environment=CHAIN_ID='$CHAIN_ID'
Environment=GRPC_ENDPOINT='$GRPC_ENDPOINT'
Environment=WEBSOCKET_ENDPOINT='$WEBSOCKET_ENDPOINT'
Environment=EXCHANGE_SYMBOLS_MAP='$EXCHANGE_SYMBOLS_MAP'
Environment=FEEDER_MNEMONIC='$FEEDER_MNEMONIC'
Environment=VALIDATOR_ADDRESS='$VALIDATOR_ADDRESS'

[Install]
WantedBy=multi-user.target
EOF
  1. Delegate pricefeeder responsibility
info

As a validator, if you'd like another account to post prices on your behalf (i.e. you don't want your validator mnemonic sending txs), you can delegate pricefeeder responsibilities to another nibi address.

nibid tx oracle set-feeder $(nibid keys show pricefeeder-wallet -a) --from wallet
  1. Register and start the systemd service
sudo systemctl daemon-reload && \
sudo systemctl enable pricefeeder && \
sudo systemctl start pricefeeder
  1. View pricefeeder logs
journalctl -fu pricefeeder

credit : kjnodes