Arc Mainnet is now live on Chainstack! Deploy reliable nodes for stablecoin finance today.    Start building
  • Agents
  • Pricing

How to run a Robinhood Chain node on AWS

Created Oct 16, 2026 Updated Oct 16, 2026

Running your own Robinhood Chain node gives your applications an RPC endpoint on infrastructure you control. It also means managing the server, storage, blockchain client, and monitoring.

Chainstack Self-Hosted provides a control plane for deploying and managing blockchain nodes in your own environment. In this guide, we’ll install it on an AWS EC2 instance, deploy a Robinhood Chain full node, and check that the node is ready to serve requests.

We’ll use a single-server Kubernetes setup with k3s. This provides a straightforward starting point for evaluation and an initial deployment. A production architecture will need additional planning for availability, backups, and endpoint access.

What you’ll deploy

The setup has three parts:

  • Amazon EC2 provides the Linux server and compute resources.
  • k3s runs the Kubernetes workloads.
  • Chainstack Self-Hosted provides the interface for deploying and managing your Robinhood Chain node.

Robinhood Chain uses Arbitrum Nitro and settles to Ethereum. Its node needs access to both an Ethereum execution RPC endpoint and an Ethereum Beacon API endpoint to retrieve parent-chain data, including blobs. These are separate from the Robinhood Chain RPC endpoint your applications will use.

This walkthrough targets mainnet. The network identifiers are:

NetworkChain IDeth_chainId response
Robinhood Chain mainnet46630x1237
Robinhood Chain testnet466300xb626

1. Plan your EC2 resources

Size the server for both the Control Panel and the blockchain node.

The Control Panel requires at least 5 CPU cores, 6 GiB of RAM, and 15 GB of storage. Chainstack recommends 8 cores, 16 GiB of RAM, and 20 GB of storage for the Control Panel itself. Blockchain workloads consume additional resources.

The current Robinhood Chain presets specify:

NetworkNode vCPUNode RAMListed steady-state storage
Mainnet864 GiB300 GB
Testnet432 GiB300 GB

Both use Nitro. Snapshot bootstrap temporarily needs approximately twice the listed steady-state node storage because the downloaded archive and extracted data coexist.

An EC2 r6i.4xlarge, with 16 vCPUs and 128 GiB of memory, is a reasonable starting candidate for this single-node walkthrough. It accommodates the mainnet preset and Control Panel minimum with additional headroom. This is a sizing suggestion, not a workload benchmark.

Check current storage needs before launching

Treat the preset’s storage figure as a planning reference. Robinhood’s own guide recommends several terabytes and locally attached NVMe storage, with capacity for twice the current chain size plus a buffer.

Before provisioning AWS storage, confirm the current snapshot size and the capacity required by the selected Chainstack preset. Allow room for extraction, chain growth, Kubernetes data, and the operating system.

For a simple persistent-disk walkthrough, you can use an adequately sized EBS gp3 root volume. This is an architectural tradeoff: EBS simplifies persistence, while Robinhood recommends local NVMe for node performance. Evaluate disk performance before relying on this layout for production.

With gp3, capacity, IOPS, and throughput are separate settings. Increasing disk size alone does not increase its baseline performance.

2. Launch an Ubuntu EC2 instance

In the AWS console:

1. Open EC2 and choose Launch instance.

Image logo

2. Select an Ubuntu Server 24.04 LTS x86-64 image.

Image 1 logo

3. Choose your instance type.

Image 2 logo

4. Create or select an SSH key pair.

Image 3 logo

5. Configure the root EBS volume using the storage sizing above.

Image 4 logo

6. Place the instance in a subnet with outbound internet access, and allow inbound TCP port 22 from your own public IP address.

Image 5 logo

For this walkthrough, we’ll access the Control Panel and node through SSH tunnels, so you only need SSH inbound access. Restrict its source to your IP address.

Connect from your computer:

chmod 400 chainstack-aws.pem
ssh -i chainstack-aws.pem ubuntu@YOUR_EC2_PUBLIC_IP

Ubuntu images use ubuntu as the default SSH username.

3. Prepare Kubernetes and the installation tools

On the EC2 instance, start a root shell:

sudo -i

Install the dependencies and Helm:

apt update
apt install -y curl gpg wget apt-transport-https openssl

curl -fsSL \
  https://packages.buildkite.com/helm-linux/helm-debian/gpgkey \
  | gpg --dearmor > /usr/share/keyrings/helm.gpg

echo "deb [signed-by=/usr/share/keyrings/helm.gpg] https://packages.buildkite.com/helm-linux/helm-debian/any/ any main" \
  > /etc/apt/sources.list.d/helm-stable-debian.list

apt update
apt install -y helm

Install the required Mike Farah version of yq:

wget https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 \
  -O /usr/local/bin/yq
chmod +x /usr/local/bin/yq

Install k3s and configure access:

curl -sfL https://get.k3s.io | sh -
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
kubectl get nodes
kubectl get storageclass

Wait until the Kubernetes node shows Ready. For this single-disk layout, use k3s’s default local-path storage class. Persistent data will consume space on the instance’s filesystem, so confirm that the root volume has the required capacity.

4. Install Chainstack Self-Hosted

Install cpctl, the Chainstack Self-Hosted command-line tool:

curl -sSL https://install.chainstack.com/cpctl.sh | sh
cpctl version

The CLI installs and upgrades the Control Panel. Installing the CLI alone does not deploy the application.

Download the Self-Hosted CLI

Run:

cpctl install -s local-path \
  --backend-url http://localhost:8081

We use localhost because the browser will reach the deployments API through an SSH tunnel.

Accept password generation, keep the default workload namespace, and select the monitoring installation option for a clean cluster. When installation finishes, check:

