Installing Ether-1 Masternodes and Service Nodes

This page explains how to use Redhat/CentOS/Fedora or Debian/Ubuntu/Mint Linux to run the Ether-1 Masternode and Service Node software

Introduction

If you're a beginner, it's recommended to go to the bottom of this page and reference some of the video guides to augment the steps in this guide. Using both sources will bring more clarity to the steps as well as the steps between the steps, so to speak.

Section 1 — Node Types (An overview of the different nodes on the network and their server / collateral requirements.)

The Ether-1 project features three types of nodes: Gateway Nodes, Master Nodes, and Service Nodes. The purpose of these nodes is to provide storage and computational resources to the ethoFS network, to provide capacity and redundancy for content hosted decentrally (on many nodes!) on the network. This guide focuses on the setting up for Masternodes and Service Nodes.

Section 2 — Server Options (A brief summary of the options when it comes to running an Ether-1 node.)

It is possible to host an Ether-1 Node on any server which meets the minimum requirements detailed below. Either on a dedicated server or through an online VPS provider, such as Vultr, Digital Ocean, OVH and many others. Most people opt for the VPS option, as it is typically much easier to configure and does not have the same cost as a local server does.

Community member @Mustbenice#7595 has compiled a list of cost efficient VPS providers. You're welcome to use one of the providers on the list but ideally you will find your own to spread the servers over as many independent providers as possible.

VPS provider list: https://docs.google.com/spreadsheets/d/1zKFR4yyev-aqI3ZqGZs-Rz6RKe7VleBug7_yAnh2L6I/edit#gid=1161341563 It is important to spread nodes across a range of providers and data centers within each provider, in the case of network outage of a particular data center or provider. The more distributed geographically the more resilient the network will be.

The collateral required to host a masternode is 15 thousand ETHO and a service node only requires 5 thousand ETHO.

Servers running Ether-1 nodes must adhere to the following hardware and networking requirements:

  • Have a static public IPv4 address

  • Masternodes require 2GB of RAM and Service Nodes 1GB of RAM

  • Must allow firewall access through TCP & UDP port 30305. (For node traffic)

  • An uptime of 95% is required for Service Nodes and Masternodes

Ether-1 node operators are highly encouraged to only use servers that meet all hardware requirements. Node software will include hardware configuration checks to ensure the integrity of the network.

Section 3 — Example VPS Setup (A step by step guide on how to configure a VPS through Vultr.)

This section of the guide will focus on setting up a VPS server through Vultr. As previously mentioned, it is possible to use a range of different providers or your own server-grade hardware. Just DuckDuckGo for VPS providers and choose the right one for you.

In order to get started with Vultr, setup and account and deposit some funds.

  1. After setting up an account on Vultr, and having deposited funds to your account through the billing section, it is now possible to begin setting up a VPS.

  2. On the menu, select the servers page. From there, click on the plus icon to add a new server.

  3. Now you will be presented with a page titled Deploy New Instance. This page is where all of the settings for the VPS are selected. The following steps detail what options you need to select during the server setup process

    1. Server Location: The location of the server is not particularity important, I’d suggest picking the server location nearest to your location for the lowest latency when connecting to the VPS. (Although in reality location is not likely to have a significant impact on connection speed.)

    2. Server Type: This is where you select the operating system for the VPS. It is possible to run Ether-1 nodes on a range of Linux based operating systems, such as Ubuntu, Debian, and Fedora. For the purposes of this guide, we will be using an Ubuntu-based VPS. (Ubuntu version 16.04)

    3. Server-Size: For the service node, the $5 / month package is sufficient, while for the Master Node the $10 / month package is sufficient. The gateway node will require the $20 / month package.

    4. There is no need to select any options under the Additional Features, Startup Script or SSH Keys options. These can all be left blank.

    5. Server Hostname & Label: Name the server something appropriate, such as Ether-1 Master Node 01. So you can keep track of it if you have multiple instances.

    6. Press the Deploy Now Button. It will take a couple minutes for the VPS to be set up.

