posthuman - nodes
Celestia
Celestia websiteCelestia githubCelestia twitterCelestia discord

Celestia

type:
mainnet
chain id:
celestia
rpc:
https://rpc-celestia-mainnet.posthuman.digital
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.4
  • 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, refreshed every 4 hours

Use the v9.0.4 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://rpc-celestia-mainnet.posthuman.digital/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.4" 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://rpc-celestia-mainnet.posthuman.digital/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.