cpctl status

Wait for the overall status to become healthy.

The installer stores generated credentials in a timestamped YAML file under /root/.config/cp-suite/values/. Keep that file secure.

5. Open the Control Panel

On the EC2 instance, forward the UI and deployments API to loopback addresses:

kubectl port-forward -n control-panel \
  svc/cp-cp-ui 8080:80 --address 127.0.0.1 &

kubectl port-forward -n control-panel \
  svc/cp-cp-deployments-api 8081:8080 --address 127.0.0.1 &

Keep this session open. In another terminal on your computer, create the SSH tunnel:

ssh -i chainstack-aws.pem -N \
  -L 8080:127.0.0.1:8080 \
  -L 8081:127.0.0.1:8081 \
  ubuntu@YOUR_EC2_PUBLIC_IP

Open http://localhost:8080 in your browser. This adapts the documented testing port forwards by carrying traffic through SSH. Both forwards must remain active because the browser loads the UI and calls the deployments API separately.

Image 6 logo

Log in with username admin and the generated bootstrap password. Retrieve the password using the command printed by the installer, then update your credentials under Settings.

6. Deploy your Robinhood Chain node

Before creating the node, prepare Ethereum execution RPC and Beacon API endpoints for the selected network. For mainnet, use Ethereum mainnet upstreams. Make sure the endpoints are reachable from the EC2 instance and have enough request capacity for synchronization.

In the Control Panel:

1. Open Nodes.

Image 7 logo

2. Click + Add node and select Robinhood Chain

Image 8 logo

4. Select Mainnet.

Image 9 logo

5. Choose the available preset.

Image 10 logo

7. Review the configuration and create the node.

Image 11 logo

The preset determines the client and resource allocation. Confirm that the node’s persistent volume can accommodate snapshot extraction before starting.

The deployment will move through bootstrapping and then show Running. That status means the workload has started; the node may still be catching up with the chain.

7. Connect to the node and verify synchronization

Open the node details to find its connection information. Self-Hosted node endpoints are internal Kubernetes addresses, so applications outside the cluster need an access route.

For a local test, list the workload services on EC2:

kubectl get svc -n control-panel-deployments

Identify the service belonging to your Robinhood Chain deployment. Nitro uses port 8547 for HTTP JSON-RPC. Forward that service, replacing the placeholder:

kubectl port-forward -n control-panel-deployments \
  svc/YOUR_ROBINHOOD_SERVICE 8547:8547 \
  --address 127.0.0.1

From another terminal on your computer, open a second tunnel:

ssh -i chainstack-aws.pem -N \
  -L 8547:127.0.0.1:8547 \
  ubuntu@YOUR_EC2_PUBLIC_IP

Check the network:

curl -sS http://localhost:8547 \
  -H 'Content-Type: application/json' \
  --data '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}'

For mainnet, expect:

{"jsonrpc":"2.0","id":1,"result":"0x1237"}

Check synchronization:

curl -sS http://localhost:8547 \
  -H 'Content-Type: application/json' \
  --data '{"jsonrpc":"2.0","id":2,"method":"eth_syncing","params":[]}'

A synchronized node returns false. Also request the latest block number and compare it with the Robinhood Chain explorer:

curl -sS http://localhost:8547 \
  -H 'Content-Type: application/json' \
  --data '{"jsonrpc":"2.0","id":3,"method":"eth_blockNumber","params":[]}'

Check repeatedly to confirm that the block height advances and remains close to the network head.

Troubleshooting your deployment

SymptomWhat to check
Control Panel opens, but login failsKeep both tunnels active and confirm the backend URL is reachable from your browser.
Pods remain pendingInspect pod events for insufficient CPU, memory, or unbound persistent volume claims.
Bootstrap runs out of disk spaceAccount for both the snapshot archive and extracted chain data.
Node runs but falls behindCheck Ethereum execution and Beacon API connectivity, upstream quotas, and disk performance.
Application cannot reach the RPC endpointCheck whether it is using an internal Kubernetes address without a tunnel or another access route.

For Kubernetes diagnostics, start with:

kubectl get pods -n control-panel-deployments

kubectl get events -n control-panel-deployments \
  --sort-by=.metadata.creationTimestamp

The Self-Hosted troubleshooting guide covers installation and workload failures.

Move from the walkthrough to production

Once the node follows the chain head, connect a development application and test the RPC methods your workload needs.

For production, replace the temporary tunnels with a persistent access design. Keep administrative access private, protect application RPC access, monitor disk capacity and synchronization lag, and plan recovery for both the Control Panel and blockchain data.

Include EC2, storage performance, data transfer, backups, and Ethereum upstream usage in your cost estimate. A single-server deployment also has a shared failure point: losing the instance interrupts both management and RPC access.

Chainstack Self-Hosted gives you a consistent deployment and management workflow while you operate the infrastructure in your AWS account. Start with the Self-Hosted documentation, verify your node against the chain head, and size the next deployment around your application’s measured workload.

SHARE THIS ARTICLE
Top Ethereum Providers 530x281 logo

Top Ethereum RPC providers for 2025

Looking for the best Ethereum RPC provider? Compare top providers by pricing, latency, throughput, uptime, and developer experience to choose the right fit for your build.

T9c0d9l8p U093nk39uty C113729cea72 512 150x150 logo
Ana Levidze
Oct 27
Customer Stories

Cyvers

Cyvers hit 335% ROI on infrastructure with Chainstack Archive Nodes and Debug & Trace.

CertiK

CertiK cut Ethereum archive infrastructure costs by 70%+ for its radical take on Web3 security.

Darkpool Liquidity

Develop on various networks and protocols with ease, expanding at scale in a short period of time.