Section 4: SSH (Explanation on how to connect to the server through SSH.)

If you don't like using SSH, in most cases, you don't have to! The vast majority of VPS providers will provide you with easy console access using your browser. If you have console access, you do not need to open TCP port 22 for SSH. You can move on to the next step if you prefer using the console.

SSH is the secure method which we use to connect to the server in order to configure the operating system and node. This requires TCP port 22 to be open, as this is the port which the SSH protocol uses by default to communicate with the server.

SSH Using Windows

On Windows, an SSH client must be downloaded, such as Putty.

Putty Connection

To connect to the server through SSH you will need the IP address of the server, along with the root username and password. This can be found on the VPS provider's website or in your email inbox.

Using Putty, input your IP address from your server /VPS in order to start an SSH connection.

When connecting using Putty, you can paste in your password by copying it from the source and then right-clicking within the putty window. The right click acts as paste, then you hit enter to submit it.

You will receive the warning screen below when you connect to your VPS for the first time. Simply select Yes and this will save the server's fingerprint on your home computer.

Putty host key warning screen

If you ever get the same warning again on the same machine, beware, you may be connecting to a rogue server.

SSH Using macOS or Linux

SSH is built into macOS and Linux operating systems within the terminal, so no additional programs are needed; you simply type ssh <username>@<ip_address_of_server> (provided by VPS company)as seen below:

SSH into server at 192.168.1.5 with oxsdaily username

When first SSH-ing into the VPS, use root@<ip_address_of_server>, then switch over to ether1node@<ip_address_of_server> when the guide says to do it below

Just like with Windows, macOS and Linux machines will warn you to save the SSH fingerprint of the server upon first connecting to it.

macOS or Linux terminal saving the fingerprint of the VPS server

Section 5: Checking Required VPS Ports (Make sure that the ports required by the node software is not in use.)

Not all VPS configurations are the same. Sometimes you will have software installed that is using the service port numbers required for the operation of Ether-1 Gateway Nodes: TCP ports 4001 and 30305.

There is an easy way to make sure all necessary ports are unused. Simply run the commands below and make sure there is no output returned for any of them. If you see any output, that means you need to disable something in order to run your Ether-1 Gateway Node.

sudo lsof -i tcp:4001 -s tcp:listen
sudo lsof -i tcp:30305 -s tcp:listen

Here's what a good configuration looks like:

All ports are available for the Ether1 Node software!

You may see output when you run the command above. If you do, observe the name of the process and disable it. The name of the process is displayed on the left side.

apache2 using port 80

Simply run the 2 commands below to disable the service blocking your port. Then run the first command over again to ensure the port has been released. Replace the name of the service with what you see shown on the left side (in red)

sudo systemctl stop apache2
sudo systemctl disable apache2
sudo lsof -i tcp:80 -s tcp:listen
The apache2 service has been disabled and nothing is blocking port 80. Good to install now!

Section 6: Debian / Ubuntu Server Configuration (A guide on how to configure an Ubuntu / Debian based server.)

This section of the guide is designed for Debian / Ubuntu based servers. Please see the next section of the guide if your server is running on CentOS, Fedora or Redhat. After logging into the server as root, it is best to do some general updates. Copy and paste the following commands, one by one, into the SSH window, to make sure the operating system is updated. We will also set up a user to run the node software under, as it is not advisable to run the node under the root user.

apt-get update
apt-get dist-upgrade -y
mkdir /var/run/fail2ban
apt-get install sudo ufw fail2ban nano -y
adduser ether1node
adduser ether1node sudo
adduser ether1node systemd-journal

While still logged in as root, make sure your firewall is configured by allowing TCP ports 22 and 30305 for server administration and Ether-1 node communications.

ufw reset
ufw allow 22/tcp
ufw allow 4001/tcp
ufw allow 30305/tcp
ufw allow 30305/udp
ufw enable

One last task to be executed as root is configuring fail2ban, which will blacklist IP addresses that try to guess your root or ether1node password.

