posthuman - nodes
Celestia
Celestia websiteCelestia githubCelestia twitterCelestia discord

Celestia

type:
mainnet
chain id:
celestia
rpc:
https://celestia-rpc.publicnode.com
rest:
https://rest-celestia-mainnet.posthuman.digital
grpc:
https://grpc-celestia-mainnet.posthuman.digital
peer:
2cc7330049bc02e4276668c414222593d52eb718@135.181.227.236:40656
snapshots:
https://snapshots.posthuman.digital/celestia-mainnet/
  • installation guide
  • bridge node setup
  • full node setup
  • light node setup
  • snapshots
  • decentralize map
  • one liner
  • skill
  • contributions

Celestia Mainnet — Consensus Node Installation

This guide installs a Celestia consensus node (celestia-appd) for mainnet chain ID celestia.

Current Versions

  • Recommended consensus binary: v9.0.6
  • Current protocol app: v9
  • Previous compatible app binary: v8.0.8
  • App v9 activated at height: 11771698
  • Go for source builds: 1.26.1+
  • POSTHUMAN snapshot format: PebbleDB snapshot-latest.tar.lz4; check snapshot.json for the latest published build

Use the v9.0.6 wrapper for new installs and recoveries. Mainnet has already passed the app v9 activation height.

Check live network state before choosing the binary:

curl -fsS https://celestia-rpc.publicnode.com/status | \ jq -r '.result.node_info.network, .result.sync_info.latest_block_height, .result.sync_info.catching_up'

Requirements

  • Ubuntu 24.04+ for the official release binary, or Ubuntu 22.04+ when building celestia-appd from source locally.
  • 16 CPU cores, 32 GB RAM, 2 TB NVMe, 1 Gbps network for validator-grade use.
  • Open ports:
    • P2P: 26656/tcp
    • RPC/API/gRPC only if intentionally exposed.

1. Install Packages

sudo apt update && sudo apt upgrade -y sudo apt install -y curl wget jq tar lz4 git make gcc chrony build-essential \ clang pkg-config libssl-dev ncdu

2. Install celestia-appd

Use the current recommended mainnet wrapper binary.

APP_VERSION="v9.0.6" cd "$HOME" rm -rf celestia-app-release mkdir celestia-app-release cd celestia-app-release curl -fLO "https://github.com/celestiaorg/celestia-app/releases/download/${APP_VERSION}/celestia-app_Linux_x86_64.tar.gz" curl -fLO "https://github.com/celestiaorg/celestia-app/releases/download/${APP_VERSION}/checksums.txt" sha256sum -c --ignore-missing checksums.txt tar -xzf celestia-app_Linux_x86_64.tar.gz chmod +x celestia-appd sudo mv celestia-appd /usr/local/bin/celestia-appd celestia-appd version

If the official binary fails with a GLIBC error on Ubuntu 22.04, build celestia-app from source on the host instead of using the release archive.

3. Initialize

MONIKER="<YOUR_NODE_NAME>" CHAIN_ID="celestia" CELESTIA_HOME="$HOME/.celestia-app" celestia-appd init "$MONIKER" --chain-id "$CHAIN_ID" --home "$CELESTIA_HOME"

4. Download Genesis and Addrbook

curl -fL https://snapshots.posthuman.digital/celestia-mainnet/genesis.json \ -o "$CELESTIA_HOME/config/genesis.json" curl -fL https://snapshots.posthuman.digital/celestia-mainnet/addrbook.json \ -o "$CELESTIA_HOME/config/addrbook.json" jq -r '.chain_id // .genesis.chain_id' "$CELESTIA_HOME/config/genesis.json"

Expected chain ID: celestia.

5. Configure

