Creating Ether-1 Mining Pool on Ubuntu

Last updated 9 days ago

Introduction

This guide will help you setting up your Ether-1 pool on Ubuntu 16.04 LTS Server running sammy007's open-ethereum-pool. It will provide you with a working solution for a start. This guide aims after leaving you with a simple and lightweight initial pool configuration that can actually be used to start mining. In this initial configuration the pool sufficiently be used for:

  • Solo Mining

  • Combined Solo Mining

  • Pool Mining (For setting up a community pool further configuration will be required)

Prerequisites

Setup Steps

Summary

Creating User for Running Ether-1 Node and Pool

I suggest to create a new user to run the Ether-1 Node and the pool under. So that's the first thing we do. We create a new user called ether1 and add it to the sudoers group and for node monitoring to the system-journal group. To achieve that we type the following commands in a server terminal and fill in the desired information when being asked for.

$ sudo adduser ether1
$ sudo adduser ether1 sudo
$ sudo adduser ether1 systemd-journal

Afterwards we log in as that newly created user by running:

$ su ether1

Installation of go

First of all we update our package lists by entering:

$ sudo apt-get update

After that we can run the following command to install the necessary go binaries and dependencies on our system. It might take some time to complete.

$ sudo snap install --classic go

Installing redis-server

Now it is time to install the redis-server, an in-memory key-value store solution, needed for samm007's open-ethereum-pool. We achieve that by typing:

$ sudo apt-get install redis-server

Installing Nodejs

Nodejs is a javascript platform which is mandatory for Sammy007's open-ethereum-pool. Npm is the Node.js paket manager which is also going to be needed for building the pool later on. To install nodejs on Ubuntu, enter the following commands:

$ sudo apt-get install nodejs
$ sudo apt-get install npm
$ sudo apt-get install nodejs-dev
$ sudo apt-get install nodejs-legacy

Installing Nginx

Final preparation should be installing nginx onto our machine. To do that enter:

$ sudo apt-get install nginx

After all those changes to our system a reboot is more than welcome so we enter reboot into the console window. When our machine is rebooted we log back in to the user we created to keep going.

$ reboot

Installing the latest Ether-1 Node

Now it is the time to get the latest Ether-1 Node from the Ether-1 GitHub Ether-1 Github. In our case that will be "Ether-1 V1.1.7 - Security Update". You should check out the Ether-1 GitHub to make sure you get the latest Version.

In case the release used in this guide might be deprecated, replace it with the corresponding link of the current release.

Downloading Node

We make sure we are in the home directory of the new user by typing:

$ cd ~

Then we download the node by typing in:

$ wget -N https://github.com/Ether1Project/Ether1/releases/download/1.1.7/ether1-linux-1.1.7.tar.gz

Extracting the Node

Next step is to extract the archive file we just downloaded. To achieve that we enter:

$ tar xfvz ether1-linux-1.1.7.tar.gz

Extraction of the archive leaves you with a new directory named by the archive file. Within that directory you will find the latest release version of the Geth Ether-1 node binary. Enter the folder by typing:

$ cd ether1-linux-1.1.7.tar.gz

Then run the node with the following command.

$ screen ./geth --rpc --rpcaddr 127.0.0.1 --rpcport 8545 --syncmode "fast" --etherbase YOUR_ETHERBASE_ADDRESS --mine

Installing sammy007's open-ethereum-pool

Downloading and Building Sammy007's open-ethereum-pool

Now we going to clone sammy007's open-ethereum-pool repository to the home directory of our freshly created pool user. First two commands will clone sammy007's open-ethereum-pool. The third command lets us change to that directory we just cloned to our user's home directory. And finally the make command initiates building process of the pool.

$ git config --global http.https://gopkg.in.followRedirects true
$ git clone https://github.com/sammy007/open-ethereum-pool.git
$ cd open-ethereum-pool
$ make

Be patient. Building can take quite some time to finish.

Building the Frontend for Sammy007's Open-ethereum-pool

Now we are going to build the frontend for the pool. For that we need to adjust a jew things. First thing to do is to change to the subdirectory www/.

$ cd www

Then we have to edit the environment.js in the subfolder config/. Use your preferred editor to change the according lines. In this guide we are going to use midnight commander. If you don't have midnight commander yet and want install it then you can type:

sudo apt-get install mc

You can use nano, vi, emacs, gedit or any other text editor to perform the following steps.

Once installed mc can be run by typing 'mc' in the console. Use the arrow keys to move the highlighted navigation bar onto the 'environment.js' file on the left pane. Then press the 'F4' button on your keyboard to open the file in the editor. Incase you wanna use mc the first time for editing a file it will ask you which editor you want to use. We are going to use mcedit. So in our case we enter 3 and press return. Now you should see the code written within the 'environment.js' file. We need to adjust the following things to match our requirements:

