I have produced a series of videos on how to implement an ERGO node at home.

Here you will find the list of commands to run under Linux to set up this type of Node. If you have any questions, please post them in comments under the videos.

To help me or support the channel, you can buy something on Amazon via my affiliate links or click on the “join” button of the channel. Thank you very much for your help and support.

The installation takes place on a Debian 11.  You are free to adapt the installation to another OS than Debian.

To launch the commands, you can connect via SSH or via xRDP or directly on the screen of the machine. VNC is a bit slow, but it also works.

======== Go to root (admin) =====

[php]sudo su[/php]

======== System update =====

[php]

apt update

apt upgrade

apt autoremove

apt install screen -y

apt install wget -y

[/php]

 

======== Java installation =====

[php]apt install libc6-i386 libc6-x32[/php]

wget https://download.oracle.com/java/18/latest/jdk-18_linux-x64_bin.deb

[php]dpkg -i jdk-18_linux-x64_bin.deb[/php]

======== Selection of Java =====

When selecting choose the number corresponding to Oracle Java.

[php]

update-alternatives –install /usr/bin/java java /usr/lib/jvm/jdk-18/bin/java 2

update-alternatives –config java

update-alternatives –install /usr/bin/jar jar /usr/lib/jvm/jdk-18/bin/jar 2

update-alternatives –install /usr/bin/javac javac /usr/lib/jvm/jdk-18/bin/javac 2

update-alternatives –set jar /usr/lib/jvm/jdk-18/bin/jar

update-alternatives –set javac /usr/lib/jvm/jdk-18/bin/javac

[/php]

Check the version:

[php]java -version[/php]

Edit the file:

[php]sudo nano /etc/profile.d/jdk.sh[/php]

 

And add :

[php]

export J2SDKDIR=/usr/lib/jvm/jdk-18

export J2REDIR=/usr/lib/jvm/jdk-18

export PATH=$PATH:/usr/lib/jvm/jdk-18/bin:/usr/lib/jvm/jdk-18/db/bin

export JAVA_HOME=/usr/lib/jvm/jdk-18

export DERBY_HOME=/usr/lib/jvm/jdk-18/db

[/php]

 

Load profile

[php]source /etc/profile.d/jdk.sh[/php]

 

======== back to user mode =====

[php]

exit

[/php]

====== NODE INSTALLATION ======

[php]

mkdir ergo
cd ergo
wget https://github.com/ergoplatform/ergo/releases/download/v4.0.39/ergo-4.0.39.jar[/php]

Copy the path

[php]pwd[/php]

Edit the ergo.conf file :

[php]nano ergo.conf[/php]

and add :

by changing the paths with the one copied above
by changing the variables in UPPERCASE
Attention to the path under windows it is something like “C:\PATH” and under linux “/home/path/”. Remember to change the “/” under windows to “\”

ergo {
directory = “PATH/ergo/”
node {
mining = true
useExternalMiner = true
}
wallet.secretStorage.secretDir = “PATH/ergo/wallet/keystore”
voting {
8 = 1000
}
chain {
reemission {
checkReemissionRules = true
}
}
wallet {
checkEIP27 = true
}
}

scorex {

network {
nodeName = “NAME-OF-YOUR-NODE
bindAddress = “0.0.0.0:9020”
declaredAddress = “ADRESSEIP_EXTERNAL:9020”
}
ntp {
server = “ntp.aliyun.com”
}
restApi {
# Hex-encoded Blake2b256 hash of an API key.
# Should be 64-chars long Base16 string.
# below is the hash of the string ‘hello’
# replace with your actual hash
apiKeyHash = “TO_GET_IN_ THE_NEXT_STAGE”
}
}

 

===== LAUNCH THE NODE =====

[php]java -jar -Xmx6G ergo-*.jar –mainnet -c ergo.conf[/php]

Note:

Xmx6G will take 6GB of memory to allow the node to sync the blockchain
once in production this parameter can be replaced by Xmx1G or Xmx2G

 

====== CONFIGURE THE NODE =======

http://127.0.0.1:9053/swagger#/utils/hashBlake2b

In the text field, enter a password (remember it!)

Call the api and note the HASH for example for the password hello it’s 324dcf027dd4a30a932c441f365a25e86b173defa4b8e58948253471b81b72cf

Add to ergo.conf

scorex {

restApi {

# Hex-encoded Blake2b256 hash of an API key.

# Should be 64-chars long Base16 string.

# below is the hash of the string ‘hello’

# replace with your actual hash

apiKeyHash = “HASH”

}

}

 

====== CONFIGURE THE WALLET ======

http://127.0.0.1:9053/panel

Create a wallet in the dedicated section and make a note of the new password and the words to import the wallet.

=== STRATUM SERVER INSTALLATION ===

To mine from your rigs you need to install the stratum communication protocol.

It is a time management protocol, it allows you to timestamp the accesses to the node when you mine.

https://github.com/mhssamadani/ErgoStratumServer

Before continuing your node must be completely synchronized, header, blocks and wallet. In case of a crash, simply restart the node to continue the first synchronization. This process will take several hours, or even days.

[php]
git clone https://github.com/mhssamadani/ErgoStratumServer.git npm update
npm i bignum
npm audit fix
cd ErgoStratumServer
[/php]

Editing the start.js file

Change the address with the one of your node:

“address”: “YOUR_ADDRESS_NODE”, //Address to which block rewards are given

Then change the difficulty with a value you like:

“ports”: {
“3032” : { //A port your miners can connect to
“diff” : 2000000, //the difficulty of the pool for this port
/*
* Use this parameter to multiply the difficulty by b for each request.
* some miners like NBMiner do not support the stratum difficulty method.
* If you want your pool to work with these miners, set these parameters.
*
* */
“multiplyDifficulty”: true,
/* MultiplyDifficulty is a feature that will automatically adjust the difficulty for
miners based on their hash rate to reduce network overhead */
“varDiff” : {
“minDiff”: 1600000, //minimum difficulty
“maxDiff” : 2000000, //The network difficulty will be used if it is less than this value.
“targetTime” : 15, //Try to get 1 action by this number of seconds
“retargetTime”: 10, //Check if we should retarget every second.
“variancePercent”: 30, //Allow time to move away from such % of the target without retargeting
}
},

[php]nano start.js[/php]

Modify the address: with the wallet address of your node Modify the IP address with the IP address of your node You can play with the difficulty settings if you are interested. Then launch the stratum

[php]node start.js[/php]

=== MINING FROM HIVE or WINDOWS ===

To mine from your rigs you need to :

use the ERG address of the node,
use the IP address of the node on port 3032

=== SOURCES ===

https://docs.ergoplatform.com/node/install/

https://github.com/mhssamadani/ErgoStratumServer