How to set-up your own Pirl pool
Listen to this article:

Hello everybody! 😀

My name is Fireger, I am the owner and operator of and have decided to create a walk through on how to setup your own pool

Pros and Cons of owning your own pool


  • You help decentralize the network
  • Often revered by the community
  • Pride in owning a pool


    • Usually costs more then what you gain from it
    • Can be a pain to setup and maintain (this tutorial aims to reduce the pain)


Linux – Ubuntu 64bit Server 16.04

A Domain (DNS)



A mining pool is hosted by a VPS (Virtual Private Server), this tutorial assumes you have a VPS.

Requirements for a VPS:

At least 20Gb of storage


At least 2Gb of memory (4Gb min is usually recommended)

We Recommend:

vultr vps


The idea of this tutorial is to ‘hold your hand’, there won’t be a lot to do outside of the steps below, you’ll have to configure some of the config files to suit your own needs, but that should be it.


We will be starting as the root user today, just to get the dependencies installed, the entire installation configuration of the pool will be as a seperate user (created later)


Step 1: Updating Ubuntu

apt-get update
apt-get dist-upgrade
apt-get install build-essential make
apt-get install nano
apt-get install screen

Step 2: Installing Dependencies

2.A – Installing Go

sudo tar -xvf go1.9.2.linux-amd64.tar.gz
sudo mv go /usr/local
export GOROOT=/usr/local/go
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH
export GOPATH=$HOME/go

To check if go is setup correctly, type

go version

And you should get a response with:

go version go1.9.2 linux/amd64


2.B – Installing Redis-Server

tar xvzf redis-stable.tar.gz
cd redis-stable
sudo cp src/redis-server /usr/local/bin/
sudo cp src/redis-cli /usr/local/bin/

sudo mkdir /etc/redis

sudo mkdir /var/redis

sudo cp utils/redis_init_script /etc/init.d/redis_6379

sudo cp redis.conf /etc/redis/6379.conf

sudo nano /etc/redis/6379.conf

In nano, use CTRL + W and type daemonize then hit enter.

Change it to yes instead of no.

Next hit CTRL + W again and type in dir, you’ll have to do this a couple times until you see where to replace the path.

Set the dir to /var/redis/6379    (THIS IS IMPORTANT)

sudo mkdir /var/redis/6379

sudo update-rc.d redis_6379 defaults

sudo /etc/init.d/redis_6379 start


2.C – Installing Node.js

apt-get install nodejs
apt-get install npm
ln -s `which nodejs` /usr/bin/node

2.D – Installing Nginx

sudo apt-get install nginx

Step 3: Pool setup

adduser pirl
(for the sake of the tutorial this user will be ‘pirl’)
create password
leave details blank

adduser pirl sudo

Logout and login with new user.

Download Open Ethereum Pool

git clone
cd open-ethereum-pool

By default Open Ethereum Pool is configured for the Ethereum Reward value, we need to change this as PIRL rewards 10 coin per block. To do this we need to edit unlocker.go before we make the pool.

nano /home/pirl/open-ethereum-pool/payouts/unlocker.go

You will see these two line:

var homesteadReward = math.MustParseBig256("5000000000000000000")
var byzantiumReward = math.MustParseBig256("3000000000000000000")

You want to change the “5” and the below “3” to 10, like below.

var homesteadReward = math.MustParseBig256("10000000000000000000")
var byzantiumReward = math.MustParseBig256("10000000000000000000")

You can now save and exit the file (CTRL+O then Enter to Save / CTRL+X to exit)

export GOROOT=/usr/local/go

export PATH=$GOPATH/bin:$GOROOT/bin:$PATH

export GOPATH=$HOME/go


Download PIRL

cd ..
tar -xvf pirl-linux-amd64.tar.gz
cp /home/pirl/pirl-linux-amd64/pirl /home/pirl/open-ethereum-pool/pirlnode
cd /home/pirl/open-ethereum-pool/