1. In line 18 the entry 'ApiUrl: '//example.net/'', should be changed to fit your need. You might wanna change it to your domain. If you don't have a domain you cam also enter a ddns hostname there. It is also possible to configure a local LAN ip here. That could be actually wanted incase you intend to use this setup for solo- or combined solomining.

2. In line 21 the entry 'HttpHost: 'http://example.net''', should be changed to fit your need. Either put in your domain including the protocol indicator. A ddns hostname can be put in there also. And as before it is possible to put a local LAN ip in here, but don't forget the 'http://' protocol indicator.

3. In line 22 the entry 'HttpPort: 8888', can be edited to fit your desire. It is the port where the pool is listening for http mining connections.

4. In line 25 the entry 'StratumHost: 'example.net'', should be changed to fit your needs. Putting in your domain / ddns hostname or local Lan ip are again the three options.

5. In line 26 the entry 'StratumPort: 8008', can be edited to fit your desire. It is the port where the pool is listening for Stratum mining connections.

6. In line 29 the entry 'PoolFee: '1%'', can be edited to fit your need and server usage. This setting though is only a visual part of the pool and has no influence on real Fee.

7. In line 30 the entry 'PayoutThreshold: '0.5 Ether'', can be edited to show whatever Payout Threshold you want to be shown on your pool later on. Again this is only a visual part of the pool and has no influence on payout settings.

8. In line 33 the entry 'BlockTime: 14.4' should be edited to 13.0, which is the ETHO target blocktime.

Here you can have a look at the edited file of this guide. Since this pool is going to be used for combined and isolated solomining, a local LAN ip was used.

Incase you wanna use this pool as a community pool, you should have a close look at the file 'unlocker.go' in the 'payouts/' subfolder of the pool. After line 33 in the file 'unlocker.go' you will find the lines you are looking for to set block rewards and so on.

When you done editing your environment.js file, make sure to save your changes before closing. Once closed you can also close the midnight commander by using the 'F10' key on your keyboard.**

Now make sure you are in the right directory.

$ cd ~/open-ethereum-pool/www

Now, build the frontend with the settings you just made by running the following commands. Be patient building the frontend as it takes time to complete.

$ sudo npm install -g ember-cli@2.9.1
$ sudo npm install -g bower
$ sudo npm install
$ bower install

Once completed you need to change the nginx configuration. The file 'default' in '/etc/nginx/sites-available/' needs modification. You do that using nano, vi, ir an editor of your chosing. Remember to start the command using sudo. I am using midnight commander and the command listed below is needed.:

$ sudo mc

On the left pane we navigate to /etc/nginx/sites-available/default and hit the 'F4' key once the file in question is highlighted. Change the root folder for nginx to /home/YOURUSERNAME/open-ethereum-pool/www/dist/ and add and edit missing parts from the screenshots. Save your work and quit the editor. Afterwards quit the midnight commander by pressing the 'F10' key again.

Now we need to restart the nginx server. To do so we run the following command.

$ sudo /etc/init.d/nginx restart

If you run into problems at this point, then it is most definetely because you were not accurate enough when editing the default file of your nginx. You can narrow problems down by using the command 'sudo journalctl -xe'.

Pool Configuration and Starting Everything up

Now that everything is prepared the way we need it, it is time to get a working config in place for our pool. We move into the open-ethereum-pool folder within our home directory. Then we create a 'config.json' file by copying 'config.example.json'.

$ cd ~/open-ethereum-pool
$ cp config.example.json config.json

Then we open up our favorite editor to edit the newly created 'config.json'. In our example we use the midnight commander again, so we run the command:

$ mc

In the midnight commander we select the newly created 'config.json' and hit the 'F4' key to use the editor on it. Lines 8 and 22 of the file need to be updated with your IP address, line 53 with the localhost IP 127.0.0.1. Don't forget to save your changes. Once you are finished, leave the midnight commander.

Now we are ready to run the pool. Run:

$ ./build/bin/open-ethereum-pool config.json

Now point your miner(s) at the pool address and happy mining. Stats of your pool can be found using your browser and entering your ip address.

Conclusion

Now you should have your very own Ether-1 Pool set up and running. For further configuration your should check out Sammy007's open-ethereum-pool on GitHub. The link is below:

Sammy007's open-ethereum-pool on Github https://github.com/sammy007/open-ethereum-pool/

(This guide was written by @mastermaid#1567. Thanks to Sammy007 for his open-ethereum-pool and to the Ether-1 team. Thanks to @pistol22cal#7602 for proofreading.)