# Minimum gas price sed -i 's|minimum-gas-prices =.*|minimum-gas-prices = "0.002utia"|' \ "$CELESTIA_HOME/config/app.toml" # Pruned node profile sed -i -e 's|^pruning *=.*|pruning = "custom"|' \ -e 's|^pruning-keep-recent *=.*|pruning-keep-recent = "100"|' \ -e 's|^pruning-interval *=.*|pruning-interval = "19"|' \ "$CELESTIA_HOME/config/app.toml" # PebbleDB profile; required for current POSTHUMAN snapshots sed -i -e 's|^db_backend *=.*|db_backend = "pebbledb"|' \ "$CELESTIA_HOME/config/config.toml" if grep -q '^app-db-backend' "$CELESTIA_HOME/config/app.toml"; then sed -i 's|^app-db-backend *=.*|app-db-backend = "pebbledb"|' \ "$CELESTIA_HOME/config/app.toml" else printf '\napp-db-backend = "pebbledb"\n' >> "$CELESTIA_HOME/config/app.toml" fi # Disable transaction indexer unless you need indexed queries sed -i 's|^indexer *=.*|indexer = "null"|' \ "$CELESTIA_HOME/config/config.toml" # Enable Prometheus metrics sed -i 's|prometheus = false|prometheus = true|' \ "$CELESTIA_HOME/config/config.toml" # POSTHUMAN persistent peer PEERS="2cc7330049bc02e4276668c414222593d52eb718@135.181.227.236:40656" sed -i -e "/^\\[p2p\\]/,/^\\[/{s|^[[:space:]]*persistent_peers *=.*|persistent_peers = \\"$PEERS\\"|}" \ "$CELESTIA_HOME/config/config.toml"

6. Restore From POSTHUMAN Snapshot

Use the PebbleDB snapshot for faster sync. Verify snapshot.json against a trusted reference RPC before using it. If metadata and network height disagree, stop and investigate before restore.

curl -fsS https://snapshots.posthuman.digital/celestia-mainnet/snapshot.json | jq . curl -fsS https://celestia-rpc.publicnode.com/status | \ jq -r '.result.sync_info.latest_block_height'

Restore:

SNAP_DIR="$HOME/celestia-mainnet-snapshot-restore" rm -rf "$SNAP_DIR" mkdir -p "$SNAP_DIR" curl -fL https://snapshots.posthuman.digital/celestia-mainnet/snapshot-latest.tar.lz4 | \ lz4 -dc | tar -xf - -C "$SNAP_DIR" test -d "$SNAP_DIR/data/application.db" cp "$CELESTIA_HOME/data/priv_validator_state.json" \ "$CELESTIA_HOME/priv_validator_state.json.backup" 2>/dev/null || true sudo systemctl stop celestia-appd 2>/dev/null || true BACKUP_DIR="$CELESTIA_HOME/data.before-snapshot-$(date +%Y%m%d-%H%M%S)" if [ -d "$CELESTIA_HOME/data" ]; then mv "$CELESTIA_HOME/data" "$BACKUP_DIR" fi mv "$SNAP_DIR/data" "$CELESTIA_HOME/data" if [ -f "$CELESTIA_HOME/priv_validator_state.json.backup" ]; then mv "$CELESTIA_HOME/priv_validator_state.json.backup" \ "$CELESTIA_HOME/data/priv_validator_state.json" fi

7. Create Systemd Service

sudo tee /etc/systemd/system/celestia-appd.service > /dev/null <<EOF [Unit] Description=Celestia consensus node After=network-online.target [Service] User=$USER WorkingDirectory=$CELESTIA_HOME ExecStart=$(command -v celestia-appd) start --home $CELESTIA_HOME Restart=on-failure RestartSec=3 LimitNOFILE=65535 [Install] WantedBy=multi-user.target EOF sudo systemctl daemon-reload sudo systemctl enable celestia-appd sudo systemctl restart celestia-appd

8. Verify

sudo systemctl status celestia-appd --no-pager journalctl -u celestia-appd -n 100 --no-pager curl -fsS http://127.0.0.1:26657/status | jq -r ' .result.node_info.network, .result.sync_info.latest_block_height, .result.sync_info.latest_block_time, .result.sync_info.catching_up'

The node is ready when network=celestia, height advances, recent block time is fresh, and catching_up=false.

9. Wallet and Validator Commands

Create a wallet:

WALLET="wallet" celestia-appd keys add "$WALLET"

Restore a wallet:

WALLET="wallet" celestia-appd keys add "$WALLET" --recover

Create validator only after the node is synced and the operator has reviewed the transaction:

celestia-appd tx staking create-validator <validator.json> \ --from "$WALLET" \ --chain-id celestia \ --node http://127.0.0.1:26657 \ --fees 21000utia

Do not broadcast validator, staking, governance, or unjail transactions until the signer, account, sequence, gas, fees, and message are verified.