Skip to main content

Install Prysm

Prysm ships as three programs: beacon-chain (the beacon node), validator (the validator client), and prysmctl (a command-line toolbox). Every install method gives you the same programs from the same release; the current is v7.3.1.

MethodUse it whenUpdates
Launcher script (prysm.sh, prysm.bat)You run Prysm from a terminal, as in the Quickstart.On every restart, unless you pin a version
BinariesYou run Prysm as a systemd service and want updates only when you choose.When you replace the files
DockerYou run your node in containers or Docker Compose.When you change the image tag

Not sure? Use the launcher script.

Install​

Pick your operating system, then an install method. Each path ends with a check that the programs run.

The launcher script downloads the release binary for your machine, verifies its checksum and signature, and starts it. It keeps the binaries in a dist folder next to itself.

  1. Install GnuPG which the script needs to check signatures. On Debian or Ubuntu:

    sudo apt install gnupg

    On macOS:

    brew install gnupg
  2. Create the folder layout used across these docs:

    mkdir -p ~/ethereum/consensus ~/ethereum/execution
    cd ~/ethereum/consensus
  3. Download the script and make it executable:

    curl https://raw.githubusercontent.com/OffchainLabs/prysm/master/prysm.sh --output prysm.sh
    chmod +x prysm.sh
  4. Download and verify the beacon node and validator, then print their versions:

    ./prysm.sh beacon-chain --version
    ./prysm.sh validator --version

    Each prints a line naming the release, such as beacon-chain version Prysm/<VERSION>/<COMMIT>.

Run any program through the script, from the consensus folder:

./prysm.sh beacon-chain <FLAGS>
./prysm.sh validator <FLAGS>
./prysm.sh prysmctl <COMMAND>

How verification works​

Your node runs software that can sign with your validator keys, so check that every Prysm binary is the file Prysm's maintainers released and that nobody changed it on the way. Each GitHub release has, for every binary, a .sha256 file with its checksum and a .sig file with its GPG signature. Releases are signed with this key:

0AE0 051D 647B A3C1 A917 AF40 72E3 3E4D F1A5 036E

The same fingerprint is in prysm.sh and in the Prysm security.txt. Compare it with at least one of them rather than trusting this page alone.

Reading the gpg output​

For each file, gpg prints something like:

gpg: using RSA key 0AE0051D647BA3C1A917AF4072E33E4DF1A5036E
gpg: Good signature from "Preston Van Loon <preston@pvl.dev>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: 0AE0 051D 647B A3C1 A917 AF40 72E3 3E4D F1A5 036E

You need both Good signature and the fingerprint above. The WARNING is expected: it only means you haven't signed the key yourself. gpg --verify accepts a good signature from any key in your keyring, so a good signature from a different key is not a valid Prysm release.

If you see BAD signature, a different fingerprint, or a checksum that doesn't match, stop. Don't run the file. Download it again from the GitHub release page and, if it still fails, ask in the Prysm Discord.

What the launcher scripts check​

prysm.sh downloads each binary with its .sha256 and .sig, checks both, and imports the signing key the first time. On success, it prints Verified ... has been signed by Prysmatic Labs. If a check fails, it stops with Failed to verify Prysm binary.

Know the limits:

  • The binary, checksum, signature, and key all come from the same server. The checks catch corrupted or tampered downloads, not a compromised server. Importing and checking the key yourself first closes most of that gap.
  • prysm.bat checks only the checksum, not the signature. Use the Windows Binaries method for the stronger check.
  • Never set PRYSM_ALLOW_UNVERIFIED_BINARIES=1 on a validator. It turns every check off.

Terms of use​

The first time you start the beacon node or validator, Prysm asks you to accept its terms of use. Type accept, or pass --accept-terms-of-use when nothing can answer the prompt (services, containers).

Troubleshooting​

gpg is not available. Either install it or run with PRYSM_ALLOW_UNVERIFIED_BINARIES=1.

Install GnuPG and run the command again. Don't turn verification off.

Starting prysm requires an internet connection...

The script couldn't look up the latest release. Check your connection and any firewall or antivirus that blocks curl. To start offline, pin a version you've already downloaded with USE_PRYSM_VERSION.

Failed to verify Prysm binary.

The download is incomplete or corrupted. Delete that version's files from dist and run the script again. Antivirus software that quarantines files in dist also causes this, mostly on Windows.

32-bit ARM is not supported. Please install a 64-bit operating system.

Prysm needs a 64-bit OS. On a Raspberry Pi, install a 64-bit image.