Skip to content

Quick Start (Docker)

This guide helps you get the Optimum Gateway running quickly using Docker.

Before you start: Make sure you have the requirements from the overview page and that your firewall allows the required ports (see Network Requirements).

Hardware Requirements

Note: The gateway is a lightweight application that does not perform complex operations.

Minimum Requirements

  • CPU: 1 vCPU (ARM64 or x86_64)
  • RAM: 256MB available memory
  • Storage: 200MB free disk space
  • CPU: 2+ vCPUs
  • RAM: 512MB+ available memory
  • Storage: 500MB+ free disk space

Installation

sh
# Pull the gateway image
docker pull getoptimum/gateway:v0.0.1-rc1

Configuration

Create a config file (e.g., config/app_conf.yml):

yaml
# Minimal working config
log_level: debug
gateway_cluster_id: optimum_hoodi_v0_1  # REQUIRED - Network cluster identifier
gateway_id: "your_unique_gateway_id"  # Set your gateway_id, and use the Proxy Host address provided to you

# Suggested Gateway ID format:
# yourorg-region-hoodi-xx
# Example: optimum-eu-hoodi-01
agent_lib_p2p_port: 33212
agent_opt_p2p_port: 33213
identity_libp2p_dir: /tmp/libp2p
identity_optp2p_dir: /tmp/optp2p
telemetry_enable: true
telemetry_port: 48123
proxy_host:
  - PROXY_HOST_1:50051 # Real proxy hosts will be provided
  - PROXY_HOST_2:50051 # Real proxy hosts will be provided
  - PROXY_HOST_3:50051 # Real proxy hosts will be provided
eth_topics_subscribe:
  - /eth2/82556a32/beacon_block/ssz_snappy
  - /eth2/82556a32/beacon_aggregate_and_proof/ssz_snappy
  - /eth2/82556a32/attestation_subnet_0/ssz_snappy

Running the Gateway

sh
# Create directories
mkdir -p config data/libp2p data/optp2p

# libp2p listen port (exposed if you want CL peers to dial)
# metrics/version HTTP server (if enabled)
# mount config dir
# persist libp2p identity
# persist mumP2P protocol identity

docker run --name optimum-gateway --rm \
  -p 33212:33212/tcp \
  -p 48123:48123/tcp \
  -v $(pwd)/config:/app/config \
  -v $(pwd)/data/libp2p:/tmp/libp2p \
  -v $(pwd)/data/optp2p:/tmp/optp2p \
  getoptimum/gateway:v0.0.1-rc1 \
  -config=/app/config/app_conf.yml

Verify Gateway Started

sh
# Test version endpoint
curl http://localhost:48123/api/v1/version

# Test metrics endpoint (gateway_id should show your configured ID)
curl http://localhost:48123/metrics | grep gateway_id

# Check gateway logs for any errors
docker logs optimum-gateway

Note: You may see some "failed to connect to bootstrap node" errors - this is expected and normal during initial startup. See Common Issues for more details.

Connect Your CL Client

Add gateway peers – connect each CL client to all Gateways as a static peer.

  • Restart CLs with the peer (hot-add might not survive reboots).

Get your gateway's connection details:

sh
# Get your gateway's peer ID and IP
curl -s http://localhost:48123/api/v1/self_info

response:

json
{
  "multiaddrs": [
    "/ip4/192.168.1.223/tcp/33212"
  ],
  "peer_id": "16Uiu2HAkzmBdRzsvyUBCJqv7Ux2LqbfKHbNi7FqVLbKvem8UF6bT"
}

From the response:

  • YOUR_GATEWAY_IP = the IP from multiaddrs[0] (e.g., 192.168.1.223)
  • YOUR_GATEWAY_PEER_ID = the peer_id field (e.g., 16Uiu2HAkzmBdRzsvyUBCJqv7Ux2LqbfKHbNi7FqVLbKvem8UF6bT)

Restart your CL client with the corresponding flags:

Prysm (Beacon Node)

Prysm beacon flags use --peer. Supply the Gateway peer multiaddr:

sh
./beacon-chain \
  --peer=/ip4/YOUR_GATEWAY_IP/tcp/33212/p2p/YOUR_GATEWAY_PEER_ID \
  ...your existing flags...

Lighthouse

Coming soon

You can pass multiple peers; add the Gateway peer to your existing list.

Next Steps

Your gateway is now running! Here's what to do next:

Having problems? Check our Troubleshooting Guide for solutions to common startup issues.