Here we’re copying some binaries into the right folders.

cp /home/pirl/open-ethereum-pool/build/bin/open-ethereum-pool ~/open-ethereum-pool/pirlpool

Create a PIRL Address:

./pirlnode –fast –cache=512 console

Before it starts syncing, you’ll have ~30 seconds to use the console, use this time to do this:


– REPLACE yourpassword WITH YOUR desired password.

Write down your password and account id.

You can copy your wallet address in Putty by highlighting it and right clicking

Then let it finish syncing, you can check to see if your synced by checking the current block height on any pirl pool and seeing if it matches the “number=xxxxxx” value in the console, if its close, or if it matches, you’re synced. To exit, just type exit and hit enter.

nano .walletpass

This will create and open a file called .walletpass, you need to put the password for your pirl account in here and nothing else.

After you type your password, use these commands to save and exit.

CTRL + O to “write out” the file.
CTRL + X to quit nano.

Time to get your config files!



nano payout.json

Replace the wallet address with your wallet address. (Remember: CTRL+O then Enter to Save / CTRL+X to exit)

nano unlocker.json

Replace the wallet address with your wallet address. (Remember: CTRL+O then Enter to Save / CTRL+X to exit)

Create and edit your poolstart script!


Copy the entire contents below and paste (right click in putty) into


#Make sure no other pesky screens are running
killall screen
screen -wipe
sleep 1

cd /home/pirl/open-ethereum-pool/
echo starting pirlnode
screen -LdmS pirlnode ./pirlnode -maxpeers 100 -rpc -rpcaddr “” –rpcapi eth,net,web3 -unlock=”0x86d88c82c4c7f8302c9bfcf4c995b7415195fa31″ –password=”/home/pirl/open-ethereum-pool/.walletpass”

# the file “/home/pirl/open-ethereum-pool/.walletpass” HAS to contain your wallet password, we did this though

sleep 10

echo starting 2b pool
screen -LdmS pirl-pool2b ./pirlpool pool2b.json

echo starting 9b pool
screen -LdmS pirl-pool9b ./pirlpool pool9b.json

echo starting API
screen -LdmS pirl-api ./pirlpool api.json

echo starting unlocker
screen -LdmS pirl-unlocker ./pirlpool unlocker.json

echo starting payout
screen -LdmS pirl-payout ./pirlpool payout.json

Make sure that you replace WALLET ADDRESS above with your wallet address, CTRL + O / Enter / CTRL + X to Save.

Let’s config Nginx!

sudo nano /etc/nginx/sites-available/default


Use the down arrow until you’re at the end of the file then hit


This will cut everything from the file.


server {

root /home/pirl/open-ethereum-pool/www/dist;
index index.html index.htm;


location /api {

location / {
try_files $uri $uri/ /index.html;

Paste the above into nano (right click to paste in putty).

Make sure you change to your dns (domain).

CTRL+O (To write out) Hit Enter.

CTRL+X To Exit

sudo service nginx reload

Making the front end:

cd www
sudo npm install -g ember-cli@2.9.1
sudo npm install -g bower
npm install
bower install

Next we need to edit the environment.js file located in Open-Ethereum-Pool

nano /home/pirl/open-ethereum-pool/www/config/environment.js

In this file you’ll want to replace the example domains with yours.

e.g. //

Make sure the pool fee says 1% and your payout says 1 PIRL

Change Blocktime to 13

Now we just have to build it

cd ..
chmod +x


Need help?

Join us on discord!

News Reporter
The owner and operator of

3 thoughts on “How to set-up your own Pirl pool

  1. Thanks for the tutorial! I have everything working perfectly, but when I find a block it still says the reward is only 5 Pirl. I changed the value in unlocker.go but it still shows up as 5 Pirl and pays out accordingly so extra Pirl gets left in the pool wallet. Is there something else I’d have to do to fix that?

Leave a Reply

%d bloggers like this: