# 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
```
