๐Ÿ’พ Full Node Installation

Chain ID: celestia | Latest Version Tag: v5.0.1

Recommended Hardware:

Node Type
CPU
RAM
Storage

Mainnet

6

16GB

10TB

Install dependencies

# Update the repositories
sudo apt update && apt upgrade -y
# Install developer packages
sudo apt install curl git wget htop tmux build-essential jq make lz4 gcc unzip -y
# Install Go
sudo rm -rf /usr/local/go
curl -Ls https://go.dev/dl/go1.24.2.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)
echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> $HOME/.bash_profile
source $HOME/.bash_profile
go version

Automatic Installation

source <(curl -s https://raw.githubusercontent.com/validexisinfra/Celestia/main/setup_archiv_mainnet.sh)

Manual Installation

# 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.1

make install
# Config and initialize the node
celestia-appd config set client chain-id celestia
celestia-appd config set client keyring-backend file
celestia-appd config set client node tcp://localhost:26657

celestia-appd init $MONIKER --chain-id celestia
# Download genesis and addrbook
wget -O $HOME/.celestia-app/config/genesis.json https://mainnets1.validexis.com/celestia/genesis.json
wget -O $HOME/.celestia-app/config/addrbook.json https://mainnets1.validexis.com/celestia/addrbook.json

Setup config

# Set seeds and peers
SEEDS="12ad7c73c7e1f2460941326937a039139aa78884@celestia-mainnet-seed.itrocket.net:40656"
PEERS="60d481edb7e49efe01fa0b49a346cf9f8400db19@peer-celestia-mainnet.validexis.com:26656,[email protected]:11656,[email protected]:26656,[email protected]:28656,[email protected]:11656,[email protected]:43656,[email protected]:26656,[email protected]:12056,[email protected]:23356,[email protected]:2000,[email protected]:10456,[email protected]:11002,[email protected]:40656,[email protected]:26656,[email protected]:11656,[email protected]:11056,[email protected]:26656"
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 and disable indexing
sed -i -e "s|^minimum-gas-prices *=.*|minimum-gas-prices = \"0.002utia\"|" $HOME/.celestia-app/config/app.toml
sed -i -e "s/^indexer *=.*/indexer = \"kv\"/" $HOME/.celestia-app/config/config.toml

# Set pruning
sed -i \
  -e 's|^pruning *=.*|pruning = "nothing"|' \
  $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 service file
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
# Download latest chain snapshot
curl -L https://snapshots1.validexis.com/celestia-mainnet/snap_celestia-archive_6631124.tar.lz4 | tar -Ilz4 -xf - -C $HOME/.celestia-app/
# Enable and start service
sudo systemctl daemon-reload
sudo systemctl enable celestia-appd
sudo systemctl start celestia-appd && sudo journalctl -u celestia-appd -f
# Check status
celestia-appd status 2>&1 | jq .SyncInfo

#"catching_up": false means that the node is synchronized, we are waiting for complete synchronization

Last updated