Skip to content

Configuration

Hüseyin Uslu edited this page Dec 17, 2016 · 68 revisions

Support & Issues

Do not create issue reports over our project page if you can't get it working. Please only use issues page for actual bugs & feature requests.

Introduction

This guide will help you get through configuring CoiniumServ server and getting it working. If you have still not installed it on your system, start by reading our getting started guide. This guide assumes you already completed the steps related to getting the project & compiling.

Configuration files

Once you got the project compiled, you have to first arrange configuration files.

Locating configuration files

Let's assume that you have downloaded CoiniumServ to

/home/user/CoiniumServ

Your config files will exist in one of the following locations based on the mode you compiled the project;

/home/user/CoiniumServ/bin/Debug/config
/home/user/CoiniumServ/bin/Release/config

Global configuration

Global configuration file hosts common settings (stack, website and logging). First we have copy config-example.json as config.json

cd /home/user/CoiniumServ/bin/Debug/config
cp config-example.json config.json

Then we have to open config.json with your favorite text editor (gedit, vim, pico etc..) and change it according to our needs.

As configuration files host their own documentation for all sections & parameters, it's pretty self explanatory.

Per-pool configuration

As CoiniumServ can host multiple pools together, you have to also create per-pool configuration files. You need to create per-pool configuration files in;

/home/user/CoiniumServ/bin/Debug/config/pools

By default, you'll see the following per-pool example files;

As CoiniumServ uses a very flexible configuration sub-system you have two different methods to configure pools.

Advanced per-pool configuration

You can use advanced-example.json as a starting point and configure every specific bits;

cd /home/user/CoiniumServ/bin/Debug/config/pools
cp advanced-example.json your-pool.json

advanced-example.json hosts every available configuration option and you can fine them based on your needs. Yet again per-pool configuration files also host their own documentation for all sections & parameters and it's pretty self explanatory.

Default per-pool configuration

While loading per-pool configuration files, CoiniumServ will merge them with the default.json if it does exist, basically allowing you to put your common settings and then only change the required parameters in your per-pool configuration files.

Configure common settings in default.json

Copy default-example.json as default.json and put in common settings for all your pools.

cd /home/user/CoiniumServ/bin/Debug/config/pools
cp default-example.json default.json

Create per-pool configuration files

Once we have default.json in-place, we can create per-pool configuration files based on example.json.

cd /home/user/CoiniumServ/bin/Debug/config/pools
cp example.json your-pool.json

This allow us easier configuration of multiple pools. As an example, we can configure the common stratum parameters in default.json which will apply to all per-pool configuration files;

"stratum": {
    "bind": "0.0.0.0",
    "diff": 16,
    "vardiff": {
        "minDiff": 8,
        "maxDiff": 512,
        "targetTime": 15,
        "retargetTime": 90,
        "variancePercent": 30
    }
}

Now we can simply setup a few more parameters in our per-pool configuration file;

"stratum": {
    "enabled": true,
    "port": 3333,
    "vardiff": {
        "enabled": true
    }
}

Which will be simply merged by as;

"stratum": {
    "enabled": true,
    "bind": "0.0.0.0",
    "port": 3333,
    "diff": 16,
    "vardiff": {
        "enabled": true,
        "minDiff": 8,
        "maxDiff": 512,
        "targetTime": 15,
        "retargetTime": 90,
        "variancePercent": 30
    }
}

Sample step-by-step pool configuration

