※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

このページはgikopool様のご厚意により転載させて頂いてます。
転載元は一番最後に記載してあります。

プールの立て方


gikopoolを設置した記録を元にして、オープンソースのプール管理ソフトMPOSを使った、モナーコイン採掘プールの立て方を具体的に記録します。
https://github.com/MPOS/php-mpos/wiki/Quick-Start-Guide
の日本語版に近い内容ですが、いくつか補足を加えています。
セットアップすべきソフトは次の3つです。
  • monacoind
  • stratum mining
  • MPOS
monacoindはモナーコインのクライアントソフトです。使い方の説明はコチラにもあります。
stratum miningは、プールの本体です。これ自身はコマンドラインのサーバです。
MPOSは、stratum mining をwebベースで管理しやすくしてくれるフロントエンドです。

0. 前提知識・必要環境


大前提として、unixの基本的な知識は必要です。
とはいえ高度な技術が必要というわけでもないので、
必要に応じて検索しながらやり方を確認できれば十分です。

プールには専用のサーバを用意した方が良いでしょう。
gikopoolでは、さくらインターネットのVPSサーバをレンタルして使っています。
一般公開の際にはセキュリティに十分注意を払ってください。
はじめはローカルの仮想環境をvmware playerなどで作って、
そこで色々と実験を行うことを推奨します。

以下の説明では、OSはUbuntu Server 12.04 LTS を想定します。
人気のディストリビューションで、ネット上にも情報が多いです。
gikopoolもこのOSを使っています。

1. 開発環境の構築


Ubuntuのインストールができたら、まずはサーバをアップデートしておきましょう。
sudo apt-get update
sudo apt-get dist-upgrade
続いて、開発環境・ライブラリ類をインストールします。
今後必要なソフトはgithub上に公開されているので、gitコマンドを使えるようにしておくと大変便利です。
sudo apt-get install git
sudo apt-get install build-essential libboost-all-dev libcurl4-openssl-dev libdb5.1-dev libdb5.1++-dev

2. monacoind のセットアップ


まずはgithubからmonacoindを落としてきます。
cd ~
git clone git://github.com/monacoinproject/monacoin.git
次にコンパイルしましょう。
cd ~/monacoin/src
# コンパイル
make -f makefile.unix USE_UPNP=-
# 実行ファイル置き場にコピー
sudo cp monacoind /usr/bin
monacoindは、設定ファイル
~/.monacoin/monacoin.conf
を読みに行きます。なければ作成しましょう。
monacoin.conf の設定例は次のような感じです。
server=1
rpcallowip=localhost
rpcuser= rpcuser
rpcpassword= rpcpass
斜体の部分は適宜変更して下さい。
ユーザ名とパスワードはあとで使いますが、ファイルに書き込んでしまえば常に覚えておく必要はないので、
適当に推測しづらいものを入れておきましょう。

では、いよいよmonacoindを起動してみます。
monacoind -daemon
うまくいけば、Monacoin server starting とメッセージが出るはずです。
次のようにコマンドを打って、monacoindの情報を確認しましょう。
monacoind getinfo
以下のような出力があればOKです。
"version" : 80601,
"protocolversion" : 70002,
"walletversion" : 60000,
"balance" : 0.00000000,
"blocks" : 7199,
"timeoffset" : 0,
"connections" : 1,
"proxy" : "",
"difficulty" : 0.42252295,
"testnet" : false,
"keypoololdest" : 1392509976,
"keypoolsize" : 101,
"paytxfee" : 0.00000000,
"mininput" : 0.00001000,
"errors" : ""
以上でmonacoindのセットアップは終わりです。

ちなみに、monacoindの同期が終わらないうちに採掘を始めようとするとエラーが出ます。
上の情報で"blocks"の値が現在のブロック数になるまでしばらく待ちましょう。
現在のブロック数は公式のクローラで見ることができます。
http://monacoin.org/crawler/block_crawler.php
ネットワークの状況にもよりますが、同期には数時間かかることもあります。

monacoind の使用するポートは2つです。デフォルトでは次のようになっています。
9401: P2P接続のポート
19402: rpc接続のポート
重要なので覚えておきましょう。

2.1 monacoind のテスト


慎重に行くならば、ここでmonacoind が正しく動いているかテストしてみましょう。
monacoindが起動していないなら、
monacoind -daemon
で起動させてください。

