// service module · mainnet

Celestia mainnet

Public infrastructure operated by Axionis: snapshots, state-sync, RPC & REST endpoints, live peers and install / upgrade guides for the Celestia mainnet.

chain-id
celestia
binary
v9.0.4
status
ACTIVE
// step 01

Installation

Fresh install of a Celestia mainnet 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
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 celestia

# Genesis
wget -O $HOME/.celestia-app/config/genesis.json \
  https://snapshots.axionis.space/celestia/genesis.json

# Peers + seeds
SEEDS="12ad7c823c2273ee54221d569a3a0f5e98a6dd64@celestia-seed.axionis.space:26656,e6d4e3fcd07b3b3a5b1d3e7e3a5b9c8d2e7f4a1b@seeds.polkachu.com:11456"
PEERS="3c1b8a4d6e2f9c5b7a1d8e6f4c2b9a5d3e8f7c1b@141.95.123.45:26656,8a2f4c6b9e1d5a7c3b8f6d2e4a9c1b7d5e3f8a6c@65.21.140.190:26656,5c9b3e7a1d4f8b6c2e5a9d7f3b1c8e4a6d2f5b9c@142.132.183.218:26656,9d4a8c2e6b1f5a3d7e9c4b8a2f6d1e5c3b7a9d4f@88.99.169.21:26656,b7c5e1d9a3f8b4c6d2e7a1f5b9c3d8e4a6f2c5b9@157.90.176.130: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 mainnet 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/celestia_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-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-rpc.axionis.space:443
REST API
https://celestia-api.axionis.space
gRPC
celestia-grpc.axionis.space:443
WSS
wss://celestia-rpc.axionis.space:443/websocket
# Quick status check
curl -s https://celestia-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/peers.txt)"
sed -i.bak -e "s|^persistent_peers *=.*|persistent_peers = \"$PEERS\"|" \
  $HOME/.celestia-app/config/config.toml
sudo systemctl restart celestia-appd

Raw: https://files.axionis.space/celestia/peers.txt

// connectivity

Addrbook

wget -O $HOME/.celestia-app/config/addrbook.json \
  https://files.axionis.space/celestia/addrbook.json
sudo systemctl restart celestia-appd
// maintenance

Upgrade Guide

Upgrade – v8.x → v9.0.4 latest
# Check current version
celestia-appd version

# Build new version
cd $HOME/celestia-app
git fetch --all --tags
git checkout v9.0.4
make install
/root/go/bin/celestia-appd version  # → 9.0.4

# Restart
sudo systemctl restart celestia-appd
v7 → v8 (CIP-49) archived · activation height 4 008 600
cd $HOME/celestia-app
git checkout v8.0.3
make install
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 celestia --fees 1000utia -y