> ## Documentation Index
> Fetch the complete documentation index at: https://cosmos-docs-tweak-colors.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Run a Full Node

> This page explains how to run a full node for the Gaia EVM Devnet.

## Run a full node

For validators, developers, or users who need full control and don't want to rely on public endpoints, you can run your own synced node.

### Join the Devnet

Running a full node gives you complete control, better performance, and eliminates dependency on public infrastructure.

### Prerequisites

* Minimum hardware requirements:
  * 4+ CPU cores
  * 8GB+ RAM
  * 500GB+ SSD storage
  * Reliable internet connection

### Quick Setup

1. **Install dependencies** (Ubuntu/Debian):

```bash lines expandable
sudo apt update && sudo apt install -y \
  build-essential git curl wget jq lz4 liblz4-tool \
  protobuf-compiler pkg-config unzip
```

2. **Install Go 1.22+**:

```bash lines expandable
GO_VERSION=1.22.4
curl -LO "https://go.dev/dl/go${GO_VERSION}.linux-amd64.tar.gz"
sudo rm -rf /usr/local/go
tar -C /usr/local -xzf "go${GO_VERSION}.linux-amd64.tar.gz"
echo 'export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin' >> ~/.bashrc
source ~/.bashrc
```

3. **Build the binary**:

```bash lines expandable
git clone https://github.com/cosmos/evm.git
cd evm
make install  # installs 'evmd'
```

4. **Initialize your node**:
   `evmd init "your-node-name" --chain-id 4321`

5. **Get the genesis file**:
   `curl -s https://devnet-1-rpc.ib.skip.build/genesis | jq .result.genesis > ~/.evmd/config/genesis.json`

6. **Configure peers** (add to `~/.evmd/config/config.toml`):

```toml lines expandable
persistent_peers = "peer1@ip1:26656,peer2@ip2:26656"
seeds = "seed1@ip1:26656,seed2@ip2:26656"
```

7. **Start syncing**:
   `evmd start`

### State Sync (Faster Alternative)

Instead of syncing from genesis, use state sync for faster setup:

```bash title="config.toml" lines expandable
# Configure state sync in config.toml
[statesync]
enable = true
rpc_servers = "https://devnet-1-rpc.ib.skip.build:443,https://devnet-1-rpc.ib.skip.build:443"
trust_height = 1000000
trust_hash = "TRUST_HASH_HERE"
```

### Endpoints After Setup

Once your node is running, it will expose:

```
Cosmos RPC:     http://localhost:26657
Cosmos gRPC:    http://localhost:9090
Cosmos REST:    http://localhost:1317
EVM RPC:        http://localhost:8545
EVM WebSocket:  ws://localhost:8546
```

### Monitoring

Monitor your node's sync status:

```bash lines expandable
# Check if syncing
evmd status | jq .SyncInfo.catching_up

# View latest block
evmd status | jq .SyncInfo.latest_block_height
```

### Next Steps

* **Validator Setup**: If you want to become a validator, see the [validator guide](/docs/devnet/validators)
* **Configuration**: Tune your node for performance and security
* **Monitoring**: Set up alerting and metrics collection
* **Backup**: Implement backup strategies for your validator key

Your node will now be fully synced with the devnet and can be used for any purpose - from development to validation to serving your own applications.
