Set up a node from scratch — build it, restore a snapshot, and it comes up at a recent height instead of syncing from genesis. Building needs a Rust toolchain; the commands need aria2 and zstd.
Pruned
# 1 · build and install the node from source (needs a Rust toolchain; one-time)
cargo install --locked --git https://github.com/zakura-core/zakura zebrad
# 2 · run in pruned storage mode (one-time config)
mkdir -p ~/.config
cat > ~/.config/zebrad-pruned.toml <<'EOF'
[state.storage_mode.pruned]
tx_retention = 10000
EOF
# 3 · download the latest snapshot — resumable, parallel, checksum-verified
aria2c -x16 -s16 --checksum=sha-256=d7b410da76f3754ec38a89dfee2b39a59b6245c86bcb0b4d50b6f024c1670c11 \
-o zebra-mainnet-pruned-20260715T151848Z-3413289.tar.zst \
https://zebra.valargroup.dev/mainnet-pruned/zebra-mainnet-pruned-20260715T151848Z-3413289.tar.zst
# 4 · extract into the state cache
mkdir -p ~/.cache/zebra
zstd -dc zebra-mainnet-pruned-20260715T151848Z-3413289.tar.zst | tar -x -C ~/.cache/zebra
# 5 · start — the node comes up at block 3,413,289, not genesis
zebrad -c ~/.config/zebrad-pruned.toml start
Archive
# 1 · build and install the node from source (needs a Rust toolchain; one-time)
cargo install --locked --git https://github.com/zakura-core/zakura zebrad
# 2 · download the latest snapshot — resumable, parallel, checksum-verified
aria2c -x16 -s16 --checksum=sha-256=2a192c8cd6906051cd1d6ed7fbd9b2f63cbb91c9535be17ef6029244d8eb98ee \
-o zebra-mainnet-20260715T111646Z-3413096.tar.zst \
https://zebra.valargroup.dev/mainnet/zebra-mainnet-20260715T111646Z-3413096.tar.zst
# 3 · extract into the state cache
mkdir -p ~/.cache/zebra
zstd -dc zebra-mainnet-20260715T111646Z-3413096.tar.zst | tar -x -C ~/.cache/zebra
# 4 · start — the node comes up at block 3,413,096, not genesis
zebrad start
Restore
Already running a node? Stop it, drop in a fresher snapshot, and start again — the download verifies its own checksum.
Pruned
# 1 · stop the node# 2 · run in pruned storage mode (one-time config)
mkdir -p ~/.config
cat > ~/.config/zebrad-pruned.toml <<'EOF'
[state.storage_mode.pruned]
tx_retention = 10000
EOF
# 3 · download — resumable, parallel, checksum-verified
aria2c -x16 -s16 --checksum=sha-256=d7b410da76f3754ec38a89dfee2b39a59b6245c86bcb0b4d50b6f024c1670c11 \
-o zebra-mainnet-pruned-20260715T151848Z-3413289.tar.zst \
https://zebra.valargroup.dev/mainnet-pruned/zebra-mainnet-pruned-20260715T151848Z-3413289.tar.zst
# 4 · extract into the state cache
mkdir -p ~/.cache/zebra
zstd -dc zebra-mainnet-pruned-20260715T151848Z-3413289.tar.zst | tar -x -C ~/.cache/zebra
# 5 · start — the node resumes from block 3,413,289, not genesis
zebrad -c ~/.config/zebrad-pruned.toml start
Archive
# 1 · stop the node# 2 · download — resumable, parallel, checksum-verified
aria2c -x16 -s16 --checksum=sha-256=2a192c8cd6906051cd1d6ed7fbd9b2f63cbb91c9535be17ef6029244d8eb98ee \
-o zebra-mainnet-20260715T111646Z-3413096.tar.zst \
https://zebra.valargroup.dev/mainnet/zebra-mainnet-20260715T111646Z-3413096.tar.zst
# 3 · extract into the state cache
mkdir -p ~/.cache/zebra
zstd -dc zebra-mainnet-20260715T111646Z-3413096.tar.zst | tar -x -C ~/.cache/zebra
# 4 · start — the node resumes from block 3,413,096, not genesis
zebrad start