手持ちの採掘ツール(ここではcpuminerを例に取ります)で、monacoindに接続できるか実験してみましょう。
cpuminerの実行ファイル名をminerdとしたとき、
./minerd -a scrypt -o サーバのIPアドレス:19402 -u rpcuser -p rpcpass
を実行してみましょう。
rpcuserとrpcpassはmonacoin.confで設定したものです。
また、monacoindの動いているのと別のサーバから接続するときは、
monacoin.conf でそのIPを許可する必要があります。
テストなので、
rpcallowip=localhost
rpcallowip=*
としても大丈夫です。

接続が成功してハッシュレートが表示されればOKです!
エラーが出る際は、monacoindの同期を待つとうまくいくこともあります。

3. stratum-mining のセットアップ


まずは必要なライブラリ類をインストールします。
cd ~
sudo apt-get install python-twisted python-mysqldb python-dev python-setuptools python-memcache python-simplejson
sudo easy_install -U distribute
つぎにstratum mining他、必要なパッケージをgithubから入手します。
これらのソフトをインストールします。
cd stratum-mining
git submodule init
git submodule update
cd externals/litecoin_scrypt
sudo python setup.py install
cd ~/stratum-mining/externals/stratum
sudo python setup.py install
続いてstratum mining の設定です。
設定ファイルは、~/stratum-mining/conf/config.py なのですが、
最初は存在しないのでテンプレートのconfing_sample.pyをコピーしてきます。
cd ~
cp stratum-mining/conf/config_sample.py stratum-mining/conf/config.py
これを適切に編集しましょう。
vi stratum-mining/conf/config.py
(エディタはviでもemacsでもnanoでもかまいません。)
編集すべき点は次の通りです。
CENTRAL_WALLET = ' Monacoin_Address '
[...]
COINDAEMON_TRUSTED_HOST = 'localhost'
COINDAEMON_TRUSTED_PORT = 19402
COINDAEMON_TRUSTED_USER = 'rpcuser'
COINDAEMON_TRUSTED_PASSWORD = ' rpcpassword '
COINDAEMON_ALGO = 'scrypt'
COINDAEMON_Reward = 'POW'
COINDAEMON_SHA256_TX = 'no
[...]
HOSTNAME = ' yourservername '
[...]
DATABASE_DRIVER = 'mysql'
DB_MYSQL_HOST = 'localhost'
DB_MYSQL_DBNAME = 'mpos'
DB_MYSQL_USER = ' root '
DB_MYSQL_PASS = ' root '
[...]
POOL_TARGET = 16
[...]
SOLUTION_BLOCK_HASH = True
斜体部分は自分の環境に合わせて変えてください。
CENTRAL_WALLETには、サーバ上のmonacoindのウォレットアドレスを入力します。
ウォレットアドレスは次のコマンドで調べられます。
monacoind getaccountaddress ""
rpcuser, rpcpasswordは、monacoin.confで設定した値に書き換えます。
下線部のmysql のルートユーザパスワードも、適切に設定して下さい。
(プール公開時はroot以外のユーザにするのが無難です)

最後に、私が試したバージョンではstratumにちょっとしたバグがあり、
修正する必要がありました。ファイル
/usr/local/lib/python2.7/dist-packages/stratum-0.2.13-py2.7.egg/stratum/websocket_transport.py
をエディタで開き、
from autobahn.websocket import
の行を
from autobahn.twisted.websocket import
と書き換える必要があります。
このバグは、pythonのライブラリのバージョンアップで起きてしまうようです。
参考: https://github.com/Crypto-Expert/stratum-mining/issues/90

これでstratum miningの設定ができました!
いよいよ起動、と言いたいところですが、まだデータベースを作っていません。
データベースにはMPOS付属のテンプレートを書き込む必要があるので、先にMPOSをインストールします。

4. MPOSのセットアップ


MPOSはwebベースのphpアプリなので、まずはwebサーバとphpモジュールをインストールします。
apt-get install apache2 php5 libapache2-mod-php5
また、mysqlのクライアントとサーバが必要なのでインストールします。
apt-get install mysql-common
その他の必要なライブラリ類をインストールし、apacheをリロードします。
sudo apt-get install memcached php5-memcached php5-mysqlnd php5-curl php5-json libapache2-mod-php5
sudo apache2ctl -k stop; sleep 2; sudo apache2ctl -k start
さらに、MPOSはメールを送信するので、メールサーバを立てる必要があります。
例えばpostfixを入れるなら、
sudo apt-get install postfix
とします。メールサーバの設定は長大になってしまうので、ここでは割愛します。

