ethereum-rpc-docker
Open-source docker-compose supported configurations for 90 mainnet chains (+81 testnets). Free, documented, and production-ready.
The Honest Pitch
You can run this yourself — it's free, documented, and we help. We publish everything: the Dockerfiles, the compose configurations, the health checks, the monitoring. If you have Docker and a server, you have an RPC node.
But here's the thing: running a broad fleet reliably is hard. There are hardforks to track, client updates to apply, sync issues to debug, peer management to handle. Someone needs to monitor it all, 24/7.
That's where we come in. We run a production subset of these same node configurations on our fleet, keep them synced, upgrade through hardforks automatically, and monitor every node. You get reliable RPC without the operational overhead.
Quickstart
Here's how easy it is to self-host. Pick your nodes — always base.yml and rpc.yml first:
git clone https://git.stakesquid.eu/StakeSquid/ethereum-rpc-docker.git && cd ethereum-rpc-docker
# .env: IP, CHAINS_SUBNET, DOMAIN, MAIL, WHITELIST (see README for the full example)
# pick your nodes — always base.yml and rpc.yml first:
COMPOSE_FILE=base.yml:rpc.yml:ethereum-mainnet-geth-pruned.yml
docker compose up -d
./show-status.sh # status of all nodes
See? That honestly works. And it works across our supported configurations (90 mainnets + 81 testnets) — just change the compose file.
Supported Configurations
We maintain docker-compose node configurations for:
- Ethereum Mainnet — Geth, Nethermind, Besu, Erigon, Reth
- All L2s — Arbitrum, Optimism, Polygon, zkSync, Starknet, Base, and more
- Testnets — Sepolia, Holesky, and every L2 testnet
- The long tail — 90 mainnet + 81 testnet supported configurations
Each node configuration includes:
- Production-ready client configuration
- Health checks and auto-restart
- Standardized RPC port (8545)
- Standardized metrics port (9090)
- Volume mounts for chain data persistence
See the full list in the repository.
Releases & Changelog
We publish releases that aggregate important hardfork and upgrade information from across the ecosystem. Each release includes:
- Client version bumps for security/hardfork support
- New network additions
- Configuration improvements
- Deprecations and removals
Note: Until we have a data/releases.json feed, we link directly
to Gitea. This is intentional — we want you to see the raw
information, not a filtered version.
Need a Snapshot?
We also sell chaindata snapshots for the networks we operate. For many long-tail chains, no public snapshot exists, and syncing from genesis takes days to weeks. Our snapshots are the exact ones our production fleet restores from — fresh, verified, and ready to use.
Documentation & Help
The repo includes:
- README — Overview and setup guide
- VIBE — Operations and debugging guide
- Gitea Issues — Bug reports and feature requests
Have a question? Open an issue. Found a bug? Open an issue. Want a new network supported? Open an issue (or better, a PR).
The Managed Service
Self-hosting is great. But if you want someone else to handle the operations, StakeSquid OÜ offers a managed service:
- We run it — On our fleet of bare-metal servers
- We keep it synced — The chains we run in production, continuously
- We upgrade it — Through every hardfork, automatically
- We monitor it — 24/7, with alerting and auto-recovery
- We support it — Real help from the people who built it
It's the same software, the same node configurations. You just don't have to run it yourself.
Interested? We'd love to talk.