Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
install_pool [2018/04/08 22:09]
h0h0h0 Need to chmod swap
install_pool [2019/01/11 00:47] (current)
Line 2: Line 2:
  
 =====Setup an Iridium (IRD) mining pool===== =====Setup an Iridium (IRD) mining pool=====
 +
 +<WRAP center round important 80%>
 +This How-to need to be actualized : Iridium forked at block 115200 to change the POW.
 +This how-to can be applied on the iridium-pool fork : https://github.com/iridiumdev/iridium-pool :
 +it is ready for the new POW. and can be run on Node v8.11.1 LTS
 +</WRAP>
 +
  
 This a step by step guide on how to setup your own crypto-currency mining pool. This guide is going over how to setup an Iridium mining pool . This is meant to setup a mining pool for a SINGLE CRYPTO CURRENCY. This is not a guide for a Multipool !!!! This a step by step guide on how to setup your own crypto-currency mining pool. This guide is going over how to setup an Iridium mining pool . This is meant to setup a mining pool for a SINGLE CRYPTO CURRENCY. This is not a guide for a Multipool !!!!
Line 17: Line 24:
         * 2 CPU core         * 2 CPU core
         * 50Gb disk         * 50Gb disk
-        * Ubuntu 16.04 x64+        * Ubuntu 16.04 x64 or Ubuntu 18.04 x64
  
 ====Setup==== ====Setup====
Line 52: Line 59:
 ===Install Required Packages=== ===Install Required Packages===
 <code bash> <code bash>
-$ sudo apt-get install build-essential libtool autotools-dev autoconf pkg-config libssl-dev +$ sudo apt-get install build-essential cmake libtool autotools-dev autoconf libssl-dev pkg-config libboost-all-dev libssl-dev libzmq3-dev libunbound-dev libsodium-dev libminiupnpc-dev libunwind-dev liblzma-dev libreadline-dev libldns-dev libexpat1-dev libgtest-dev doxygen graphviz git curl libminiupnpc-dev 
-$ sudo apt-get install libboost-all-dev git npm nodejs nodejs-legacy libminiupnpc-dev redis-server +$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh bash 
-$ sudo add-apt-repository ppa:bitcoin/bitcoin +
-$ sudo apt install cmake +
-$ sudo apt-get install curl +
-$ sudo apt-get update +
-$ sudo apt-get install libdb4.8-dev libdb4.8++-dev +
-$ curl -sL https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh -o install_nvm.sh +
-bash install_nvm.sh +
-</code> +
-  +
 **exit and reopen terminal** **exit and reopen terminal**
  
-<code bash> +sudo curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - 
-   source ~/.profile +sudo apt-get install -y nodejs 
-   nvm install 0.10.48 +sudo npm i -g npm 
-   nvm use 0.10.48 +sudo add-apt-repository ppa:chris-lea/redis-server 
-   nvm alias default 0.10.48 +sudo apt-get update 
-   nvm use default+$ sudo apt-get install redis-server
 </code> </code>
 +
 +<WRAP center round tip 80%>
 +The latest version of https://github.com/iridiumdev/iridium-pool can run now with Node v8.11.1 LTS
 +</WRAP>
  
 =====IRD Daemon and Wallet Setup===== =====IRD Daemon and Wallet Setup=====
Line 95: Line 98:
 $ cd iridium-build $ cd iridium-build
 $ cmake -D STATIC=ON -D CMAKE_BUILD_TYPE=RELEASE .. $ cmake -D STATIC=ON -D CMAKE_BUILD_TYPE=RELEASE ..
-$ PORTABLE=1 make+$ PORTABLE=1 make -j$(nproc)
 </code> </code>
 **Now sit back for a couple minutes and allow it to compile**. **Now sit back for a couple minutes and allow it to compile**.
Line 111: Line 114:
 <code> <code>
 ********************************************************************** **********************************************************************
-You are now synchronized with the network. You may now start simplewallet.+You are now synchronized with the Iridium network.
  
-Please note, that the blockchain will be saved only after you quit the daemon with "exit" command or if you use "save" command.+Exit iridiumd and iridium_simplewallet with the "exit" or "save" command.
 Otherwise, you will possibly need to synchronize the blockchain again. Otherwise, you will possibly need to synchronize the blockchain again.
  
Line 120: Line 123:
 </code> </code>
 type **exit** so that it will save the fresh downloaded blockchain (default location is ~/.iridium). type **exit** so that it will save the fresh downloaded blockchain (default location is ~/.iridium).