Requirements
  • Coin daemon (find the coin's repo and build latest version from source)
  • For hybrid storage moge redis v2.6+ & mysql
  • For MPOS compatibility mode: MPOS & mysql
Setup coin daemon

Follow the build instructions for your coin daemon. Through out the guide we'll be using litecoin as our sample coin.

Grab the coin daemon sources & compile;

git clone https://github.com/litecoin-project/litecoin.git
cd litecoin\src
make -f makefile.unix USE_UPNP=0
strip litecoind

Create configuration file for the coin (litecoin.conf) in coin's data folder;

daemon=1
rpcuser=user
rpcpassword=password
rpcport=9333

By default it should be in these locations;

  • Windows, appdata/roaming/Litecoin/litecoin.conf
  • Linux, ~/.litecoin/litecoin.conf
  • MacOS, ~/Library/Application Support/Litecoin/litecoin.conf

Run the coin daemon & let it sync with network. For more information check this guide.

Setup coin config

Make sure a corresponding coin.json file exist in;

cd /home/user/CoiniumServ/bin/Debug/config/coins

Here is the example litecoin.json file;

{
    "name": "Litecoin",
    "symbol": "LTC",
    "algorithm": "scrypt",
    "blockExplorer": "http://block-explorer.com",
    "peerMagic": "fbc0b6db",
    "peerMagicTestnet": "fcc1b7dc"
}
Create per-pool configuration file

Create litecoin.json and edit required parameters;

cd /home/user/CoiniumServ/bin/Debug/config/pools
cp example.json litecoin.json
Coin section

Coin section should point to our coin configuration file;

"coin": "litecoin.json",
Daemon section

Configure daemon rpc connection settings;

"daemon": {
		"host": "127.0.0.1",
		"port": 9333,
		"username": "user",
		"password": "password"
	},
Wallet section

You have to create a central wallet address for your pool which mined coins will arrive and then paid to miners from.

litecoind getaccountaddres ""

Then you have to put the generated address in your per-pool configuration file;

 "wallet" : {
        "address":  "n3Mvrshbf4fMoHzWZkDVbhhx4BLZCcU9oY"
    },
Rewards section

Rewards section allows you to configure operational fees for the pool. Basically you can define an unlimited amount of recipients and percentage.

In the following example, myxWybbhUkGzGF7yaf2QVNx3hh3HWTya5t address will recieve %1 of the all coins mined by our pool as operational fee.

"rewards":  [
        {"myxWybbhUkGzGF7yaf2QVNx3hh3HWTya5t": 1} 
    ],

You can also setup a tiny percentage here to donate the CoiniumServ project automatically. For instructions check here.

Payment processor section

CoiniumServ implements it's own payment-processor though it's optional. If you are using mpos compatibility layer, you would like to disable payments and let MPOS handle it. Otherwise it's a good idea to enable payment-processor in order to pay the miners.

"payments": {
	"enabled": true,
    "interval": 60,
	"minimum": 0.01
},
Stratum server section

You have to configure the stratum service to let CoiniumServ listen for stratum-protocol based miners and assign a unique port for your all pools. You can also enable or disable variable-difficulty (vardiff) support here.

"stratum": {
		"enabled": true,
		"bind": "0.0.0.0",
		"port": 3333,
		"diff": 16,
        "vardiff": {
            "enabled": true,
            "minDiff": 8,
            "maxDiff": 512,
            "targetTime": 15,
            "retargetTime": 90,
            "variancePercent": 30
        }
},
Storage section

CoiniumServ supports multiple-storage layers; hybrid (redis+mysql), MPOS (mysql-only). You have to put in connection settings for the storage layer you selected here and enable it;

"storage": {
    "hybrid": {
        "enabled": false,
        "redis": {
            "host": "127.0.0.1",
            "port": 6379,
            "password": "",
            "databaseId": 0
        },
        "mysql": {
            "host": "127.0.0.1",
            "port": 3306,
            "user": "username",
            "password": "password",
            "database": "db-name"
        }
    },
    "mpos": {
        "enabled": false,
        "mysql": {
            "host": "127.0.0.1",
            "port": 3306,
            "user": "username",
            "password": "password",
            "database": "db-name"
        }
    }
},  

Note that per-pool configuration files host few more sections & settings which are already documented within the sample file itself.

Running the server

Once you have changed the settings for your needs, you are basically ready to run the server.

cd /home/user/CoiniumServ/bin/Debug/
./CoiniumServ

If your configuration files are all okay, the CoiniumServ should be running and start serving the miners. If any problems exist with your configuration file, it'll be complaining about them and require you to fix them.

Running in background

If you want to run CoiniumServ as service on Linux, which means it will be run in background and even you close terminal, use mono-service (from package mono-4.0-service) command:

mono-service CoiniumServ.exe
Troubleshooting

In case of any problems & errors, first make sure that your json configuration files are valid. If you still can't fix the problem, you can get support by methods listed here.

Donation

You are more then welcome to help the project by donating.

Clone this wiki locally