# Installation

### Hardware requirements[​](https://docs.celestia.org/nodes/validator-node#hardware-requirements) <a href="#hardware-requirements" id="hardware-requirements"></a>

The following hardware minimum requirements are recommended for running a validator node:

* Memory: **8 GB RAM**
* CPU: **6 cores**
* Disk: **500 GB SSD Storage**
* Bandwidth: **1 Gbps for Download/1 Gbps for Upload**

**Update if needed**&#x20;

```
sudo apt update && sudo apt upgrade -y
```

## Insall packages

```
sudo apt install curl lz4 tar wget clang pkg-config libssl-dev jq build-essential bsdmainutils git make ncdu -y
```

**Install GO**&#x20;

```
cd $HOME ver="1.21.1" 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
```

```
cd $HOME
git clone https://github.com/celestiaorg/celestia-app.git
cd celestia-app
git checkout tags/v1.11.0 -b v1.11.0
make install
cd celestia-app
```

```
celestia-appd init "your node" --chain-id mocha
celestia-appd config chain-id mocha
celestia-appd config keyring-backend test
```

## Copy genesis - Minimum gas prices - Addrbook

```
cp $HOME/networks/mocha-4/genesis.json $HOME/.celestia-app/config/
```

```
sed -i -e "s|^minimum-gas-prices *=.*|minimum-gas-prices = \"0.002utia\"|" $HOME/.celestia-app/config/app.toml

curl -Ls https://snapshots.kjnodes.com/celestia-testnet/addrbook.json > $HOME/.celestia-app/config/addrbook.json
```

### Seed - Peer

```
SEEDS="9aa8a73ea9364aa3cf7806d4dd25b6aed88d8152@celestia-testnet.seed.mzonder.com:11156" sed -i "s|^seeds =.|seeds = "$SEEDS"|" $HOME/.celestia-app/config/config.toml ' or seed="61202a4c5c1164775750312ffa3849207e5d6dbe@rpc-t.celestia.nodestake.top:666" sed -i.bak -e "s/^seed =./seed = "$seed"/" ~/.celestia-app/config/config.toml

peers="77244576dd7734b5f0b07a24a5d9a9ac3f6bd3d1@141.94.135.203:26656,59b72c3ef197ee18371a7bf2de5be0065e516843@62.171.148.127:26656,7c841f59c35d70d9f1472d7d2a76a11eefb7f51f@136.243.69.100:43656,a8e6b8ba334ba7e9e7ffac6cbb3b1a6d99aed870@95.217.113.247:26656,85aef6d15d0197baff696b6e31c88e0f21073c59@162.55.245.144:2400,0640e5f6916438c593c888469637bbc0d3151784@185.252.220.89:25009,f50e7df64a35ca1da6efe19fb5f6f5228e7deff1@65.108.72.253:11656,7da0fb48d6ef0823bc9770c0c8068dd7c89ed4ee@185.225.232.196:11656,43c6ff929f5d6e2e8935b8e8cb89e8b5e4690eac@176.9.155.156:11656,49e0ad1852417267c60c63c2a86ea9e84c47c0ca@13.213.66.56:26656,8194b4f9c4d558a0a4d4242bce9274892cbfb386@20.250.38.245:26656,c387bc3418465231c9e77a3caec47d37b50aa9d9@136.243.88.91:6050" sed -i.bak -e "s/^persistent_peers =./persistent_peers = "$peers"/" ~/.celestia-app/config/config.toml
```

```
sed -i -e "s/^pruning *=.*/pruning = \"custom\"/" $HOME/.celestia-app/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"100\"/" $HOME/.celestia-app/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"50\"/" $HOME/.celestia-app/config/app.toml

sed -i -e "s/^indexer *=.*/indexer = \"null\"/" $HOME/.celestia-app/config/config.toml
```

**Create service**&#x20;

```
tee $HOME/celestia-appd.service > /dev/null <<EOF 
[Unit]
Description=celestia-appd 
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 mv $HOME/celestia-appd.service /etc/systemd/system/
sudo systemctl enable celestia-appd
sudo systemctl daemon-reload
```

```
celestia-appd keys add wallet
```

\
Check addr Validator<br>

```
 celestia-appd keys show yourwallet --bech val -a
```

**Snapshot**

```
sudo systemctl stop celestia-appd

celestia-appd tendermint unsafe-reset-all --home $HOME/.celestia-app --keep-addr-book

cp $HOME/.celestia-app/data/priv_validator_state.json $HOME/.celestia-app/priv_validator_state.json.backup

curl -L https://snapshots.kjnodes.com/celestia-testnet/snapshot_latest.tar.lz4 | tar -Ilz4 -xf - -C $HOME/.celestia-app

mv $HOME/.celestia-app/priv_validator_state.json.backup $HOME/.celestia-app/data/priv_validator_state.json

sudo systemctl restart celestia-appd && journalctl -u celestia-appd -f -o cat

```

Check sync\ <br>

```
celestia-appd status 2>&1 | jq .SyncInfo.catching_up
```

If it is False => Create Validator

```
CELESTIA_MONIKER=LuckyResearch
celestia-appd tx staking create-validator \
--amount=1000000utia \
--pubkey=$(celestia-appd tendermint show-validator) \
--moniker=$CELESTIA_MONIKER \
--chain-id=mocha-4 \
--commission-rate=0.1 \
--commission-max-rate=0.2 \
--commission-max-change-rate=0.01 \
--min-self-delegation=1000000 \
--from=wallet \
--identity=F971ECC74111BE74 \
--keyring-backend=test \
--fees=36000utia \
--gas-adjustment=1.5 \
--gas=500000 \
-y
```


---

# Agent Instructions: 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://services.luckyresearch.org/lucky-research-services/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.
