Tutorial on how to quickly build a Monero mining pool with various algorithms in 10 minutes

Tutorial on how to quickly build a Monero mining pool with various algorithms in 10 minutes

Prepare Ubuntu system

Follow the steps below to enter

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash

sudo apt-get install -y nodejs

sudo add-apt-repository ppa:chris-lea/redis-server

sudo apt-get update

sudo apt-get install redis-server

sudo apt-get install libssl-dev

sudo apt-get install libboost-all-dev

git clone https://github.com/dvandal/cryptonote-nodejs-pool.git pool

cd

npm update

Edit vi config.json

enter

{
"poolHost": "your.pool.host",

"coin": "iridium",
“symbol”: “IRD”,
"coinUnits": 100000000,
"coinDecimalPlaces": 4,
"coinDifficultyTarget": 175,

"daemonType": "default",
"cnAlgorithm": "cryptonight_light",
"cnVariant": 1,
"cnBlobType": 2,

"logging": {
"files": {
"level": "info",
"directory": "logs",
"flushInterval": 5
},
"console": {
"level": "info",
“colors”: true
}
},

"poolServer": {
"enabled": true,
"clusterForks": "auto",
"poolAddress": "** Your pool wallet address **",
"intAddressPrefix": null,
"blockRefreshInterval": 1000,
"minerTimeout": 900,
"sslCert": "./cert.pem",
"sslKey": "./privkey.pem",
"sslCA": "./chain.pem",
"ports": [
{
"port": 3333,
"difficulty": 5000,
“desc”: “Low end hardware”
},
{
"port": 4444,
"difficulty": 15000,
“desc”: “Mid range hardware”
},
{
"port": 5555,
"difficulty": 25000,
“desc”: “High end hardware”
},
{
"port": 7777,
"difficulty": 500000,
"desc": "Cloud-mining / NiceHash"
},
{
"port": 8888,
"difficulty": 25000,
"desc": "Hidden port",
“hidden”: true
},
{
"port": 9999,
"difficulty": 20000,
"desc": "SSL connection",
“ssl”: true
}
],
"varDiff": {
"minDiff": 100,
"maxDiff": 100000000,
"targetTime": 60,
"retargetTime": 30,
"variancePercent": 30,
"maxJump": 100
},
“paymentId”: {
"addressSeparator": "+"
},
"fixedDiff": {
"enabled": true,
"addressSeparator": "."
},
"shareTrust": {
"enabled": true,
"min": 10,
"stepDown": 3,
"threshold": 10,
"penalty": 30
},
"banning": {
"enabled": true,
"time": 600,
"invalidPercent": 25,
"checkThreshold": 30
},
"slushMining": {
"enabled": false,
"weight": 300,
"blockTime": 60,
"lastBlockCheckRate": 1
}
},

“payments”: {
"enabled": true,
"interval": 1800,
"maxAddresses": 50,
"mixin": 5,
"priority": 0,
"transferFee": 5000000,
"dynamicTransferFee": true,
“minerPayFee” : true,
“minPayment”: 100000000,
"maxPayment": null,
"maxTransactionAmount": 0,
"denomination": 10000000
},

"blockUnlocker": {
"enabled": true,
"interval": 30,
"depth": 20,
"poolFee": 0.8,
"devDonation": 0.2,
"networkFee": 0.0
},

"api": {
"enabled": true,
“hashrateWindow”: 600,
"updateInterval": 5,
“bindIp”: “0.0.0.0”,
"port": 8117,
"blocks": 30,
“payments”: 30,
"password": "your_password",
"ssl": false,
“sslPort”: 8119,
"sslCert": "./cert.pem",
"sslKey": "./privkey.pem",
"sslCA": "./chain.pem",
“trustProxyIP”: true
},

"daemon": {
“host”: “127.0.0.1”,
"port": 13007
},

“wallet”: {
“host”: “127.0.0.1”,
"port": 13008
},

"redis": {
“host”: “127.0.0.1”,
"port": 6379,
"auth": null,
"db": 0,
"cleanupInterval": 15
},

"notifications": {
"emailTemplate": "email_templates/default.txt",
"emailSubject": {
“emailAdded”: “Your email was registered”,
"workerConnected": "Worker %WORKER_NAME% connected",
"workerTimeout": "Worker %WORKER_NAME% stopped hashing",
“workerBanned”: “Worker %WORKER_NAME% banned”,
"blockFound": "Block %HEIGHT% found !",
"blockUnlocked": "Block %HEIGHT% unlocked !",
"blockOrphaned": "Block %HEIGHT% orphaned !",
“payment”: “We sent you a payment!”
},
"emailMessage": {
“emailAdded”: “Your email has been registered to receive pool notifications.”,
"workerConnected": "Your worker %WORKER_NAME% for address %MINER% is now connected from ip %IP%.",
“workerTimeout”: “Your worker %WORKER_NAME% for address %MINER% has stopped submitting hashes on %LAST_HASH%.”,
“workerBanned”: “Your worker %WORKER_NAME% for address %MINER% has been banned.”,
"blockFound": "Block found at height %HEIGHT% by miner %MINER% on %TIME%. Waiting maturity.",
"blockUnlocked": "Block mined at height %HEIGHT% with %REWARD% and %EFFORT% effort on %TIME%.",
"blockOrphaned": "Block orphaned at height %HEIGHT% :(",
“payment”: “A payment of %AMOUNT% has been sent to %ADDRESS% wallet.”
},
"telegramMessage": {
"workerConnected": "Your worker _%WORKER_NAME%_ for address _%MINER%_ is now connected from ip _%IP%_.",
"workerTimeout": "Your worker _%WORKER_NAME%_ for address _%MINER%_ has stopped submitting hashes on _%LAST_HASH%_.",
“workerBanned”: “Your worker _%WORKER_NAME%_ for address _%MINER%_ has been banned.”,
"blockFound": "*Block found at height* _%HEIGHT%_ *by miner* _%MINER%_*! Waiting maturity.*",
"blockUnlocked": "*Block mined at height* _%HEIGHT%_ *with* _%REWARD%_ *and* _%EFFORT%_ *effort on* _%TIME%_*.*",
"blockOrphaned": "*Block orphaned at height* _%HEIGHT%_ *:(*",
“payment”: “A payment of _%AMOUNT%_ has been sent.”
}
},

"email": {
"enabled": false,
"fromAddress": "[email protected]",
"transport": "sendmail",
"sendmail": {
"path": "/usr/sbin/sendmail"
},
"smtp": {
"host": "smtp.example.com",
"port": 587,
"secure": false,
"auth": {
“user”: “username”,
“pass”: “password”
},
"tls": {
"rejectUnauthorized": false
}
},
"mailgun": {
"key": "your-private-key",
"domain": "mg.yourdomain"
}
},

“telegram”: {
"enabled": false,
“botName”: “”,
“token”: “”,
“channel”: “”,
"channelStats": {
"enabled": false,
“interval”: 30
},
"botCommands": {
“stats”: “/stats”,
“report”: “/report”,
“notify”: “/notify”,
“blocks”: “/blocks”
}
},

“monitoring”: {
"daemon": {
"checkInterval": 60,
"rpcMethod": "getblockcount"
},
“wallet”: {
"checkInterval": 60,
"rpcMethod": "getbalance"
}
},

"prices": {
"source": "tradeogre",
“currency”: “USD”
},

"charts": {
"pool": {
"hashrate": {
"enabled": true,
"updateInterval": 60,
"stepInterval": 1800,
“maximumPeriod”: 86400
},
"miners": {
"enabled": true,
"updateInterval": 60,
"stepInterval": 1800,
“maximumPeriod”: 86400
},
"workers": {
"enabled": true,
"updateInterval": 60,
"stepInterval": 1800,
“maximumPeriod”: 86400
},
"difficulty": {
"enabled": true,
"updateInterval": 1800,
"stepInterval": 10800,
“maximumPeriod”: 604800
},
“price”: {
"enabled": true,
"updateInterval": 1800,
"stepInterval": 10800,
“maximumPeriod”: 604800
},
“profit”: {
"enabled": true,
"updateInterval": 1800,
"stepInterval": 10800,
“maximumPeriod”: 604800
}
},
"user": {
"hashrate": {
"enabled": true,
"updateInterval": 180,
"stepInterval": 1800,
“maximumPeriod”: 86400
},
“payments”: {
“enabled”: true
}
},
"blocks": {
"enabled": true,
“days”: 30
}
}
}

