To run your own Zcash full node today you run Zebra, the Zcash Foundation's Rust node, because zcashd stopped for good on July 18, 2026. Plan for about 300 GB of disk, install a prebuilt binary, Docker image or a source build, and let it sync, which Zebra's docs say takes days on Mainnet. This guide follows the official pages and says what we could not confirm.
Status as of October 12, 2026
Everything here comes from Zebra's documentation (zebra.zfnd.org), Zebra's GitHub releases, the zcashd repository's end-of-support notice and the zcashd end-of-life page, all read on October 12, 2026. We did not install or run Zebra for this guide, so every command is quoted from the docs, not tested by us. Versions and defaults change: check the linked pages before you copy a command.
Why run a node, and what it is not
A full node downloads and independently verifies the whole Zcash blockchain. Zebra's run page lists what it is for: a backend for lightwalletd (the server that light wallets talk to, see light wallet), a backend for a mining pool, and HTTP health endpoints for Kubernetes and load balancers. It is not a wallet: you still need a wallet to hold ZEC, as explained in our wallet comparison. For the bigger picture of how nodes fit into the network, see how Zcash works.
zcashd is gone: what to run instead
The official zcashd repository states that zcashd reached its final end-of-support halt on July 18, 2026 at
block height 3,417,100, that every unmodified zcashd 6.20.0 node shut down at that
height, and that the repository was archived on July 19, 2026. It tells users to migrate to the Zebra and
Zakura node implementations and to Zallet as the full-node wallet. The end-of-life page adds that Zallet
Alpha.4 can migrate a zcashd wallet.dat file, and says operators who do not need the zcashd wallet should
move to Zebra. It does not say whether Zebra can reuse zcashd's chain data, so we do not claim it can. For
what the shutdown meant for old wallet setups, see our
wallet troubleshooting guide.
What your machine needs
Figures from Zebra's requirements page:
| Resource | Recommended | Minimum |
|---|---|---|
| CPU | 4 cores | 2 cores |
| RAM | 16 GB | 4 GB |
| Free disk | 300 GB | 300 GB |
- Disk: about 300 GB of cached Mainnet data and 10 GB for Testnet. Syncing from a state snapshot needs about twice that temporarily while the archive is extracted.
- Bandwidth: a 100 Mbps connection and 300 GB of upload and download per month are recommended; the first sync is about 300 GB of download, which the page expects to grow; afterwards 10 MB to 10 GB per day depending on transactions and peer requests.
- Latency: Zebra needs some peers with a round-trip time of 2 seconds or less.
Install Zebra
Zebra's install page lists three routes.
1. Prebuilt binary. For Linux on x86_64 and aarch64, built on Ubuntu 22.04; supported distributions include Ubuntu 22.04 or newer, Debian 12 or newer, RHEL 9 or newer and Amazon Linux 2023, and the binaries need glibc 2.34 or newer. Install with cargo-binstall:
cargo binstall zebrad
The page also shows how to verify a downloaded archive from the GitHub release (replace <version> with the
release you downloaded):
gh attestation verify zebrad-<version>-x86_64-unknown-linux-gnu.tar.gz \
--repo ZcashFoundation/zebra \
--signer-workflow ZcashFoundation/zebra/.github/workflows/zfnd-release-binaries.yml \
--source-ref 'refs/tags/v<version>'
cosign verify-blob SHA256SUMS \
--bundle SHA256SUMS.sigstore.json \
--certificate-identity='https://github.com/ZcashFoundation/zebra/.github/workflows/zfnd-release-binaries.yml@refs/tags/v<version>' \
--certificate-oidc-issuer='https://token.actions.githubusercontent.com'
sha256sum --ignore-missing -c SHA256SUMS
tar xzf zebrad-<version>-x86_64-unknown-linux-gnu.tar.gz
2. Docker. The official image is zfnd/zebra on Docker Hub. Zebra's Docker page gives this command; the
named volume keeps the chain state across restarts, and -p 8233:8233 publishes the Mainnet peer-to-peer
port:
docker run -d \
--name zebra \
-p 8233:8233 \
-v zebrad-cache:/home/zebra/.cache/zebra \
zfnd/zebra
The page marks Docker Compose as the recommended way to start a ready-made setup:
git clone --depth 1 https://github.com/ZcashFoundation/zebra.git
cd zebra
docker compose -f docker/docker-compose.yml up
3. Build from source. You need the latest stable Rust toolchain, plus clang and libclang (the page notes they are usually separate packages):
git clone https://github.com/ZcashFoundation/zebra.git
cd zebra
cargo build --release --bin zebrad
target/release/zebrad start
On Arm, the page warns to install the Rust compiler for Arm, because building with x86_64 tools may run very slowly.
Configure and start
Without a config file Zebra uses its defaults. To write them to a file you can edit, Zebra's run page gives:
zebrad generate -o ~/.config/zebrad.toml
That path is the default location on GNU/Linux; the page points to the dirs crate documentation for other
systems. Then start the node with zebrad start, as in the source-build steps above. To follow progress, set
tracing.progress_bar in zebrad.toml: the page says progress_bar = "summary" shows a few key metrics and
detailed shows all of them, and warns that the progress bar's estimates can become extremely large. When
progress bars are active, Zebra sends its logs to a file. Return codes: 0 success, 1 unsuccessful exit, 2
crash.
The run page says a first sync from genesis takes days on Mainnet, and that you can start from a recent height with a state snapshot. We did not read the snapshot instructions, so we say nothing about where snapshots come from or how to verify them; read that page before using one.
Ports and firewall
From Zebra's Docker page (TCP):
| Port | Use | Default |
|---|---|---|
| 8233 | Peer-to-peer, Mainnet | enabled |
| 18233 | Peer-to-peer, Testnet | enabled |
| 8232 | RPC, Mainnet | disabled |
| 18232 | RPC, Testnet | disabled |
| 9999 | Prometheus metrics | disabled |
| 8080 | Health endpoints | disabled |
Zebra's requirements page says outbound connections are required to sync and inbound connections are
optional but recommended. If your node sits behind a firewall or NAT, open the peer-to-peer port and consider
setting external_addr to your public IP so peers can find you. Without a published peer-to-peer port Zebra
still syncs through outbound connections but accepts no inbound peers. Keep the RPC port off unless you need
it; it is disabled by default. If you enable it, Zebra's Docker page names the settings
ZEBRA_RPC__LISTEN_ADDR and ZEBRA_RPC__ENABLE_COOKIE_AUTH, and says the RPC cookie is only created when RPC
and cookie authentication are on. The lightwalletd example stack turns cookie authentication off, because
lightwalletd does not support it.
Keep it up to date
Network upgrades change consensus rules, and a node that does not follow them stops following the chain: the NU6.3 (Ironwood) upgrade activated on Mainnet at block 3,428,143 on July 28, 2026 (see our Ironwood status article and the network upgrade tracker). For Zebra's own releases, read the notes of each one:
- Zebra 6.4.2 (shown as released September 25; the page shows no year) is a security release that fixes a remotely triggerable denial of service when processing malformed V6 transactions. Its notes say to update as soon as possible if you run 6.4.0 or 6.4.1; the releases page lists both of those as withdrawn and says not to run them.
- Zebra 7.0.0-rc.0 (October 2) is a release candidate focused on NU7 on Testnet. Its notes say Mainnet node operators are not required to upgrade. NU7 is covered in our NU7 explainer.
- Zebra 6.2.3 (July 28) says its bundled sidecar follows Mainnet past the Ironwood activation, and that
supervised deployments using
zcashd_source = "embedded"had to upgrade; it is otherwise described as optional.
GitHub marked 7.0.0-rc.0 as the latest release even though it is a candidate, so check the stable tag by hand.
Another option: Zakura
The zcashd repository names Zakura as the second consensus node. Zakura's own site describes it as "a consensus-compatible Zcash full node, built for scale" with native block pruning, a zcashd compatibility mode and an experimental peer-to-peer layer, and lists release 1.6.0. Its speed claims (syncing "nearly 5x faster than other full nodes", pruned nodes bootstrapped "in 2 minutes" from published snapshots) are Zakura's own, with no hardware or conditions given, and we did not measure them. The page gives no install commands and does not say which platforms it supports, so this guide does not cover Zakura setup.
What we could not verify
- Sync time and RAM during sync. Zebra's docs say "days" and give hardware recommendations, not measured times.
- Reusing zcashd data. Neither the end-of-life page nor Zebra's install page says it works.
- Windows and macOS. The install page lists prebuilt binaries for Linux only and points to Docker or a source build for other platforms; we know nothing beyond that.
- State snapshots. The run page points to them; we did not read their instructions or trust model.
- Zallet's current status. The end-of-life page names Zallet Alpha.4; we did not check newer versions.
- Anything about privacy or security guarantees of running a node. The pages make no such claims and neither do we.
Sources
Zebra: install, run, requirements, Docker, Zebra releases, the zcashd repository notice, the zcashd end-of-life page and Zakura. For wallets that need no node, see our wallet directory.