- 
 ====Start the core daemon==== ====Start the core daemon====
 Start the iridium daemon (default p2p port is 12007 and listen all interfaces, default rpc port is 13007 and listen only on localhost)  : Start the iridium daemon (default p2p port is 12007 and listen all interfaces, default rpc port is 13007 and listen only on localhost)  :
Line 146: Line 148:
  
 =====Mining Pool Setup===== =====Mining Pool Setup=====
-Using a new terminal window 
  
-We will use the [[https://github.com/forknote/forknote-pool|forknote-pool]] to setup the pool and front end site.+<WRAP center round important 80%> 
 +https://github.com/iridiumdev/iridium-pool : is ready for current POW. Use it istead of the forknote pool 
 +</WRAP> 
 + 
 + 
 +Using a new terminal window
  
 +We will use the [[https://github.com/dvandal/cryptonote-nodejs-pool]] to setup the pool and front end site.
 ====Downloading and Installing==== ====Downloading and Installing====
 Clone the repository and run npm update for all the dependencies to be installed: Clone the repository and run npm update for all the dependencies to be installed:
 <code bash> <code bash>
-   $ git clone https://github.com/forknote/forknote-pool.git pool+   $ git clone https://github.com/dvandal/cryptonote-nodejs-pool.git pool
    $ cd pool    $ cd pool
    $ npm update    $ npm update
Line 163: Line 170:
  
  
-Edit the config.json file to your fits :+## Edit the config.json file to fit your needs
  
 <WRAP center round tip 100%> <WRAP center round tip 100%>
Line 181: Line 188:
 <code json> <code json>
 { {
 +    "poolHost": "your.pool.host",
 +
     "coin": "iridium",     "coin": "iridium",
     "symbol": "IRD",     "symbol": "IRD",
     "coinUnits": 100000000,     "coinUnits": 100000000,
 +    "coinDecimalPlaces": 4,
     "coinDifficultyTarget": 175,     "coinDifficultyTarget": 175,
 +
 +    "daemonType": "default",
 +    "cnAlgorithm": "cryptonight_light",
 +    "cnVariant": 1,
 +    "cnBlobType": 2,
  
     "logging": {     "logging": {
Line 201: Line 216:
         "enabled": true,         "enabled": true,
         "clusterForks": "auto",         "clusterForks": "auto",
-        "poolAddress": "your_pool_wallet_address",+        "poolAddress": "** Your pool wallet address **"
 +        "intAddressPrefix": null,
         "blockRefreshInterval": 1000,         "blockRefreshInterval": 1000,
         "minerTimeout": 900,         "minerTimeout": 900,
 +        "sslCert": "./cert.pem",
 +        "sslKey": "./privkey.pem",
 +        "sslCA": "./chain.pem",
         "ports": [         "ports": [
             {             {
                 "port": 3333,                 "port": 3333,
-                "difficulty": 500,+                "difficulty": 5000,
                 "desc": "Low end hardware"                 "desc": "Low end hardware"
             },             },
             {             {
-                "port": 5555+                "port": 4444
-                "difficulty": 5000,+                "difficulty": 15000,
                 "desc": "Mid range hardware"                 "desc": "Mid range hardware"
             },             },
             {             {
-                "port": 7777,+                "port": 5555,
                 "difficulty": 25000,                 "difficulty": 25000,
                 "desc": "High end hardware"                 "desc": "High end hardware"
 +            },
 +            {
 +                "port": 7777,
 +                "difficulty": 500000,
 +                "desc": "Cloud-mining / NiceHash"
             },             },
             {             {
                 "port": 8888,                 "port": 8888,
-                "difficulty": 400500+                "difficulty": 25000
-                "desc": "Nicehash or mining farm", +                "desc": "Hidden port", 
-                "hidden": false+                "hidden": true 
 +            }, 
 +            { 
 +                "port": 9999, 
 +                "difficulty": 20000, 
 +                "desc": "SSL connection", 
 +                "ssl": true
             }             }
         ],         ],
         "varDiff": {         "varDiff": {
-            "minDiff": 500+            "minDiff": 100
-            "maxDiff": 1000000+            "maxDiff": 100000000
-            "targetTime": 20+            "targetTime": 60
-            "retargetTime": 40,+            "retargetTime": 30,
             "variancePercent": 30,             "variancePercent": 30,
             "maxJump": 100             "maxJump": 100
-        },   +        }, 
 +        "paymentId":
 +            "addressSeparator": "+" 
 +        },
         "fixedDiff": {         "fixedDiff": {
             "enabled": true,             "enabled": true,
Line 254: Line 287:
         "slushMining": {         "slushMining": {
             "enabled": false,             "enabled": false,
-            "weight": 120,+            "weight": 300, 
 +            "blockTime": 60,
             "lastBlockCheckRate": 1             "lastBlockCheckRate": 1
-        }+         }
     },     },
  
     "payments": {     "payments": {
         "enabled": true,         "enabled": true,
-        "interval": 600+        "interval": 1800
-        "maxAddresses": 10+        "maxAddresses": 50
-        "mixin": 2+        "mixin": 5, 
-        "transferFee": 50000+        "priority": 0
-        "minPayment": 1000000000,+        "transferFee": 5000000, 
 +        "dynamicTransferFee": true, 
 +        "minerPayFee" : true
 +        "minPayment": 100000000, 
 +        "maxPayment": null,
         "maxTransactionAmount": 0,         "maxTransactionAmount": 0,
-        "denomination": 1000000+        "denomination": 10000000
     },     },
  
     "blockUnlocker": {     "blockUnlocker": {
         "enabled": true,         "enabled": true,
-        "interval": 175,+        "interval": 30,
         "depth": 20,         "depth": 20,
-        "poolFee": 0.5+        "poolFee": 0.8
-        "devDonation": 0.5+        "devDonation": 0.2
-        "coreDevDonation": 0.5, +        "networkFee": 0.0
-        "extraFeaturesDevDonation":0.0+
     },     },
  
     "api": {     "api": {
         "enabled": true,         "enabled": true,
-        "hashrateWindow": 300+        "hashrateWindow": 600
-        "updateInterval": 30,+        "updateInterval": 5, 
 +        "bindIp": "0.0.0.0",
         "port": 8117,         "port": 8117,
         "blocks": 30,         "blocks": 30,
         "payments": 30,         "payments": 30,
-        "password": "your_password"+        "password": "your_password"
 +        "ssl": false, 
 +        "sslPort": 8119, 
 +        "sslCert": "./cert.pem", 
 +        "sslKey": "./privkey.pem", 
 +        "sslCA": "./chain.pem", 
 +        "trustProxyIP": true
     },     },
  
Line 297: Line 341:
     "wallet": {     "wallet": {
         "host": "127.0.0.1",         "host": "127.0.0.1",
-        "port": 14007+        "port": 13008
     },     },
  
     "redis": {     "redis": {
         "host": "127.0.0.1",         "host": "127.0.0.1",
-        "port": 6379+        "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": "your@email.com",
 +        "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": {     "monitoring": {
         "daemon": {         "daemon": {
Line 316: Line 438:
     },     },
  
 +    "prices": {
 +        "source": "tradeogre",
 +        "currency": "USD"
 +    },
 +    
     "charts": {     "charts": {
         "pool": {         "pool": {
             "hashrate": {             "hashrate": {
 +                "enabled": true,
 +                "updateInterval": 60,
 +                "stepInterval": 1800,
 +                "maximumPeriod": 86400
 +            },
 +            "miners": {
                 "enabled": true,                 "enabled": true,
                 "updateInterval": 60,                 "updateInterval": 60,
Line 359: Line 492:
                 "enabled": true                 "enabled": true
             }             }
 +        },
 +        "blocks": {
 +            "enabled": true,
 +            "days": 30
         }         }
     }     }
 +}
     </code>     </code>
 ====Start the pool==== ====Start the pool====
Line 390: Line 528:
      - custom.css : for creating your own pool style/      - custom.css : for creating your own pool style/
      - custom.js  : for changing the functionality of your pool website/      - custom.js  : for changing the functionality of your pool website/
 +     - TODO: WHAT PAGE TO EDIT FOR DISCORD SUPPORT-POOL CHAT
  
 Then simply serve the files via nginx, Apache, Google Drive, or anything that can host static content. Then simply serve the files via nginx, Apache, Google Drive, or anything that can host static content.
  
 <WRAP center round box 100%> <WRAP center round box 100%>
-Congratulations You have now your own IRD Mining Pool Ready to Start+Congratulations You have now your own an IRD Mining Pool Ready to Start
 </WRAP> </WRAP>
  
-Guide compiled by PsychoSterope+Initial Guide compiled by PsychoSterope