Quick Start (Docker)
Get the Optimum Gateway running with Docker.
Prerequisites: Requirements and Network Requirements.
Hardware Requirements
Minimum: 2+ vCPUs, 512MB RAM, 500MB+ disk
Recommended: 4+ vCPUs
Installation
docker pull getoptimum/gateway:v0.0.1-rc12Configuration
Create config/app_conf.yml:
log_level: debug
gateway_cluster_id: optimum_hoodi_v0_3
gateway_id: "your_unique_gateway_id"
partner_id: "your_partner_id"
sidecar_listen_port: 33211
agent_lib_p2p_port: 33212
agent_opt_p2p_port: 43213
identity_libp2p_dir: /tmp/libp2p
identity_optp2p_dir: /tmp/optp2p
telemetry_enable: true
telemetry_port: 48123
enable_aggregation: true
# Remote push observability (credentials shared separately by the team)
remote_push_enable: true
remote_push_client_id: "<shared by team>"
remote_push_client_secret: "<shared by team>"
eth_topics_subscribe:
- beacon_block
- beacon_attestation_0
- beacon_attestation_1
- beacon_attestation_2
- beacon_attestation_3
- beacon_attestation_4
- beacon_attestation_5
- beacon_attestation_6
- beacon_attestation_7
- beacon_attestation_8
- beacon_attestation_9
- beacon_attestation_10
- beacon_attestation_11
- beacon_attestation_12
- beacon_attestation_13
- beacon_attestation_14
- beacon_attestation_15
- beacon_attestation_16
- beacon_attestation_17
- beacon_attestation_18
- beacon_attestation_19
- beacon_attestation_20
- beacon_attestation_21
- beacon_attestation_22
- beacon_attestation_23
- beacon_attestation_24
- beacon_attestation_25
- beacon_attestation_26
- beacon_attestation_27
- beacon_attestation_28
- beacon_attestation_29
- beacon_attestation_30
- beacon_attestation_31
- beacon_attestation_32
- beacon_attestation_33
- beacon_attestation_34
- beacon_attestation_35
- beacon_attestation_36
- beacon_attestation_37
- beacon_attestation_38
- beacon_attestation_39
- beacon_attestation_40
- beacon_attestation_41
- beacon_attestation_42
- beacon_attestation_43
- beacon_attestation_44
- beacon_attestation_45
- beacon_attestation_46
- beacon_attestation_47
- beacon_attestation_48
- beacon_attestation_49
- beacon_attestation_50
- beacon_attestation_51
- beacon_attestation_52
- beacon_attestation_53
- beacon_attestation_54
- beacon_attestation_55
- beacon_attestation_56
- beacon_attestation_57
- beacon_attestation_58
- beacon_attestation_59
- beacon_attestation_60
- beacon_attestation_61
- beacon_attestation_62
- beacon_attestation_63Gateway ID format: yourorg-region-hoodi-xx (e.g. optimum-eu-hoodi-01)
Run
mkdir -p config data/libp2p data/mump2p
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/mump2p:/tmp/optp2p \
getoptimum/gateway:v0.0.1-rc12 \
-config=/app/config/app_conf.ymlVerify
Health check:
curl http://localhost:48123/health{
"status": "healthy",
"gateway_id": "optimum-dev-hoodi-kubernetes-validator-lighthouse",
"version": "v0.0.1-rc12",
"commit_hash": "a0b2bc1",
"uptime_seconds": 1639,
"checks": {
"cl_peers": {"status": "ok", "value": 1},
"last_block_age_sec": {"status": "ok", "value": 1},
"mump2p_peers": {"status": "ok", "value": 13},
"subscribed_topics": {"status": "ok", "value": 65}
}
}Metrics with your gateway_id:
curl http://localhost:48123/metrics | grep gateway_idoptp2p_gateway_optimum_gateway_app_build_info{commit="a0b2bc1",gateway_id="your-gateway-id",...} 1
optp2p_gateway_optimum_gateway_mump2p_peers{gateway_id="your-gateway-id"} 13
...Startup logs (fork digest, topics):
docker logs optimum-gateway{"msg":"initialized fork digest from chain default","fork_digest":"c6ecb76c","chain":"hoodi"}
{"msg":"fork digest updated from bootstrap","fork_digest":"c6ecb76c"}
{"msg":"subscribed to topic","topic":"/eth2/c6ecb76c/beacon_block/ssz_snappy"}
{"msg":"subscribed to topic","topic":"/eth2/c6ecb76c/beacon_attestation_0/ssz_snappy"}
...Note: "Failed to connect to bootstrap" during startup is normal. See Troubleshooting.
Connect CL Client
Get gateway peer info:
curl -s http://localhost:48123/api/v1/self_infoUse libp2p.multiaddrs[0] (or another reachable multiaddr) for IP and peer_id for peer ID.
Prysm
./beacon-chain \
--peer=/ip4/YOUR_GATEWAY_IP/tcp/33212/p2p/YOUR_GATEWAY_PEER_ID \
...Teku
teku \
--p2p-direct-peers=/ip4/YOUR_GATEWAY_IP/tcp/33212/p2p/YOUR_GATEWAY_PEER_ID \
--p2p-static-peers=/ip4/YOUR_GATEWAY_IP/tcp/33212/p2p/YOUR_GATEWAY_PEER_ID \
...Use --p2p-direct-peers (not just --p2p-static-peers) — static peers can be pruned. See Troubleshooting – Teku PeerDAS for details.
Lighthouse
Add your Lighthouse node as a direct peer in the gateway config so the gateway auto-reconnects after restarts:
direct_cl_peers:
- /ip4/YOUR_LIGHTHOUSE_IP/tcp/9000/p2p/YOUR_LIGHTHOUSE_PEER_IDSee Troubleshooting – Lighthouse v8.x for additional required flags.
Nimbus
Point Nimbus at the gateway (multiaddr or ENR; multiaddr is typical):
nimbus_beacon_node \
--direct-peer=/ip4/YOUR_GATEWAY_IP/tcp/33212/p2p/YOUR_GATEWAY_PEER_ID \
--netkey-file=/data/netkey \
...Add your Nimbus node in the gateway config so the gateway reconnects after restarts:
direct_cl_peers:
- /ip4/YOUR_NIMBUS_IP/tcp/YOUR_NIMBUS_P2P_PORT/p2p/YOUR_NIMBUS_PEER_IDUse a stable --netkey-file (not random) — Nimbus requires it for privileged direct peers. See Troubleshooting – Nimbus for verification and common issues.
Next Steps
- Configuration – Topics, ports, advanced settings
- Troubleshooting – Common issues
- Metrics – Gateway and mesh metrics