cp /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.local
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
systemctl restart fail2ban
fail2ban-client status

The last command makes sure that fail2ban is operating properly. Ensure you have 1 jail active as seen below

Fail2ban enabled for sshd

After running the above commands & creating the ether1node user, disconnect from the server by closing down the Putty window or by type exit into the same window. Then reconnect to the server using the same IP address as before, but using the ‘ether1node’ user which you just set up. You will be presented with the following terminal window if you logged in to the new user account properly. It is very important to ensure that you are connected as ether1node and not as the root user.

Putty connection with ether1node

Now you are connected to the server as the correct user we are going to install the node. Then reconnect to the server using the same IP address as before, but using the ether1node user which you just set up. It's very important to use the ether1node user to run the commands below.

Depending on whether you're installing a Service Node or a Masternode, you will need to run different commands as shown below.

Service Nodes

mkdir -p /tmp/ether1 && cd /tmp/ether1
rm -rf servicenode.sh && wget https://raw.githubusercontent.com/Ether1Project/ether1-node-scripts/master/debian/servicenode.sh
chmod +x servicenode.sh
./servicenode.sh

Masternodes

mkdir -p /tmp/ether1 && cd /tmp/ether1
rm -rf setupETHOFS.sh && wget https://raw.githubusercontent.com/Ether1Project/ether1-node-scripts/master/debian/setupETHOFS.sh
chmod +x setupETHOFS.sh
./setupETHOFS.sh -masternode

You will be asked to input the password for ether1node before the third command runs

If you receive an error on the third step above (see figure 1), don't worry, the very next step restarts the service using sudo to make sure it is running properly. The failure is related to security.

figure 1: Error when running ./setup.sh command

Now the node script is running on the Server! In order to double check that the node is running you can use one of these commands

sudo systemctl status ether1node
sudo systemctl status ipfs
sudo systemctl status ethoFS
sudo journalctl -f -u ether1node -u ipfs -u ethoFS

You should see the following terminal output after running the first command if everything is working properly. (Pay attention to the active status in the terminal output)

Working Ether-1 Node

Section 7: CentOS / Fedora / Redhat Server Configuration (A guide on how to configure a CentOS /Fedora / Redhat based server.)

This section of the guide is designed for CentOS, Fedora and Redhat based servers. Please see the previous section of the guide if your server is running a Debian or Ubuntu based operating system. After logging into the server as root, it is best to do some general updates. Copy and paste the following commands into the SSH window, to make sure the operating system is updated. We will also set up a user to run the node software under, as it is not advisable to run the node under the root user.

yum update -y
yum install wget nano systemd firewalld epel-release -y
yum install fail2ban -y
adduser ether1node && passwd ether1node
usermod -aG wheel ether1node

While still logged in as root, make sure your firewall is configured by allowing TCP ports 22 and 30305 for server administration and Ether-1 node communications.

firewall-cmd --zone=public --add-port=22/tcp --permanent
firewall-cmd --zone=public --add-port=4001/tcp --permanent
firewall-cmd --zone=public --add-port=30305/tcp --permanent
firewall-cmd --zone=public --add-port=30305/udp --permanent
firewall-cmd --reload
systemctl start firewalld
systemctl enable firewalld

One last task to be executed as root is configuring fail2ban, which will blacklist IP addresses that try to guess your root or ether1node password.

cp /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.local
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

On RPM based systems, fail2ban is not enabled by default. You have to edit the jail.local file to enable it

nano /etc/fail2ban/jail.local
jail.local

Simply remote the hashtags and save the file by pressing Ctrl+X then Y to confirm. Now start the fail2ban service and ensure you have 1 jail active

systemctl start fail2ban
systemctl enable fail2ban
fail2ban-client status
fail2ban should display status of sshd jail active

After running the above commands, disconnect from the server by closing down the Putty window. Then reconnect to the server using the same IP address as before, but using the ether1node user which you just set up. It's very important to use the ether1node user to run the commands below.

Depending on whether you're installing a Service Node or a Masternode, you will need to run different commands as shown below.

