// step 01
Installation
Fresh install of a Celestia mocha-4 node. Tested on Ubuntu 24.04 LTS (glibc ≥ 2.38).
⟶ Prerequisites
# System packages + Go 1.22
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl git wget htop tmux build-essential jq lz4 unzip bsdmainutils
ver="1.22.5"
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
⟶ Build celestia-appd
cd $HOME
git clone https://github.com/celestiaorg/celestia-app.git
cd celestia-app
APP_VERSION=v9.0.4-mocha
git checkout tags/$APP_VERSION -b $APP_VERSION
make install
celestia-appd version # → 9.0.4
⟶ Init & configure
# Replace MONIKER MONIKER="your_moniker" celestia-appd init "$MONIKER" --chain-id mocha-4 # Genesis wget -O $HOME/.celestia-app/config/genesis.json \ https://snapshots.axionis.space/celestia-mocha/genesis.json # Peers + seeds SEEDS="b402fe40f3474e9e208840702e1b7aa37f2edc4b@celestia-mocha-seed.axionis.space:14656" PEERS="946d5d44632a10c9b3600c22fa62a7b3ad9870c1@67.213.118.143:11656,c7dc0a1d45f062a6f929b98cb14bbc22b58d821b@173.201.36.182:26656,7723832b945caf2762ba9efc6ef2c76c5656f150@103.66.180.225:26656,e26506bc1ed8f5ea373e1b8c5bc74551607d78a6@151.115.60.15:26656,a99ea596936acf40d01668f0a0f5b0883f67be40@195.154.103.156:26656" sed -i -e "s|^seeds *=.*|seeds = \"$SEEDS\"|; s|^persistent_peers *=.*|persistent_peers = \"$PEERS\"|" \ $HOME/.celestia-app/config/config.toml # Min gas price + pruning sed -i 's|minimum-gas-prices =.*|minimum-gas-prices = "0.002utia"|g' \ $HOME/.celestia-app/config/app.toml sed -i \ -e 's|^pruning *=.*|pruning = "custom"|' \ -e 's|^pruning-keep-recent *=.*|pruning-keep-recent = "100"|' \ -e 's|^pruning-interval *=.*|pruning-interval = "19"|' \ $HOME/.celestia-app/config/app.toml
⟶ Systemd service
sudo tee /etc/systemd/system/celestia-appd.service > /dev/null <<EOF [Unit] Description=Celestia mocha-4 node After=network-online.target [Service] User=$USER ExecStart=$(which celestia-appd) start --home $HOME/.celestia-app Restart=on-failure RestartSec=10 LimitNOFILE=65535 [Install] WantedBy=multi-user.target EOF sudo systemctl daemon-reload sudo systemctl enable celestia-appd sudo systemctl start celestia-appd sudo journalctl -u celestia-appd -f -o cat
// step 02 · option a
Snapshot
Pruned snapshot refreshed daily at 04:00 UTC.
sudo systemctl stop celestia-appd # Backup priv_validator_state cp $HOME/.celestia-app/data/priv_validator_state.json \ $HOME/.celestia-app/priv_validator_state.json.backup # Reset celestia-appd tendermint unsafe-reset-all --home $HOME/.celestia-app --keep-addr-book # Download & extract curl -L https://snapshots.axionis.space/celestia-mocha/mocha-4_latest.tar.lz4 | \ lz4 -dc - | tar -xf - -C $HOME/.celestia-app # Restore priv_validator_state mv $HOME/.celestia-app/priv_validator_state.json.backup \ $HOME/.celestia-app/data/priv_validator_state.json sudo systemctl restart celestia-appd sudo journalctl -u celestia-appd -f -o cat
SHA256: 3f8a4c9e2d1b7e6f0a5c8d4b9e2f7a1c6d3e8b5a9f2c7e4d1b8a6c3f9e2d5b7a
// step 02 · option b
State Sync
Fast alternative – sync from trusted block without downloading a snapshot.
sudo systemctl stop celestia-appd cp $HOME/.celestia-app/data/priv_validator_state.json \ $HOME/.celestia-app/priv_validator_state.json.backup celestia-appd tendermint unsafe-reset-all --home $HOME/.celestia-app --keep-addr-book SNAP_RPC="https://celestia-mocha-rpc.axionis.space:443" LATEST_HEIGHT=$(curl -s $SNAP_RPC/block | jq -r .result.block.header.height) BLOCK_HEIGHT=$((LATEST_HEIGHT - 2000)) TRUST_HASH=$(curl -s "$SNAP_RPC/block?height=$BLOCK_HEIGHT" | jq -r .result.block_id.hash) sed -i \ -e "s|^enable *=.*|enable = true|" \ -e "s|^rpc_servers *=.*|rpc_servers = \"$SNAP_RPC,$SNAP_RPC\"|" \ -e "s|^trust_height *=.*|trust_height = $BLOCK_HEIGHT|" \ -e "s|^trust_hash *=.*|trust_hash = \"$TRUST_HASH\"|" \ $HOME/.celestia-app/config/config.toml mv $HOME/.celestia-app/priv_validator_state.json.backup \ $HOME/.celestia-app/data/priv_validator_state.json sudo systemctl restart celestia-appd sudo journalctl -u celestia-appd -f -o cat
// public endpoints
Public RPC & API
Open endpoints for development and bootstrap. Rate-limited but free.
RPC
https://celestia-mocha-rpc.axionis.space:443
REST API
https://celestia-mocha-api.axionis.space
gRPC
celestia-mocha-grpc.axionis.space:443
WSS
wss://celestia-mocha-rpc.axionis.space:443/websocket
# Quick status check
curl -s https://celestia-mocha-rpc.axionis.space/status | jq '.result.sync_info'
// connectivity
Live Peers
Fresh peer list, refreshed every 30 minutes.
PEERS="$(curl -sL https://files.axionis.space/celestia-mocha/peers.txt)" sed -i.bak -e "s|^persistent_peers *=.*|persistent_peers = \"$PEERS\"|" \ $HOME/.celestia-app/config/config.toml sudo systemctl restart celestia-appd
// connectivity
Addrbook
wget -O $HOME/.celestia-app/config/addrbook.json \ https://files.axionis.space/celestia-mocha/addrbook.json sudo systemctl restart celestia-appd
// maintenance
Upgrade Guide
▸ v9.0.2 → v9.0.4-mocha latest
# Check current version celestia-appd version # Build new version cd $HOME/celestia-app git fetch --all --tags git checkout v9.0.4-mocha make install /root/go/bin/celestia-appd version # → 9.0.4 # Restart sudo systemctl restart celestia-appd
// reference
Useful Commands
⟶ Service
sudo systemctl status celestia-appd sudo systemctl restart celestia-appd sudo journalctl -u celestia-appd -f -o cat
⟶ Sync status
celestia-appd status 2>&1 | jq .SyncInfo curl -s localhost:26657/status | jq .result.sync_info
⟶ Wallet
celestia-appd keys list celestia-appd q bank balances $(celestia-appd keys show wallet -a) celestia-appd tx bank send wallet <to> 1000utia \ --fees 1000utia -y
⟶ Validator
celestia-appd q staking validator \ $(celestia-appd keys show wallet --bech val -a) celestia-appd tx slashing unjail \ $(celestia-appd keys show wallet --bech val -a) \ --from wallet --chain-id mocha-4 --fees 1000utia -y