In this article, We are going to deploy an
Eth1 geth node on a Ubuntu 22.04 server.
Eth1 nodes are still relevant even when you want to deploy an
Eth2 (Ethereum 2.0) node that works in conjunction with Lighthouse Beacon but we’ll get to that momentarily. Note that we are not going to use any PPA but rather we will download the source and essentially build binaries from it.
You will also need Go lang installed before your can build Go-Ethereum from source code. The process is very simple and can be found here at official Go lang site: https://go.dev/doc/install
First off, assuming that you are on a fresh or a newly installed server, most of the prerequisites to compile any source code are not really available out of the box, therefore we need to install “build-essential” package.
apt install build-essential
Now let’s download the
go-ethereum package directly from the GitHub.
git clone https://github.com/ethereum/go-ethereum
Once done, we have actually cloned the entire
ethereum (also known as
geth) repository. Now it is important to checkout the most current/stable release before building it. At the time of writing this post, latest release is “v1.10.26” (Paravin). You may check the latest release from this url: https://github.com/ethereum/go-ethereum/releases
Please note the, building of
go-ethereum source can be done by any non-root user as far as Go lang and necessary dependencies are installed in the system. However, I suggest doing it as a root once and then copying built
geth binary to
/usr/local/bin directory so its available across the platform. This makes upgrading in future easy and system-wide.
Let’s checkout the latest release:
git checkout v1.10.26
You should see something like this:
HEAD is now at e5eb32ace params: release geth v1.10.26 stable
Now depending on how powerful your system is, you can run the make command to work with multiple threads. You may check
htop command to determine number of cores available to you. Obviously, the more cores you have available, the quicker process will finish. Run the
make command inside the
(In command above, I have used passed
-j with value of 64 parallel jobs to perform while compiling source code).
geth binary has been build, it is ready to be used. But if you started this process as a root user, there is one more step to be done before heading on. We will copy our newly built
geth binary to
/usr/local/bin directory so it is widely available across the system, and to all of the users.
cp ~/go-ethereum/build/bin/geth /usr/local/bin
Once this is done,
geth command is now available across the system and this can be verified by running:
which should output something like:
Git Commit: e5eb32acee19cc9fca6a03b10283b7484246b15a
Go Version: go1.20
Now we are ready to start our
For the next steps, you may want to: