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:

ResourceRecommendedMinimum
CPU4 cores2 cores
RAM16 GB4 GB
Free disk300 GB300 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):

PortUseDefault
8233Peer-to-peer, Mainnetenabled
18233Peer-to-peer, Testnetenabled
8232RPC, Mainnetdisabled
18232RPC, Testnetdisabled
9999Prometheus metricsdisabled
8080Health endpointsdisabled

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.