では、MPOSをダウンロードしましょう。
ここではwebのルートである/var/www以下に設置することにします。
cd /var/www
sudo git clone git://github.com/TheSerapher/php-mpos.git MPOS
cd MPOS
sudo git checkout next
ダウンロードしたファイルの中に、MPOSで利用するデータベースのひな形が入っているので、
それを利用して新しくデータベースを作ります。
# DB作成
sudo mysql -p -e "create database mpos"
# structure のインポート
sudo mysql -p mpos < sql/000_base_structure.sql
次にMPOS の設定です。
まずはファイルに適切な権限を与えましょう。
sudo chown www-data public/templates/compile public/templates/cache logs
Ubuntuの場合はこれで良いですが、一般に他のOSでは設定方法が異なるので注意してください。
要するにサーバがcompileとcacheフォルダを書き換えられるようにすればOKです。

次に設定ファイルの編集です。
テンプレートをコピーして必要な部分を書き換えます。
sudo cp public/include/config/global.inc.dist.php public/include/config/global.inc.php
vi public/include/config/global.inc.php
要点は以下のとおりです。
$config['db']['host'] = 'localhost';
$config['db']['user'] = ' root' ;
$config['db']['pass'] = ' root' ;
$config['db']['port'] = 3306;
$config['db']['name'] = 'mpos';

[...]

$config['wallet']['type'] = 'http';
$config['wallet']['host'] = 'localhost:19402';
$config['wallet']['username'] = ' rpcuser' ;
$config['wallet']['password'] = ' rpcpassword ;

斜体の部分はあなたの環境に合わせて書き換えましょう。

以上で最低限の設定が完了しました!
さっそく動作テストしてみましょう。

まずはstratum-miningの起動をしましょう。
cd ~/stratum-mining
twistd -ny launcher.tac
つぎにブラウザで次のアドレスにアクセスします。
http://サーバのIPアドレス/MPOS/public
見慣れたマイニングプールの画面が表示されましたか?
エラーが出ていなければ成功です!

4.1. stratum mining と MPOSのテスト


まずはMPOSのインターフェイスからアカウントを作りましょう。
次にログインしてワーカーを作ります。
例によって採掘ソフトをminerdとした時、
./minerd -a scrypt -o stratum+tcp://localhost:3333 -u user.worker -p workerpass
とやって試しに採掘してみてください。
ハッシュレートが適切に表示されれば成功です!
最後に、MPOSの定期実行ジョブを設定しておきましょう。
/var/www/MPOS/cronjobs/run-crons.sh
を、適当な間隔で実行するようにします。
5分おきに実行するならば、
crontab -u root -e
/5 * * * * /var/www/MPOS/cronjobs/run-crons.sh
といった感じです。

5. セキュリティについて


採掘プールを一般公開する場合は、セキュリティに十分注意を払う必要があります。
すべてを書ききることはできませんが、いくつかのヒントだけ書いておきます

  • MPOS専用のDBユーザを作り、rootは使わない
  • バーチャルホストを新しく作り、/var/www/MPOS/public をルートにする
  • ログの監視。最低限logwatchくらいは入れましょう。
  • sshでログインするときは設定に注意する
 →rootでログイン出来ないようにしたり、ポート番号を変える
 →鍵交換方式でログインをする
  • ファイアウォールを構築する
 →ufwがモダンで便利です。
  開けるべきポートは、80(http)と3333(stratum mining)です。
  monacoindのP2Pポート、9401は微妙な所です。
  開けないほうが無難ですが、P2P接続ノード数が減って、orphanブロックが増える?
  また、リモートで繋ぐならsshのポートも開けましょう。
  それ以外の不要なポートは塞いでおきましょう。

6. TIPS


stratum miningもMPOSも活発に開発されているので、最新版がバグっててうまく動かないことがあります。
(たいていgithubのissuesで騒いでます)
そんな時は、安全そうな過去バージョンのcommit番号を
git log
で調べて、
git reset --hard xxxxxxx
(xxxxxxx=commit番号)でバージョンを巻き戻しましょう
MPOSで最初に作ったユーザが管理者になります。管理者には専用メニューが表示されます
管理者メニューでテンプレートの編集ができますが、phpをいじることになるので、あまり変なことをするとadmin panelすら表示されなくなって詰みます。そうなったら手動でDBを書き換えるしかないです。(1度やったことある)

転載元http://www59.atwiki.jp/gikopool/pages/19.html
協力:gikopoool