How can I setup pushpool on my ubuntu dedi?
I have bitcoind up and running with latest blocks, what's next?
Bitcoin Stack Exchange is a question and answer site for Bitcoin crypto-currency enthusiasts. It only takes a minute to sign up.
Sign up to join this communityHow can I setup pushpool on my ubuntu dedi?
I have bitcoind up and running with latest blocks, what's next?
This guide will set up everything you need on a single machine.
Let's get started by setting up the environment:
sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install automake gcc
sudo apt-get install libevent-dev libmemcached-dev libcurl4-openssl-dev zlib1g-dev libjansson-dev curl memcached
Depending on your distro some of these may not be available (libjansson-dev for example is not available on Lucid), and you may have to download and compile the sources.
Pushpool requires a database to work so we have to install either SQLite3 or MySQL. MySQL probably is the better choice, but SQLite3 suffices to just test pushpool:
sudo apt-get install libsqlite3-dev sqlite3
To get MySQL you'd instead install libmysql++-dev
.
Next we download the pushpool source and extract it to /tmp/
:
cd /tmp/
curl -s http://yyz.us/bitcoin/pushpool-0.5.1.tar.gz | tar -xvz
cd pushpool-0.5.1
Now let's get on with it by configuring, compiling and installing it into /opt/pushpool:
./configure --prefix=/opt/pushpool/
make
sudo make install
cd /opt/pushpool/
At this point we can quickly check that everything worked:
$ sbin/pushpoold -E -F
[2013-01-04 16:00:40.682356] config file(server.json): No such file or directory
All we need to do now is to configure the pushpool server.
sudo cp /tmp/pushpool-0.5.1/example-cfg.json /opt/pushpool/server.json
sudo nano /opt/pushpool/server.json
Here's mine for example:
{
# network ports
"listen" : [
# binary protocol (default), port 8336
{ "port" : 8336 },
# HTTP JSON-RPC protocol, port 8337
{ "port" : 8337, "protocol" : "http-json" }
],
# database settings
"database" : {
"engine" : "sqlite3",
"name" : "/tmp/data.sqlite",
"stmt.pwdb" :
"SELECT password FROM pool_worker WHERE username = ?"
},
# cache settings
"memcached" : {
"servers" : [
{ "host" : "127.0.0.1", "port" : 11211 }
]
},
"pid" : "/tmp/pushpoold.pid",
# overrides local hostname detection
"forcehost" : "localhost.localdomain",
"log.requests" : "/tmp/request.log",
"log.shares" : "/tmp/shares.log",
# the server assumes longpolling (w/ SIGUSR1 called for each blk)
"longpoll.disable" : false,
# length of time to cache username/password credentials, in seconds
"auth.cred_cache.expire" : 75,
# RPC settings
"rpc.url" : "http://127.0.0.1:8332/",
"rpc.user" : "bitcoinrpc",
"rpc.pass" : "bitcoinpassword",
# rewrite returned 'target' to difficulty-1?
"rpc.target.rewrite" : true,
# allow clients to update the ntime field of their work
"roll.ntime.disable" : false
}
And finally we get to the database setup:
sqlite3 /tmp/data.sqlite "CREATE TABLE pool_worker (username VARCHAR(32), password VARCHAR(32))"
sqlite3 /tmp/data.sqlite "INSERT INTO pool_worker VALUES ('username', 'password');
At this point we have created the database and inserted a new user called username
and password password
. Running sbin/pushpoold -E -F
again will start the daemon.
Pointing your miner to http://username:password@127.0.0.1:8336/
should get you mining.
bitcoind
instance, as this is also used to create the initial work for the miners. You will then have to implement some way of calculating the share of the reward that each participant should get and then distribute the reward accordingly. This is the part you'll have to implement yourself.
– cdecker
Apr 17 '13 at 17:39