---
title: "Run validators and RPC nodes with erpc validator and erpc rpc"
description: "erpc rpc runs RPC nodes on 18 chains and erpc validator runs validators on 13, with the same verbs on every chain and no ERPC account needed."
canonical: "https://erpc.global/en/doc/erpc-cli/nodes/"
locale: "en"
---

# Run validators and RPC nodes with erpc validator and erpc rpc

`erpc rpc` runs RPC nodes on 18 chains and `erpc validator` runs validators on 13 of them. Every chain uses the same verbs, and these node lifecycle commands are free and need no account.

This page describes ERPC CLI `v0.1.0-rc.4`, a pre-release. Acceptance on real hosts is still under way: [Where each chain stands](https://erpc.global/en/doc/erpc-cli/nodes/#where-each-chain-stands) and each chain's guide give the state of each chain.

## Deploy a node

`init` prepares a server and `deploy` installs and starts the node. An Ethereum RPC node starts from a bare Ubuntu server, 24.04 or later:

```bash
# check the server, pin the client releases, store the node in 1Password
erpc rpc --chain ethereum -n mainnet --name eth1 init --host <address> --vault <vault id> --ssh-key ~/.ssh/id_ed25519.pub
# install, fetch a snapshot, apply the firewall, start
erpc rpc --chain ethereum -n mainnet --name eth1 deploy --ssh-key ~/.ssh/id_ed25519.pub
# both layers, sync and head
erpc rpc --chain ethereum -n mainnet --name eth1 status --ssh-key ~/.ssh/id_ed25519.pub
```

Some chains need more in place first, and each chain's guide says what. A new Solana validator or RPC node needs three filesystems mounted and its keys already in 1Password.

## Choose the chain, network and host

Pick the chain with `--chain`, `ERPC_CHAIN` or the `default_chain` setting, the network with `-n`, and the host with `--name`. A change to mainnet needs `--chain` written on the command line.

- `erpc validator` (alias `v`), `erpc rpc` (alias `r`) and `erpc node` (alias `n`, for Avalanche and Sui) run the node commands.
- Run a command group without a verb (`erpc validator`) to list its verbs.
- On node commands, `--json` has to go before the command: `erpc --json rpc …`.

## Commands that work on every chain

| Verb | What it does |
| --- | --- |
| `init` | Checks the server, pins client releases, stores the node in 1Password and prepares the host |
| `deploy` | Installs or builds the client, fetches a snapshot, applies the firewall where erpc has one for that node, and starts the node |
| `list`, `status`, `logs` | Inventory, health and journal |
| `start`, `stop`, `restart` | Service control, in the right order for nodes with several layers |
| `update` | Moves to another client release; the rollback policy depends on the client |
| `update-config` | Applies configuration and access changes using the chain's restart rules |
| `plan` | Shows the chain's deployment or configuration plan |
| `destroy` | Stops or retires owned services; data, key and firewall retention follow the chain's operations guide |

A Solana validator recorded on the solv backend has only `init`, `deploy`, `list` and `status` of these.

## Chains and guides

| Chain | RPC node | Validator | Networks | Guides |
| --- | --- | --- | --- | --- |
| Solana | `erpc rpc --chain solana` | `erpc validator --chain solana` | mainnet, testnet | [Operations](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/solana-native.md), [Registration](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/solana-registration.md), [Chain](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/chains/solana.md) |
| Ethereum | `erpc rpc --chain eth` (mainnet, `--type full` or `archive`) | `erpc validator --chain eth` (Hoodi, mainnet) | mainnet, Hoodi | [RPC](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/ethereum-rpc.md), [Validator](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/ethereum-validator.md), [Chain](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/chains/ethereum.md) |
| Base | `erpc rpc --chain base` | | mainnet, sepolia | [Chain](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/chains/base.md) |
| Avalanche | `erpc rpc --chain avax` (also `erpc node`) | `erpc validator --chain avax` | mainnet, fuji | [Operations](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/avalanche.md), [Chain](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/chains/avalanche.md) |
| Bitcoin | `erpc rpc --chain bitcoin` | | mainnet, testnet4, signet, regtest | [RPC](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/bitcoin-rpc.md), [Chain](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/chains/bitcoin.md) |
| Polygon | `erpc rpc --chain polygon` | `erpc validator --chain polygon` | mainnet, amoy | [RPC](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/crates/erpc-chain-polygon/templates/README.md), [Validator](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/polygon-validator.md), [Chain](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/chains/polygon.md) |
| BNB Chain | `erpc rpc --chain bsc` | `erpc validator --chain bsc` | mainnet, chapel | [RPC](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/bsc-rpc.md), [Validator](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/bsc-validator.md), [Chain](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/chains/bsc.md) |
| Kaia | `erpc rpc --chain kaia` | `erpc validator --chain kaia` | mainnet, kairos | [RPC](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/kaia-rpc.md), [Core cell](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/kaia-core-cell.md), [Chain](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/chains/kaia.md) |
| Arbitrum | `erpc rpc --chain arbitrum` (mainnet, nova, sepolia) | `erpc validator --chain arbitrum` (Arbitrum One mainnet only) | mainnet, nova, sepolia | [RPC](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/nitro-rpc.md), [Validator](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/arbitrum-validator.md), [Chain](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/chains/arbitrum.md) |
| Optimism | `erpc rpc --chain optimism` | | mainnet, sepolia | [Operations](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/op-follower-rpc.md), [Chain](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/chains/optimism.md) |
| Hyperliquid | `erpc rpc --chain hyperliquid` | `erpc validator --chain hyperliquid` | mainnet, testnet | [RPC](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/hyperliquid-rpc.md), [Validator](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/hyperliquid-validator.md), [AQA](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/hyperliquid-aqa.md), [Chain](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/chains/hyperliquid.md) |
| Monad | `erpc rpc --chain monad` | `erpc validator --chain monad` | mainnet, testnet | [Operations](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/monad-node.md), [Chain](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/chains/monad.md) |
| TRON | `erpc rpc --chain tron` | `erpc validator --chain tron` | mainnet, nile | [Operations](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/crates/erpc-chain-tron/templates/README.md), [Chain](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/chains/tron.md) |
| Sui | `erpc rpc --chain sui` (also `erpc node`) | `erpc validator --chain sui` | mainnet, testnet | [Operations](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/crates/erpc-chain-sui/templates/README.md), [Chain](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/chains/sui.md) |
| NEAR | `erpc rpc --chain near` | `erpc validator --chain near` | mainnet, testnet | [RPC](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/near-rpc.md), [Validator](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/near-validator.md), [Chain](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/chains/near.md) |
| Arc | `erpc rpc --chain arc` | | mainnet, testnet | [RPC runtime](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/arc-runtime.md), [Chain](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/chains/arc.md) |
| Robinhood Chain | `erpc rpc --chain robinhood` | `erpc validator --chain robinhood` | mainnet, testnet | [Admission](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/robinhood-admission.md), [Validator](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/robinhood-defensive-validator.md), [Chain](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/chains/robinhood.md) |
| Soneium | `erpc rpc --chain soneium` | | mainnet, minato | [Chain](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/chains/soneium.md) |

[Running nodes](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/nodes.md) has the clients for each chain.

## What erpc needs on the server

- erpc logs in over SSH as a sudo user (`ubuntu` by default) with your key, from the 1Password SSH agent or `SSH_AUTH_SOCK`, and pins the host key the first time.
- The server needs `/usr/bin/python3` and a login whose `sudo` asks for no password.
- `/opt` must already be a real directory owned by root that neither its group nor others can write, as Ubuntu ships it; erpc does not create it. `/opt/erpc` and the `runs` and `uploads` directories erpc makes in it are held to the same rule, and none of these may be a symbolic link: to keep them on another volume, mount the volume at `/opt/erpc`. For a node, the filesystem that holds `/opt/erpc` must also keep POSIX ACLs (ext4 and XFS do by default), or erpc stops.
- A new Solana host needs Ubuntu 24.04, systemd 255 and x86-64 with AVX2 and SHA CPU features. ERPC requires at least 32 logical threads and 480 GiB of usable memory for a Solana RPC node, 24 threads and 300 GiB for a mainnet validator, and 24 threads and 120 GiB for a testnet validator.

## How erpc runs a node

- Most chains run the client as its own user that cannot log in, check each release against a pinned checksum before it is installed, and apply an nftables firewall with a timed rollback that a fresh management connection must confirm. Not all of them do: a new Solana node is built on the server from a pinned source commit, and a Solana node recorded on the solv backend runs as a login user with passwordless sudo and fetches some tools without a checksum.
- erpc applies no firewall to Solana validators on the solv backend, Ethereum validators or Bitcoin nodes, so filtering those hosts is yours to do.
- Keep an independent way to reach the host during network changes.
- While a protected service's drop-in directory holds another file, such as an `override.conf` from `systemctl edit`, the firewall step refuses and changes nothing. Move your drop-in out of the directory and run the command again.
- Secrets sent from your machine reach the server over standard input, never on a command line.
- A new Solana validator syncs under a separate identity with voting disabled. `deploy --activate-validator` switches a healthy host to its original registered identity after public registration and native BLS checks. `--backend solv` resumes an existing solv host and cannot create a new one.
- Do not restore an Ethereum validator's signer from a backup: move a signer with `erpc v --chain eth migrate`.

[Sign in and keys](https://erpc.global/en/doc/erpc-cli/sign-in-and-keys/#where-node-keys-are-kept) shows which keys each node keeps in 1Password and on the host.

## Where each chain stands

For every chain in the table, the implementation is checked offline, and live acceptance on real hosts is deferred. The RPC command-routing check exercises all twelve common verbs for all eighteen chains, and none of these checks runs a node on a real host. Each chain's page in the [chain source map](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/chains/README.md) says where it stands.
