※上記の広告は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













































.