After completion, enter ":wq" to save and exit

Start the mining pool

node init.js

Normal state

config.json needs to be modified

<<:  The TUBE coin mining tutorial supports server dual-channel ordinary computer CPU and graphics card mining!

>>:  ETNC coin mining tutorial, total amount 21 billion, Cryptonight V7 algorithm, supports CPU graphics card mining!

Recommend

What are the characteristics of a lucky woman?

In fact, regarding women's faces, there are a...

What is the fate of people with tiger eyebrows?

If some people have tiger eyebrows, they tend to ...

V God warns: High transaction fees will threaten the security of Ethereum

According to BlockBeats, after the Ethereum trans...

Facial features that are not suitable for cooperation with others

Facial features that are not suitable for coopera...

The total stake of the Filecoin network is currently about 31.8 million FIL

According to relevant data, the current block hei...

How to tell your child's face

One’s fortune and misfortune in life can be seen ...

Which people prefer to eat vegetables?

Vegetables and fruits are actually very good thin...

The Secret of Life Fortune Reading by Palmistry

The Secret of Life Fortune Reading by Palmistry T...

How Can Binance Recover the Lost 7,000 Bitcoins?

The more than 7,000 BTC stolen from Binance has s...

What are the characteristics of good luck?

Whether a person's luck is good or not is ine...

Footprints to tell whether you are destined to be rich or busy

In physiognomy, we can tell whether a person is d...