Rocket Pool Beta noob guide for Contabo (or any other) VPS - PART 1
First, I suck at writing articles.. Second, sorry for my english, I’m not a native speaker. Third, this article is for TOTAL NOOBS who want to participate in Rocket Pool Beta node operation, have Windows, never saw linux before.. And good thing should be supported :). On Discord channel I saw many people asking about running RP node in Amazon AWS, which in my opinion sucks (as this whole Amazon thing..). That mofo Bezo$ is rich enough and that thing is usury. Really, contabo[.]com which we use as example hosting, will give you similar config for year as AWS charges for one month. You can seek VPS provider on your own, http://www.usethefuckinggoogle.com/ ..
[!] Note: I’ll try to write this for someone who never saw linux with my mind dump added.. Also, you can use this as code copy-paste manual, but sometimes there will be a note I’ll try to highlight. Images sometimes differ from code examples; code examples should be right, images are illustrative.
[!] Less important note: this tutorial is OK for Rocket Pool Beta, running on testnets. VPS configuration will not be enough for “real” node in future, you’d have to order more expensive.
So first, get yourself to contabo[.]com and order a VPS; Let’s order VPS S SSD, which has 4core setup with 8G RAM, 200G only SSD storage, 200mbps uplink and public IP.
Here we can see some features and select Debian 10 (as MY favourite distro)..
Skip everything, just decide if you’re closer to Germany or US.. It may seem it doesn’t matter, but ping accross whole world takes ~200ms to come back, you can feel that one..
At the bottom of previous image you can see one-time setup fee 4.99 EUR. You can avoid that if you sign up for one year.. I didn’t. Next step is to set up account and pay. You’ll probably have to register, I just added another VPS to my account. For payment I used Skrill I’ve never heard of before, PayPal seems fair too, Bank transfer takes several days.
Time to pay; easy account setup, assign card.. Just like any other payment gateway.
Now we obtain info that VPS was successfuly paid for and that it should be available in 3 hours max.. So we check mail for credentials, log in, look around a little, find out we have to charge credit in advance to run VPS in next months.. and voilaaaa: Here’s our new VPS under VPS control! We can see IP which I decided not to mask for purpose of this tutorial (second one is our client’s) and some basic management tasks.
Now we perform password reset to something really obscure; optimal is something difficult we’re going to copy-paste when we log in. Next step is to Disable VNC for two reasons: 1) we don’t need it as server has SSH with root login enabled and 2) it’s an attack vector - which we’ll try to minimize later..
So, that done, we can finaly login to our server via SSH, PuTTy is my favorite tool for this:
Logon user is root and password is our crazy string. Welcome..
Now.. root is superuser you have to know from hacker movies. This account has (almost) unlimited power and should be used only for important administrative tasks, not for everyday use. For now, we’ll use it to setup our server; we’ll do that by installing stuff from packages. These are downloaded on the fly, as fresh as possible, from package repository using package manager apt. First, let’s update repo(sitory) info:
apt update
For those who see linux for the first time: everything is case sensitive! So usualy you keep everything lowercase unless explicitly told not to.
We can probably see all packages are up to date.. Next we install some packages we’re going to need:
apt -y install mc locate wget curl ntpdate htop sudo
You see we can name many packages to install at once, let me explain:
mc - Midnight Commander.. you remember NC for DOS :)??
locate - useful to find files in system
wget - download files over HTTP(s), should be in system and up to date
curl - let’s say similar to wget
ntpdate - keep up date time synced with NTP servers (look up NTP protocol)
htop - kinda like Windows Task Manager, fancy resource monitor
sudo - lets enabled users perform root tasks
-y parameter here means “don’t ask questions and do as I command!”
Hit enter and yaaay, enjoy some fancy linux stuff.. OK, done?? Back to work. Let’s rename the server. Hostname string is in file /etc/hostname so we do:
mcedit /etc/hostname
and replace string with name of our choice. Hit F2 to save and ESC to exit editor. We have installed mc to have this nice editor, don’t get me started about vim.. (https://vimhelp.org/)
Next, let’s add new user. A non-root user, as RocketPool stack doesn’t run under root (at the time of writing this manual at least). So we
adduser admin
xX69_pussy_ripper_69Xx is fine too, but I prefer admin. Choose password (different from root, obscure as well), enter additional info if you want, hit enter to confirm information provided. You see that [Y/n]?? That means Y is default answer if you just hit Enter.
Next step is to add our user to sudo group (so called sudoers) so it is allowed perform root tasks:
usermod -aG sudo admin
That should do it. Now let’s restart our server so everything takes effect:
init 6
That’s how I like it more, reboot command should work too..
[!] Hot Tip: You now lost connection.. Eeeh.. But you don’t have to restart PuTTy, just right-click the window title and Restart Session. You obviously have to wait like half a minute so the VPS has time to boot (it takes like 10–15sec for real (fire!)).
OK, we’re back! Log in as admin now.
[!] Note: for next step you should be logged in as regular user (admin in our case)!
Honestly, now we just follow Rocket Pool manual from
https://medium.com/rocket-pool/rocket-pool-v2-5-beta-node-operators-guide-77859891766b
and see how it works for our Debian 10 VPS.
curl -L https://github.com/rocket-pool/smartnode-install/releases/latest/download/rocketpool-cli-linux-amd64 --create-dirs -o ~/bin/rocketpool && chmod +x ~/bin/rocketpool
What this does.. Emmm.. It creates a bin (like binaries) directory in our home directory (/home/admin/bin) and downloads rocketpool executable here (and makes it actualy executable) - to simplify things. Output should look like this:
Now we should restart terminal, so changes (i.e. paths to executables) take effect (so we can use command rocketpool instead of /home/admin/bin/rocketpool all the time, linux doesn’t forgive on this one, for security reasons). You can do that by right-clicking top of the window again and Duplicate Session. You login as admin and close the original window later.
[!] Note: You, copy-paster, reading important notes only, restart terminal..
Now we can try typing rocketpool to terminal, we should see logo and some executable usage info.
rocketpool
Yeaah, it works.. Great.. What’s next in manual.. Service install. Now, we have to do some harmless sudo command first.. Point is, when we first use sudo in session, it asks for password (we don’t want that during rocketpool service automatic installation) and on first ever use it displays some educational stuff.. meh.. So let’s run:
sudo apt update
Type in our regular user’s (admin’s) password and continue.. Now we know our system is up to date (no shit Sherlock) and we can proceed to rocketpool installation:
rocketpool service install
That installs needed components (docker, dependancies, service itself, ..)
We confirm [y] to continue and watch things getting to work, output should look like this:
Nice! Let’s follow the instructions on display..
rocketpool service config
Client we want to run.. is going to be Geth in our case. For those who don’t know what’s going on, Geth is PoW chain client which will download whole blockchain. Luckily for us, only Goerli testnet blockchain for now. Infura does this for you, but you need registration, API key.. check the original manual, I’m lazy to explain (or to register on Infura). Then hit Enter, Enter and decide if you want some particular or random Eth2 client; I won Prysm (which I like more, so JACKPOT!!)
Great, now we can run our stack!! So.. rocketpool service start.. and..
EPIC FAIL!! And I can tell you why.. We did shitty job renaming the server. You can already see me going to edit (system config file = with sudo) hosts file, which is where system (and obviously docker of which the Rocket Pool node stack is being built) looks for name translations before asking DNS servers..
sudo mcedit /etc/hosts
Here we edit line with our public IP address so it contains only IP and our hostname.. like this:
F2, ESC, you know the drill..
[!] Note: Hey all, let’s restart terminal again! Trust me, do it..
And now, fingers crossed..
rocketpool service start
OMG, OMG, it’s happening.. !!
These green dones mean it runs! You can check with following commands:
rocketpool service status
for running services..
rocketpool service stats
here we see system resources; we quit with Ctrl+C..
rocketpool service logs eth1
rocketpool service logs eth2
..to see logs from eth1 and eth2 clients.. meaning sync status.. Ctrl+C to quit again..
rocketpool service logs
..for merged log from all components of RP stack.
You can see ETH2 is going to take some hours.. or days.. So we have time :). In next chapters we’ll look how to finish node setup step by step and how should it look like on screen; we’ll monitor server resources, secure it a bit and later I’ll try to add manual for people who want to try node on some old hardware (so they’ll have to install and configure Debian themselves, Contabo won’t do that for them).
Follow up articles:
Stay tuned, links for other manuals will appear down here as I’ll create them.
kajik#8875