> For the complete documentation index, see [llms.txt](https://scribcode.gitbook.io/home/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://scribcode.gitbook.io/home/testnet/celestia/installation.md).

# Installation

<figure><img src="/files/XiZoWW6MawZ2LeU39jvS" alt=""><figcaption></figcaption></figure>

**Chain ID**: mocha | **Latest Version Tag**: v0.11.0&#x20;

### Setup validator name

```
MONIKER="YOUR_MONIKER_GOES_HERE"
```

#### Install GO

```bash
sudo rm -rf /usr/local/go
sudo curl -Ls https://golang.org/dl/go1.19.4.linux-amd64.tar.gz | sudo tar -C /usr/local -xz
tee -a $HOME/.profile > /dev/null << EOF
export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin
EOF
source $HOME/.profile
```

### Download and build binaries

```bash
# Clone project repository

cd $HOME || return
rm -rf celestia-app
git clone https://github.com/celestiaorg/celestia-app.git
cd celestia-app || return
git checkout v0.11.0
make install
celestia-appd version # 0.11.0

```

### Initialize the node

```bash
# Set node configuration
celestia-appd config chain-id mocha
celestia-appd config keyring-backend test
celestia-appd config node tcp://localhost:20657

# Initialize the node
celestia-appd init "MONIKER" --chain-id mocha


# Download genesis and addrbook
curl -s https://raw.githubusercontent.com/celestiaorg/networks/master/mocha/genesis.json > $HOME/.celestia-app/config/genesis.json
curl -s https://snapshots3-testnet.nodejumper.io/celestia-testnet/addrbook.json > $HOME/.celestia-app/config/addrbook.json

# Add seeds
SEEDS=$(curl -sL https://raw.githubusercontent.com/celestiaorg/networks/master/mocha/seeds.txt | tr -d '\n')
PEERS=$(curl -sL https://raw.githubusercontent.com/celestiaorg/networks/master/mocha/peers.txt | tr -d '\n')
sed -i 's|^seeds *=.*|seeds = "'$SEEDS'"|; s|^persistent_peers *=.*|persistent_peers = "'$PEERS'"|' $HOME/.celestia-app/config/config.toml

# Set pruning
PRUNING_INTERVAL=$(shuf -n1 -e 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97)
sed -i 's|^pruning *=.*|pruning = "custom"|g' $HOME/.celestia-app/config/app.toml
sed -i 's|^pruning-keep-recent  *=.*|pruning-keep-recent = "100"|g' $HOME/.celestia-app/config/app.toml
sed -i 's|^pruning-interval *=.*|pruning-interval = "'$PRUNING_INTERVAL'"|g' $HOME/.celestia-app/config/app.toml
sed -i 's|^snapshot-interval *=.*|snapshot-interval = 2000|g' $HOME/.celestia-app/config/app.toml


# Set minimum gas price
sed -i 's|^minimum-gas-prices *=.*|minimum-gas-prices = "0.0001utia"|g' $HOME/.celestia-app/config/app.toml
sed -i 's|^prometheus *=.*|prometheus = true|' $HOME/.celestia-app/config/config.toml


# Create service
sudo tee /etc/systemd/system/celestia-appd.service > /dev/null << EOF
[Unit]
Description=Celestia Validator Node
After=network-online.target
[Service]
User=$USER
ExecStart=$(which celestia-appd) start
Restart=on-failure
RestartSec=10
LimitNOFILE=10000
[Install]
WantedBy=multi-user.target
EOF

#Download latest chain snapshot
celestia-appd tendermint unsafe-reset-all --home $HOME/.celestia-app --keep-addr-book

SNAP_NAME=$(curl -s https://snapshots3-testnet.nodejumper.io/celestia-testnet/ | egrep -o ">mocha.*\.tar.lz4" | tr -d ">")
curl https://snapshots3-testnet.nodejumper.io/celestia-testnet/${SNAP_NAME} | lz4 -dc - | tar -xf - -C $HOME/.celestia-app

sudo systemctl daemon-reload
sudo systemctl enable celestia-appd
sudo systemctl start celestia-appd

sudo journalctl -u celestia-appd -f --no-hostname -o cat
```

### Create Validator

```bash
# create validator wallet
celestia-appd keys add wallet

## console output:
#- name: wallet
#  type: local
#  address: celestia19kmadqs9nsppn4wz5yp4rw8zn9545rc4zwvs7
#  pubkey: '{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"Auq9WzVEs5pCoZgr2WctjI7fU+lJCH0I3r6GC1oa0tc0"}'
#  mnemonic: ""

#!!! SAVE SEED PHRASE
kite upset hip dirt pet winter thunder slice parent flag sand express suffer chest custom pencil mother bargain remember patient other curve cancel sweet


# create ORCHESTRATOR wallet
celestia-appd keys add orchestrator

## console output:
#  name: orchestrator
#  type: local
#- address: celestia1x5c4vj5u0wcgvdclrr6mk2ekrs7emcjpkfa3dw
#  pubkey: '{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"Aq4dSZa+5A3SR3+dZVWkXUcHmWuZQ+Xx7Iu1KHHtnWCW"}'

#!!! SAVE SEED PHRASE
infant wasp injury parrot morning bag wet clean address pact hobby emerge raccoon rain degree dwarf gas defense deposit maximum order cross powder monitor


# create a new ETH address in metamask or you can use already existing address


# wait util the node is synced, should return FALSE
curl -s localhost:26657/status | jq .result.sync_info.catching_up


# go to Celestia Discord https://discord.gg/kUSueaB22b and request tokens in faucet channel for validator and orchestrator addresses

# Check your balance
celestia-appd q bank balances $(celestia-appd keys show wallet -a)
celestia-appd q bank balances $(celestia-appd keys show orchestrator -a)

## console output:
#  balances:
#  - amount: "1000000"
#    denom: utia


# create validator
celestia-appd tx staking create-validator \
--amount=1000000utia \
--pubkey=$(celestia-appd tendermint show-validator) \
--moniker="YOUR_VALIDATOR_MONIKER" \
--chain-id=mocha \
--commission-rate=0.1 \
--commission-max-rate=0.2 \
--commission-max-change-rate=0.05 \
--min-self-delegation=1 \
--from=wallet \
--evm-address="YOUR_ETH_ADDRESS" \
--orchestrator-address="YOUR_ORCHESTRATOR_ADDRESS" \
--gas=auto \
--gas-adjustment=1.4 \
--fees=1000utia \
-y

# make sure you see the validator details
celestia-appd q staking validator $(celestia-appd keys show wallet --bech val -a)
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://scribcode.gitbook.io/home/testnet/celestia/installation.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
