Install

Recommended Hardware: 4 Cores, 8GB RAM, 250GB of storage (NVME)

Chain ID: mocha-4 | Latest Version Tag: v5.0.2-mocha

Dependencies Installation

Update system and install build tools

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

cd $HOME
ver="1.24.1" && \
wget "https://golang.org/dl/go$ver.linux-amd64.tar.gz" && \
sudo rm -rf /usr/local/go && \
sudo tar -C /usr/local -xzf "go$ver.linux-amd64.tar.gz" && \
rm "go$ver.linux-amd64.tar.gz" && \
echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> $HOME/.bash_profile && \
source $HOME/.bash_profile && \
go version

Automatic installation

Just copy and paste it on your server

source <(curl -s https://raw.githubusercontent.com/chaindigital/celestia/main/installvalidatortest.sh)

Set the variables

# Come up with the name of your node and replace it instead <your_moniker>
MONIKER=<your_moniker>

Download binary files

cd $HOME
rm -rf celestia-app
git clone https://github.com/celestiaorg/celestia-app.git
cd celestia-app
git checkout v5.0.2-mocha
make install

Initialize the node

# config and init app
celestia-appd config chain-id mocha-4
celestia-appd config keyring-backend file
celestia-appd config node tcp://localhost:26657

celestia-appd init $MONIKER --chain-id mocha-4

Set node configuration

# download genesis and addrbook
wget -O $HOME/.celestia-app/config/genesis.json https://testnets.chaindigital.io/celestia/genesis.json
wget -O $HOME/.celestia-app/config/addrbook.json https://testnets.chaindigital.io/celestia/addrbook.json

# set seeds and peers
SEEDS="5d0bf034d6e6a8b5ee31a2f42f753f1107b3a00e@celestia-testnet-seed.itrocket.net:11656"
PEERS="daf2cecee2bd7f1b3bf94839f993f807c6b15fbf@celestia-testnet-peer.itrocket.net:11656,[email protected]:40656,[email protected]:36656,[email protected]:26698,[email protected]:26656,[email protected]:26656,[email protected]:27206,[email protected]:26656,[email protected]:43656,[email protected]:26686,[email protected]:36656,[email protected]:36656,[email protected]:11656,[email protected]:21656,[email protected]:26656,[email protected]:26656,[email protected]:26656,[email protected]:26656,[email protected]:11656"
sed -i -e "/^\[p2p\]/,/^\[/{s/^[[:space:]]*seeds *=.*/seeds = \"$SEEDS\"/}" \
       -e "/^\[p2p\]/,/^\[/{s/^[[:space:]]*persistent_peers *=.*/persistent_peers = \"$PEERS\"/}" $HOME/.celestia-app/config/config.toml

# Set commit timeout
sed -i -e "s|^target_height_duration *=.*|timeout_commit = \"11s\"|" $HOME/.celestia-app/config/config.toml

# Set minimum gas price
sed -i -e "s|^minimum-gas-prices *=.*|minimum-gas-prices = \"0.002utia\"|" $HOME/.celestia-app/config/app.toml

# config pruning
sed -i -e "s/^pruning *=.*/pruning = \"custom\"/" $HOME/.celestia-app/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"100\"/" $HOME/.celestia-app/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"50\"/" $HOME/.celestia-app/config/app.toml

# Set configuration for v3
sed -i -e "s|^recv_rate *=.*|recv_rate = 10485760|" -e "s|^send_rate *=.*|send_rate = 10485760|" -e "s|^ttl-num-blocks *=.*|ttl-num-blocks = 12|" $HOME/.celestia-app/config/config.toml

Enable bbr

sudo modprobe tcp_bbr
echo "net.core.default_qdisc=fq" | sudo tee -a /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

Create a service

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

sudo systemctl daemon-reload
sudo systemctl enable celestia-appd

Download latest chain snapshot

cd $HOME
rm -rf ~/.celestia-app/data
mkdir -p ~/.celestia-app/data
curl -L https://testnets.chaindigital.io/celestia/snap_celestia-prun.tar.lz4 | lz4 -c -d - | tar -x -C $HOME/.celestia-app

Start service and check the logs

sudo systemctl start celestia-appd && sudo journalctl -u celestia-appd -f

Create wallet

# to create a new wallet, use the following command. don’t forget to save the mnemonic
celestia-appd keys add wallet

# to restore exexuting wallet, use the following command
celestia-appd keys add wallet --recover

# check sync status, once your node is fully synced, the output from above will print "false"
celestia-appd status 2>&1 | jq 

# before creating a validator, you need to fund your wallet and check balance
celestia-appd q bank balances $(celestia-appd keys show wallet -a)

Create validator

celestia-appd tx staking create-validator \
--amount 1000000utia \
--pubkey $(celestia-appd tendermint show-validator) \
--moniker "YOUR_MONIKER_NAME" \
--identity "YOUR_KEYBASE_ID" \
--details "YOUR_DETAILS" \
--website "YOUR_WEBSITE_URL" \
--chain-id mocha-4 \
--commission-rate 0.05 \
--commission-max-rate 0.20 \
--commission-max-change-rate 0.05 \
--min-self-delegation 1 \
--from wallet \
--gas 200000 \
--gas-prices 0.002utia \
-y

Last updated