Service Nodes

mkdir -p /tmp/ether1 && cd /tmp/ether1
rm -rf install.sh && wget https://raw.githubusercontent.com/Ether1Project/ether1-node-scripts/master/rpm/servicenode.sh
chmod +x servicenode.sh
./servicenode.sh

Masternodes

mkdir -p /tmp/ether1 && cd /tmp/ether1
rm -rf install.sh && wget https://raw.githubusercontent.com/Ether1Project/ether1-node-scripts/master/rpm/setupETHOFS.sh
chmod +x setupETHOFS.sh
./setupETHOFS.sh -masternode

You will be asked to input the password for ether1node before the third command runs

Now the node script is running on the Server! In order to double check that the node is running you can use one of these commands:

sudo systemctl status ether1node
sudo systemctl status ipfs
sudo systemctl status ethoFS
sudo journalctl -f -u ether1node -u ipfs -u ethoFS

You should see the following terminal output after running the first command if everything is working properly. (Pay attention to the active status in the terminal output)

Working Ether-1 Node

Section 8: Node Dashboard / Verification Process (An explanation on how to finalize the node set up the process on the Ether-1 website.)

After setting up the Ether-1 node software on your server, you need to verify the node and tether it to your account on the Ether-1 website. This is to ensure that you control the collateral being used for the node, along with providing information such as node type, and IP address to the Ether-1 network.

  1. Go to the Ether-1 website to continue

  2. From here select the node dashboard and create an account using your E-Mail address and password.

  3. After making an account and logging into the node dashboard, you will see the following screen:

  4. This screen shows useful information, such as a map displaying the geographical location of your nodes. The table shows what nodes you have, their unique ID numbers and IP addresses. The most important section here is Node Uptime. As only when a node has > 95% up-time will it be eligible for payouts, so it's important to keep an eye on the status of your nodes to ensure everything is running properly!

  5. In order to add the node to your account, click on the Add Node button. This will take you to the following page:

  6. This page requires you to select the type of node, either Service Node or Master Node, along with the IP address of the VPS which the node software is running on. (Remember this can be found on the Vultr server page detailed earlier in the guide.)

  7. The ETHO wallet address must be the same address which holds the collateral for the node. For a Master Node, this is 15,000 coins, whereas a Service Node only requires 5,000 coins. The balance of the address can exceed the collateral requirement, but you must maintain the minimum balance in order to be eligible for payouts.

  8. You can get the address from the windows wallet by using the copy address button.

  9. After submitting this information, you will need to send a small verification transaction of 0.01 ETHO, this is to verify the balance of the wallet address and to confirm that you have ownership over the address by making a transaction from it. (At this point the 0.01 ETH0 is not recoverable.)

  10. The node should now be present in the dashboard but the node is not verified. This means the node is not eligible for payouts. To verify the node click on the details button at the end of the table.

  11. The verification address (highlighted in blue) is the address which the 0.01 ETHO must be sent to in order to verify the node.

  12. It is important NOT to send the collateral to this address, only the 0.01 ETHO verification amount, as any funds sent to the verification address are not currently recoverable.

  13. After sending the transaction, it will appear in the windows wallet. Once the transaction is confirmed by the network, copy the transaction ID from the windows wallet to the node verification page on the Ether-1 website.

  14. You can find the Transaction ID by clicking on the transaction within the windows wallet:

  15. After pasting this link into the node page, click the Add button. This will take a few seconds to verify and then you will be returned to the node dashboard.

Section 9: Additional Resources (Video supplements from YouTube and BitTube)

If you get lost along the way or need a visual example for some of the steps, the best way is to use one of the great Ether-1 Node setup videos below.

Video Guide by Masternode Mining
Video Guide by Goose
Video Guide by Fallen Gravity
Video Guide by Rizkit4dBizkit

(Original content contributed by Ether-1 Discord Community member @Joseph#2037. Proofreading help was provided by @Ulufulu#0498 and @BobZilla#8096.)