Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Wrote up installation instructions #3

Open
ghost opened this issue Sep 27, 2015 · 3 comments
Open

Wrote up installation instructions #3

ghost opened this issue Sep 27, 2015 · 3 comments

Comments

@ghost
Copy link

ghost commented Sep 27, 2015

Hi,

I've documented what it took for me to get eloipool installed & running at boot- would like to share with the project should they approve of its content:

To Install:

  1. Add your ssh key to github according to these instructions here:
    https://help.github.com/articles/generating-ssh-keys/

  2. Install dependencies:

2a) Use your OS' package manager, install python 3 & screen with this command:
sudo aptitude -y update && sudo aptitude install -y python3-all-dev screen

2b) Clone the 'jgarzik/pythonbitcoinrpc' git repository into a dir in your home dir, using this command:
git clone git@github.com:jgarzik/python-bitcoinrpc.git

2b1) change to the newly created directory with the following command:
cd python-bitcoinrpc

2b2) Install pythonbitcoinrpc using the following command:
python setup.py install

2c) Clone the 'python-base58' git repository into a dir in your home dir, using this command:
git clone https://gitlab.com/bitcoin/python-base58.git

2c1) Install python-base58 using the following command:
python base58.py install

  1. Clone the eloipool git repository locally somewhere in your home directory with this command:
    git clone git@github.com:luke-jr/eloipool.git

  2. Install bitcoind with these commands:
    sudo aptitude install -y python-software-properties
    sudo add-apt-repository ppa:bitcoin/bitcoin
    sudo aptitude update && sudo aptitude install -y bitcoind

  3. Configure bitcoind:
    5a) Open or create the file ~/.bitcoin/bitcoin.conf & put the following in it, substituting the xxxx's with your own values, which don't really matter & can be forgotten:

server=1
rpcuser=xxxx
rpcpassword=xxxx
rpcport=8332
rpcallowip=127.0.0.1
rpcthreads=100
maxconnections=1000
logtimestamps=1
  1. Copy config.py.example to config.py, and make the following several edits
    6a) ServerName to something unique
    6b) Change this:
ShareTarget = 0x00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff

to this:

ShareTarget = 0x000000000fffffffffffffffffffffffffffffffffffffffffffffffffffffff

6c) Comment out CoinbaserCmd so it looks like this:

#CoinbaserCmd = 'echo -e "1\\n$((%d / 100))\\n1579aXhdwvKZEMrAKoCZhzGuqMa8EonuXU"'

6d) Change the TemplateSources section to look like the following, adjusting for your own directory paths & username (without the <>'s):

TemplateSources = (
    {
        'name': 'primary',
        'uri': 'http://<rpcusername:rpcpassword@localhost:8332',
        'priority': 0,
        'weight': 1,
    },
#   {
#       'name': 'secondary',
#       'uri': 'http://user:pass@localhost:18332',
#       'priority': 1,
#       'weight': 1,
#   },
)

6e) Empty TemplateChecks section so it looks like this:

TemplateChecks = (
 )

6f) Delete the whole BlockSubmissions section

6g) Change the following line to look like the one below:

DelayLogForUpstream = False
DelayLogForUpstream = True

6h) Change the following line to look like the one below:

UpstreamBitcoindNode = ('127.0.0.1', 18333)  # testnet
UpstreamBitcoindNode = ('127.0.0.1', 8333)

6i) Change the following line to look like the one below:

UpstreamNetworkId = b'\xFA\xBF\xB5\xDA'  # testnet
UpstreamNetworkId = b'\xF9\xBE\xB4\xD9'

6j) Change the following line to look like the one below:

POT = 2
#POT = 2

6k) Change the following code to look like the one below:

