Runs and auto-upgrades casper-node across protocol versions, built from official source
82
casper-node-launcher runs and upgrades the casper-node binary for the Casper Network. It
watches the installed protocol versions under /etc/casper and /var/lib/casper/bin, always
starts the highest installed version, and automatically switches to a new version (running
migrate-data/migrate-config as needed) when the network activates a protocol upgrade — without
manual intervention on every upgrade.
This image is built directly from the official casper-network/casper-node-launcher source (not repackaged from a third-party binary), on a minimal Debian base.
v1.0.8 — built from casper-node-launcher v1.0.8The launcher does not download or stage anything itself — protocol configs and binaries must already be in place before it starts:
/etc/casper/<protocol_version>/config.toml # e.g. /etc/casper/2_2_2/config.toml
/etc/casper/validator_keys/secret_key.pem
/etc/casper/validator_keys/public_key.pem
/etc/casper/validator_keys/public_key_hex
/var/lib/casper/bin/<protocol_version>/casper-node # e.g. /var/lib/casper/bin/2_2_2/casper-node
<protocol_version> uses underscores, not dots (e.g. 2_2_2), matching the folder naming used by
casper-node itself. Config/binary archives per protocol version and network are published at
https://genesis.casper.network/<network>/<protocol_version>/{config,bin}.tar.gz — download and
extract those before starting this container. Node identity keys (validator_keys/) are required
even for non-validating/RPC-only nodes — generate them with casper-client keygen <path>.
docker run -d \
--name casper-node \
-v /opt/casper/configs:/etc/casper \
-v /opt/casper/data:/var/lib/casper \
-p 35000:35000 \
-p 8888:8888 \
--ulimit nofile=1048576:1048576 \
--restart unless-stopped \
svetekllc/casper-node-launcher:v1.0.8
Check it's up and syncing:
curl -s http://127.0.0.1:8888/status | jq '.reactor_state, .last_added_block_info'
If sync_handling = 'ttl' is set in config.toml (fast-sync, not full genesis replay), you must
also set trusted_hash under [node] to a recent block hash from a synced peer's
/status endpoint — otherwise the node stops with "CatchUp: cannot proceed without trusted hash".
| Port | Purpose | Required externally? |
|---|---|---|
| 35000 | P2P networking | Yes — the only port the docs require to be open |
| 7779 | Binary port (used by casper-sidecar for JSON-RPC/state queries) | No — internal only |
| 8888 | REST (/status, /metrics) | Optional — courtesy for network health visibility |
| 9999 | SSE event stream | No — internal only |
JSON-RPC is not served by this image — since Casper 2.0, that's the job of a separate
casper-sidecar container pointed at this
node's binary port.
casper-node requests nofile up to 64000 on startup; give the container headroom above that
(e.g. --ulimit nofile=1048576:1048576) or it may hit the container's default limit.
rust:1.91.0-trixie (build) / debian:trixie-slim (runtime)Content type
Image
Digest
sha256:ae1769296…
Size
36 MB
Last updated
3 months ago
docker pull svetekllc/casper-node-launcher:v1.0.8