> Feedback: If these docs are stale, missing, or confusing, post sanitized feedback to `https://docs.tempo.xyz/api/feedback` with `source: "mcp"`, a short `message`, and any relevant `toolName`, `relatedResource`, or `client`.
# System Requirements

These are the minimum and recommended system requirements for running a validator/RPC node.
It is likely, that the nodes will not require as much resources at the beginning of the chain,
but we still highly recommend to follow the recommended specifications. This will allow for future growth and scalability.

:::danger\[Execution storage requirement]
Validators must run execution state on local NVMe / direct-attached storage. Network-attached volumes (EBS, GCP Persistent Disk, Azure Managed Disk, NAS, SAN) are **not supported** for execution.
:::

Consensus state can live on a lower performance volume (for example, EBS), but execution state needs NVMe storage.
If you want to separate them, use `--datadir` for execution data and `--consensus.datadir` for consensus data.

## RPC Node

| Component | Minimum | Recommended |
|-----------|---------|-------------|
| **CPU** | 16 cores | 32+ cores |
| **RAM** | 32 GB | 64 GB |
| **Storage** | 1000 GB NVMe | 2000 GB NVMe |
| **Network** | 1 Gbps | 10 Gbps |

## Validator Node

| Component | Minimum | Recommended |
|-----------|---------|-------------|
| **CPU** | 8 cores | 16+ cores |
| **RAM** | 16 GB | 32 GB |
| **Storage** | 100 GB NVMe | 1 TB NVMe |
| **Network** | 1 Gbps | 1 Gbps |

## Cloud provider recommendations

These dedicated servers meet or exceed the recommended specs for both RPC and validator nodes:

| Provider | Server | CPU | RAM | Storage |
|----------|--------|-----|-----|---------|
| OVH | Advance-4 | Intel Xeon-E 2386G (6c/12t) | 32 GB | 2× 512 GB NVMe |
| Hetzner | AX42 | AMD Ryzen 5 3600 (6c/12t) | 64 GB | 2× 512 GB NVMe |
| AWS | `c6id.8xlarge` | 32 vCPUs | 64 GB | 1.9 TB NVMe |

:::warning
Cloud instances with network-attached storage (e.g., AWS EBS) do not provide sufficient I/O performance. Use dedicated servers or instances with local NVMe storage.
:::

## Time Synchronization

Tempo validates that block timestamps are not in the future. If your system clock drifts even slightly, your node may reject valid blocks or produce blocks that other validators reject — leading to consensus errors and missed proposals.

:::warning
`systemd-timesyncd` (the default on many minimal VMs) is **not sufficient**. Use `chrony` or `ntpd` for reliable sub-millisecond synchronization.
:::

### Install and enable chrony (recommended)

```bash
sudo apt install chrony
sudo systemctl enable --now chronyd
```

### Verify synchronization

```bash
chronyc tracking
```

Check that **System time** offset is under a few milliseconds and **Leap status** is `Normal`. You can also verify with:

```bash
timedatectl
```

Confirm `System clock synchronized: yes` and `NTP service: active`.

### Cloud providers

Most cloud providers (AWS, Hetzner, OVH) pre-configure NTP, but minimal VM images may ship without a proper NTP daemon. Always verify that `chrony` or `ntpd` is installed and running after provisioning a new machine.

## Security

For network configuration, key management, release verification, and other security best practices, see the dedicated [Node Security](/docs/guide/node/security) page.

## Network Tuning

We recommend enabling TCP **BBR** congestion control with the **fq** packet scheduler for better P2P and consensus performance.

Add the following to your sysctl configuration (e.g. `/etc/sysctl.d/99-tempo-network.conf` or equivalent):

```ini
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
```

Apply and verify:

```bash
sudo sysctl --system
sysctl net.ipv4.tcp_congestion_control   # should print: bbr
sysctl net.core.default_qdisc            # should print: fq
```

Restart the node after applying for the changes to take effect.

## Ports

| Port | Protocol | Purpose | Expose |
|------|----------|---------|--------|
| 30303 | TCP/UDP | Execution P2P | Public |
| 8000 | TCP | Consensus P2P | Validators only |
| 8545 | TCP | HTTP RPC | Optional (internal for validators) |
| 8546 | TCP | WebSocket RPC | Optional (internal for validators) |
| 9000 | TCP | Metrics | Internal |