ShareLogging = (
    {
        'type': 'logfile',
        'filename': 'share-logfile',
        'format': "{time} {Q(remoteHost)} {username} {YN(not(rejectReason))} {dash(YN(upstreamResult))} {dash(rejectReason)} {solution}\n",
    },
    {
        'type': 'sql',
        'engine': 'postgres',
        'dbopts': {
            'host': 'localhost',
            'database': 'pooldb',
            'user': 'eloipool',
            'password': 'somethingsecret',
        },
        'statement': "insert into shares (rem_host, username, our_result, upstream_result, reason, solution) values ({Q(remoteHost)}, {username}, {YN(not(rejectReason))}, {YN(upstreamResult)}, {rejectReason}, decode({solution}, 'hex'))",
    },
    {
        'type': 'sql',
        'engine': 'mysql',
        'dbopts': {
            'host': 'localhost',
            'db': 'pooldb',
            'user': 'eloipool',
            'password': 'somethingsecret',
        },
        'statement': "insert into shares (rem_host, username, our_result, upstream_result, reason, solution) values ({Q(remoteHost)}, {username}, {YN(not(rejectReason))}, {YN(upstreamResult)}, {rejectReason}, unhex({solution}))",
    },
    {
        'type': 'sql',
        'engine': 'sqlite',
        'dbopts': {
            'database': 'share.db',
        },
        'statement': "insert into shares (remoteHost, username, rejectReason, upstreamResult, solution) values ({remoteHost}, {username}, {rejectReason}, {upstreamResult}, {solution})",
    },
)
ShareLogging = (
        {
                'type': 'logfile',
                'filename': 'share-logfile',
                'format': "{time} {Q(remoteHost)} {username} {YN(not(rejectReason))} {dash(YN(upstreamResult))} {dash(rejectReason)} {solution}\n",
        },
)

6l) Change the following line to look like the one below:

LogFile = {
         'filename': 'filename.log',
LogFile = {
        'filename': 'eloipool.log',
  1. Create startup scripts so everything we need is up after a reboot

7a) In your home directory, create a folder just for your scripts with this command:
mkdir scripts

7b) Create a script to start bitcoind
7b1) Create the file ~/scripts/bitcoindstart.sh, & put the following in it, adjusting for your own directory paths & username (without the <>'s):

#!/bin/sh

sleep 30

screen -dm su <username> -c PYTHONPATH=/home/<username>/<path to bitcoinrpc>:/home/<username>/<path to python-base58> \
     nohup ./eloipool.py 2>&1 >/dev/null &

7b2) Make the script belong to the user, & be executable with the following command, adjusting for your own directory paths & username (without the <>'s):
sudo chown : ~/scripts/bitcoindstart.sh
sudo chmod a+x ~/scripts/bitcoindstart.sh

  1. Create a script to start eloipool
    8a) Create the file ~//poolstart.sh in the eloipool root directory, which was created during the git checkout, & put the following in it, adjusting for your own directory paths & username (without the <>'s):
#!/bin/sh

sleep 30

screen -dm su <username> -c PYTHONPATH=/home/admin/apps/python-bitcoinrpc:/home/admin/apps/python-base58 \
     nohup ./eloipool.py 2>&1 >/dev/null &

Make the script belong to the user, & be executable with the following command, adjusting for your own directory paths & username (without the <>'s):

sudo chown <username>:<usergroup> ~~/<eloipooldirectory>/poolstart.sh
sudo chmod a+x ~~/<eloipooldirectory>/poolstart.sh   
  1. Make the startup scripts start at boot

9a) To make bitcoind start at boot, add the following to /etc/rc.local, adjusting for your own directory paths & username (without the <>'s):

su admin -c '/home/<username>/scripts/bitcoindstart.sh'

9b) To make eloipool start at boot, edit cron with the following command:
crontab -e

9b1) Enter the following to the bottom of the file, adjusting for your own directory paths & username (without the <>'s):

@reboot /home/<username>/<path to eloipool>/poolstart.sh
  1. Reboot & all should be well...
@luke-jr
Copy link
Owner

luke-jr commented Sep 27, 2015

Can you add this to README (right before the section on Merged Mining) and submit it as a pull request? Thanks

@ghost
Copy link
Author

ghost commented Sep 27, 2015

It's not quite right yet- not ready for production, as I missed some steps, editing now.

Aside from that, I don't know how to do what you're asking of me- I only know how to clone a git package- sorry, I'll need ELI5 instructions for that.

@luke-jr
Copy link
Owner

luke-jr commented Sep 27, 2015

Open https://github.com/luke-jr/eloipool/blob/master/README and to the right of the History button there should be an Edit button.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant