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
Recommended Requirements
- CPU: 2+ vCPUs
- RAM: 512MB+ available memory
- Storage: 500MB+ free disk space
Installation
# Pull the gateway image
docker pull getoptimum/gateway:v0.0.1-rc8Configuration
Create a config file (e.g., config/app_conf.yml):
# 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
# Hoodi testnet with Fusaka BPO2 - use c6ecb76c fork digest
# NOTE: Currently only beacon_block is supported for focused metrics collection
# Future releases will support additional topics (attestations, aggregates, etc.)
eth_topics_subscribe:
- /eth2/c6ecb76c/beacon_block/ssz_snappyRunning the Gateway
# 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 33211:33211/tcp \
-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-rc8 \
-config=/app/config/app_conf.ymlVerify Gateway Started
# 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-gatewayNote: 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:
# Get your gateway's peer ID and IP
curl -s http://localhost:48123/api/v1/self_inforesponse:
{
"multiaddrs": [
"/ip4/192.168.1.223/tcp/33212"
],
"peer_id": "16Uiu2HAkzmBdRzsvyUBCJqv7Ux2LqbfKHbNi7FqVLbKvem8UF6bT"
}From the response:
YOUR_GATEWAY_IP= the IP frommultiaddrs[0](e.g.,192.168.1.223)YOUR_GATEWAY_PEER_ID= thepeer_idfield (e.g.,16Uiu2HAkzmBdRzsvyUBCJqv7Ux2LqbfKHbNi7FqVLbKvem8UF6bT)
Restart your CL client with the corresponding flags:
Prysm (Beacon Node)
Prysm beacon flags use --peer. Supply the Gateway peer multiaddr:
./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:
- Set Up Monitoring - Monitor your gateway's performance and health
- Advanced Configuration - Customize topics, ports, and settings for your setup
- Troubleshooting - Quick fixes for common issues
Having problems? Check our Troubleshooting Guide for solutions to common startup issues.

