Celestia Node Setup Guide for Mocha Testnet
Celestia is a modular data availability network that securely scales with the number of users, making it easy for anyone to launch their own blockchain. By decoupling execution from consensus and introducing data availability sampling (DAS), Celestia enables a new generation of scalable blockchain architectures.
Hardware Requirements
Section titled “Hardware Requirements”The following minimum hardware specifications are recommended for running a Celestia validator node:
| Component | Minimum Requirement |
|---|---|
| Memory | 8 GB RAM |
| CPU | 6 Cores |
| Disk | 500 GB SSD Storage |
| Bandwidth | 1 Gbps Download / 1 Gbps Upload |
System Preparation
Section titled “System Preparation”Update the local package index and install the necessary dependencies for building the Celestia binary.
sudo apt update && sudo apt upgrade -ysudo apt install curl lz4 tar wget clang pkg-config libssl-dev jq build-essential bsdmainutils git make ncdu -yInstall Go
Section titled “Install Go”Celestia requires Go. The following block installs version 1.21.1 and configures your shell profile.
cd $HOMEver="1.21.1"wget "https://golang.org/dl/go$ver.linux-amd64.tar.gz"sudo rm -rf /usr/local/gosudo 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_profilesource $HOME/.bash_profilego versionInstallation and Configuration
Section titled “Installation and Configuration”Build Binary
Section titled “Build Binary”Clone the official repository and build the celestia-appd binary from source.
cd $HOMEgit clone https://github.com/celestiaorg/celestia-app.gitcd celestia-appgit checkout tags/v1.11.0 -b v1.11.0make installInitialize Node
Section titled “Initialize Node”Initialize the configuration files for the Mocha testnet.
celestia-appd init "your-node-name" --chain-id mocha-4celestia-appd config chain-id mocha-4celestia-appd config keyring-backend testNetwork Configuration
Section titled “Network Configuration”Download the genesis file and configure gas prices, address books, and peers.
# Genesis and Gascurl -Ls https://raw.githubusercontent.com/celestiaorg/networks/master/mocha-4/genesis.json > $HOME/.celestia-app/config/genesis.jsonsed -i -e "s|^minimum-gas-prices *=.*|minimum-gas-prices = \"0.002utia\"|" $HOME/.celestia-app/config/app.toml
# Addrbook and Peerscurl -Ls https://snapshots.kjnodes.com/celestia-testnet/addrbook.json > $HOME/.celestia-app/config/addrbook.json
SEEDS="9aa8a73ea9364aa3cf7806d4dd25b6aed88d8152@celestia-testnet.seed.mzonder.com:11156"PEERS="77244576dd7734b5f0b07a24a5d9a9ac3f6bd3d1@141.94.135.203:26656,59b72c3ef197ee18371a7bf2de5be0065e516843@62.171.148.127:26656,7c841f59c35d70d9f1472d7d2a76a11eefb7f51f@136.243.69.100:43656"
sed -i -e "s|^seeds *=.*|seeds = \"$SEEDS\"|" $HOME/.celestia-app/config/config.tomlsed -i -e "s|^persistent_peers *=.*|persistent_peers = \"$PEERS\"|" $HOME/.celestia-app/config/config.tomlPruning and Indexer Optimization
Section titled “Pruning and Indexer Optimization”To save disk space, configure custom pruning and disable the indexer if it is not required for your use case.
sed -i -e "s/^pruning *=.*/pruning = \"custom\"/" $HOME/.celestia-app/config/app.tomlsed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"100\"/" $HOME/.celestia-app/config/app.tomlsed -i -e "s/^pruning-interval *=.*/pruning-interval = \"50\"/" $HOME/.celestia-app/config/app.tomlsed -i -e "s/^indexer *=.*/indexer = \"null\"/" $HOME/.celestia-app/config/config.tomlService Management
Section titled “Service Management”Create a systemd service file to manage the node lifecycle and ensure it restarts automatically on failure.
sudo tee /etc/systemd/system/celestia-appd.service > /dev/null <<EOF[Unit]Description=Celestia Validator NodeAfter=network-online.target
[Service]User=$USERExecStart=$(which celestia-appd) start --home $HOME/.celestia-appRestart=on-failureRestartSec=10LimitNOFILE=65535
[Install]WantedBy=multi-user.targetEOF
sudo systemctl daemon-reloadsudo systemctl enable celestia-appdState Sync (Snapshot)
Section titled “State Sync (Snapshot)”Accelerate the synchronization process by using a recent snapshot.
sudo systemctl stop celestia-appd
# Backup original statecp $HOME/.celestia-app/data/priv_validator_state.json $HOME/.celestia-app/priv_validator_state.json.backup
# Reset and Download Snapshotcelestia-appd tendermint unsafe-reset-all --home $HOME/.celestia-app --keep-addr-bookcurl -L https://snapshots.kjnodes.com/celestia-testnet/snapshot_latest.tar.lz4 | tar -Ilz4 -xf - -C $HOME/.celestia-app
# Restore state and startmv $HOME/.celestia-app/priv_validator_state.json.backup $HOME/.celestia-app/data/priv_validator_state.jsonsudo systemctl restart celestia-appdValidator Deployment
Section titled “Validator Deployment”Wallet Creation
Section titled “Wallet Creation”Create a new wallet or recover an existing one. Ensure you save your mnemonic seed phrase.
celestia-appd keys add walletCheck Sync Status
Section titled “Check Sync Status”Before creating a validator, ensure your node is fully synchronized with the network.
celestia-appd status 2>&1 | jq .SyncInfo.catching_upNote: Proceed only if the output above is
false.
Create Validator Transaction
Section titled “Create Validator Transaction”Execute the staking transaction to register your node as a validator.
celestia-appd tx staking create-validator \--amount=1000000utia \--pubkey=$(celestia-appd tendermint show-validator) \--moniker="Your_Moniker" \--chain-id=mocha-4 \--commission-rate=0.1 \--commission-max-rate=0.2 \--commission-max-change-rate=0.01 \--min-self-delegation=1000000 \--from=wallet \--keyring-backend=test \--fees=36000utia \--gas-adjustment=1.5 \--gas=500000 \-y