How to get Tezos

In this How To we explain how to get up-to-date binaries to run Tezos for each network. You can either use the docker images, which is easier, or build from sources.

Docker images

The recommended way for running an up-to-date Tezos node is to use the docker images that are automatically generated from the GitLab repository and published on DockerHub. The script alphanet.sh is provided to help download the right image for each network and run a simple node. Its only requirement is a working installation of Docker and docker compose on a machine with architecture x86_64. Although we only officially support Linux, the script has been tested with success in the past on windows/mac/linux.

The same script can be used to run Mainnet, Alphanet or Zeronet, it suffices to rename it as it downloads a different image based on its name. For example, to run Alphanet:

wget https://gitlab.com/tezos/tezos/raw/master/scripts/alphanet.sh
chmod +x alphanet.sh

Alternatively, to run Mainnet:

wget -O mainnet.sh https://gitlab.com/tezos/tezos/raw/master/scripts/alphanet.sh
chmod +x mainnet.sh

In the following we assume you are running Alphanet. You are now one step away from a working node:

./alphanet.sh start

This will download the right docker image for your chosen network, launch 3 docker containers running the node, the baker and the endorser. The first launch might take a few minutes to download the docker images and synchronize the chain.

Every call to alphanet.sh will check for updates of the node and will fail if your node is not up-to-date. For updating the node, simply run:

./alphanet.sh restart

If you prefer to temporarily disable automatic updates, you just have to set an environment variable:

export TEZOS_ALPHANET_DO_NOT_PULL=yes

See ./alphanet.sh --help for more informations about the script. In particular see ./alphanet.sh client --help or the online manual for more information about the client. Every command to the tezos-client can be equivalently executed using ./alphanet.sh client.

Build from sources

TL;DR: Typically you want to do:

sudo apt install -y rsync git m4 build-essential patch unzip bubblewrap wget
wget https://github.com/ocaml/opam/releases/download/2.0.1/opam-2.0.1-x86_64-linux
sudo cp opam-2.0.1-x86_64-linux /usr/local/bin/opam
sudo chmod a+x /usr/local/bin/opam
git clone https://gitlab.com/tezos/tezos.git
cd tezos
git checkout alphanet
opam init --bare
make build-deps
eval $(opam env)
make
export PATH=~/tezos:$PATH
source ./src/bin_client/bash-completion.sh
export TEZOS_CLIENT_UNSAFE_DISABLE_DISCLAIMER=Y

Environment

Currently Tezos is being developed for Linux x86_64, mostly for Debian/Ubuntu and Archlinux.

The following OSes are reported to work:

  • macOS/x86_64
  • Linux/armv7h (32 bits) (Raspberry Pi3, etc.)
  • Linux/aarch64 (64 bits) (Raspberry Pi3, etc.)

A Windows port is feasible and might be developed in the future.

If bubblewrap is not available in your distribution you can also skip it and init opam with --disable-sandbox.

Get the sources

Tezos git repository is hosted at GitLab. All development happens here. Do not use our GitHub mirror which we don’t use anymore and only mirrors what happens on GitLab.

You also need to choose the branch of the network you want to connect to: alphanet, zeronet or mainnet.

The master branch is where code is merged, but there is no test network using the master branch directly.

Install OPAM

To compile Tezos, you need the OPAM package manager, version 2.0. The build script will take care of setting-up OPAM, download the right version of the OCaml compiler, and so on.

Use opam init --bare to avoid compiling the OCaml compiler now: it will be done in the next step.

Install Tezos dependencies with OPAM

Install the OCaml compiler and the libraries which Tezos depends on:

make build-deps

This command creates a local opam switch _opam where the right version of OCaml is compiled and installed (this takes a while but it’s only done once).

After OCaml it will start with Tezos dependencies, OPAM is able to handle correctly the OCaml libraries but it is not always able to handle all external C libraries we depend on. On most system, it is able to suggest a call to the system package manager but it currently does not handle version check.

Once the dependencies are done we can update opam’s environment to refer to the new switch and compile the project:

eval $(opam env)
make

Lastly you can also add Tezos binaries to your PATH variable, activate bash autocompletion and after reading the Disclaimer a few hundred times you are allowed to disable it with TEZOS_CLIENT_UNSAFE_DISABLE_DISCLAIMER=Y.

To add the default opam repository at a lower priority (for example to install merlin or test other opam packages), you can use the following command:

opam repo add default --rank=-1