Before installing Rocket Pool, there are a few checks you should do to make sure your system is compatible and will work correctly.
We strongly encourage you to create a dedicated machine for running a Rocket Pool node.
Running a node on a general-use machine, such as your daily work desktop or a gaming rig, presents extra security risks
that may compromise your wallet and result in the theft of your coins.
For maximum safety, please build a new machine that is dedicated exclusively to running a node.
Below is a brief description of the software and hardware requirements that a Rocket Pool node requires. This guide assumes that you already have your machine physically built, and the operating system installed.
Rocket Pool's Smartnode client currently supports Linux and macOS systems.
At this time, Windows can be used to remotely manage a remote Linux or Mac machine, but the Smartnode itself cannot currently run on a Windows system. However, Rocket Pool can be run on a Linux virtual machine hosted by a Windows machine. This setup is not recommended over simply installing Linux as the host operating system, but it does work if necessary. Note that it will require extra resource overhead, and comes with its own set of security risks, so we do not advise using this setup when staking real Ether on the main network.
Rocket Pool is natively compatible with AMD64 (x64) and arm64 (aarch64) CPU architectures. For other architectures, you will need to compile the smartnode clients from source.
Note that the user must have root / Administrator access (or sudo privileges) to install the Smartnode.
There are many variants of the Linux OS (called distributions, or distros for short). While you can run Rocket Pool from any modern distro, Rocket Pool's installer can automatically install the entire stack on Ubuntu, Debian, CentOS, and Fedora.
If you plan to use Ubuntu, we strongly recommend using an LTS release such as 20.04. These releases are actively maintained for longer periods of time, which helps with the security and stability of your node.
For installation on other distros, the Smartnode installer will not be able to automatically install some system
dependencies (such as docker-compose
).
Some manual steps will be required during installation.
For arm64
systems, the Smartnode installer only natively supports Debian and Debian-based distros such as Ubuntu.
For other distros, manual steps will be required during installation.
If you're using macOS, it's highly likely that you already have the Operating System installed and can skip this step.
If you're installing Linux from scratch, each of the distributions listed above come with helpful and detailed tutorials for installing the Operating System from scratch. As an example though, we will walk you through the process of installing and preparing Debian Server. Debian is a good choice for node operation because it focuses on maximum stability and reliability - both of which are highly desirable for node machines that must be running 24/7.
Here is a good step-by-step guide with screenshots that shows you how to install Debian on your node machine from scratch.
We have a few helpful amendments to the guide linked above, which you may want to follow:
root
account
and instead install the sudo
package, allowing your user to perform root operations by re-entering its password to
elevate its permissions. This is analogous to the way Ubuntu Linux is set up, which may be more familiar to users.apt
.
You can find an explanation of how to do
this here.sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
sudo
Rocket Pool's installer requires the sudo
program to acquire all of its dependencies.
If you left the root user password blank in the previous step, you will already have this.
If not, please install it now by running the following commands:
Then restart the machine.
You should now be able to run commands via sudo
such as sudo apt update
.
Once the server is installed and you're able to log in, you need to get its IP address.
An easy way to do this is with ifconfig
which is built into the 'net-tools' package:
You may see several entries here, but the one you want to look for is going to look something like this:
The flags should say UP,BROADCAST,RUNNING,MULTICAST
.
The inet
value (here 192.168.1.8
) is your machine's local IP address.
Next, install SSH:
If you had the SSH server box checked during Debian's installation, you should already have this installed so this command won't do anything.
Once this is done, you can log into the machine's terminal remotely from your laptop or desktop using ssh
.
If you aren't familiar with ssh
, take a look at the Intro to Secure Shell guide.
At this point, you should strongly consider configuring your router to make your node's IP address static. This means that your node will have the same IP address forever, so you can always SSH into it using that IP address. Otherwise, it's possible that your node's IP could change at some point, and the above SSH command will no longer work. You'll have to enter your router's configuration to find out what your node's new IP address is.
Each router is different, so you will need to consult your router's documentation to learn how to assign a static IP address.
In most cases, if you choose your Execution and Consensus clients and your instance type carefully, you should not run out of RAM. Then again, it never hurts to add a little more. What we're going to do now is add what's called swap space. Essentially, it means we're going to use the SSD as "backup RAM" in case something goes horribly, horribly wrong and your server runs out of regular RAM. The SSD isn't nearly as fast as the regular RAM, so if it hits the swap space it will slow things down, but it won't completely crash and break everything. Think of this as extra insurance that you'll (most likely) never need.
The first step is to make a new file that will act as your swap space. Decide how much you want to use - a reasonable start would be 8 GB, so you have 8 GB of normal RAM and 8 GB of "backup RAM" for a total of 16 GB. To be super safe, you can make it 24 GB so your system has 8 GB of normal RAM and 24 GB of "backup RAM" for a total of 32 GB, but this is probably overkill. Luckily, since your SSD has 1 or 2 TB of space, allocating 8 to 24 GB for a swapfile is negligible.
For the sake of this walkthrough, let's pick a nice middleground - say, 16 GB of swap space for a total RAM of 24 GB. Just substitute whatever number you want in as we go.
Enter this, which will create a new file called /swapfile
and fill it with 16 GB of zeros.
To change the amount, just change the number in count=16
to whatever you want. Note that this is going to take a
long time, but that's ok.
Next, set the permissions so only the root user can read or write to it (for security):
Now, mark it as a swap file:
Next, enable it:
Finally, add it to the mount table so it automatically loads when your server reboots:
Add a new line at the end that looks like this:
Press Ctrl+O
and Enter
to save, then Ctrl+X
and Enter
to exit.
To verify that it's active, run these commands:
Your output should look like this at the top:
If the second number in the last row labeled Swp
(the one after the /
) is non-zero, then you're all set.
For example, if it shows 0K / 16.0G
then your swap space was activated successfully.
If it shows 0K / 0K
then it did not work and you'll have to confirm that you entered the previous steps properly.
Press q
or F10
to quit out of htop
and get back to the terminal.
By default, Linux will eagerly use a lot of swap space to take some of the pressure off of the system's RAM. We don't want that. We want it to use all of the RAM up to the very last second before relying on SWAP. The next step is to change what's called the "swappiness" of the system, which is basically how eager it is to use the swap space. There is a lot of debate about what value to set this to, but we've found a value of 6 works well enough.
We also want to turn down the "cache pressure", which dictates how quickly the server will delete a cache of its filesystem. Since we're going to have a lot of spare RAM with our setup, we can make this "10" which will leave the cache in memory for a while, reducing disk I/O.
To set these, run these commands:
Now, put them into the sysctl.conf
file so they are reapplied after a reboot:
Add these two lines to the end:
Then save and exit like you've done before (Ctrl+O
, Ctrl+X
).
Before installing Rocket Pool, please review the following checklist:
If you have checked and confirmed all of these items, then you are ready to install Rocket Pool and begin running a node! Move on to the Choosing your ETH Clients section.