MonapartyのFederated Nodeをインストールする
MonapartyのFederated Nodeをインストールしてみたので手順を残しておきます。
特にハマるところもなく、基本的には以下Counterpartyのドキュメント通りですんなりインストール出来たのでこれと言って特筆する点はありませんが。。
環境はまっさらなUbuntu Server(16.04.3 LTS)です。
事前準備
システムアップデートと依存ライブラリのインストールを行います。 この辺のライブラリは元から入ってた気もしますが、実際どうだったかは忘れました。
sudo apt-get update && sudo apt-get upgrade
sudo apt-get -y install git curl coreutils
次にDockerをインストールします。
sudo -i curl -fsSL https://get.docker.com/ | sh curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose exit
インストール
ドキュメントはCounterpartyのものなので、リポジトリをMonapartyのものに変更します。
git clone https://github.com/monaparty/federatednode.git cd federatednode sudo ln -sf `pwd`/fednode.py /usr/local/bin/fednode
インストールする際には、希望する構成に合わせてCONFIGを変更します。
fednode install <CONFIG> <BRANCH>
CONFIGをbase
にした場合はcounterparty-server
とmonacoind
のみで、counterblock
にするとcounterblock
関連が追加されます。
counterwallet
なども含んだすべてのサービスをインストールする場合はfull
を選択します。
どうやらcounterblock
経由で諸々触るのがセオリーのようなので、CONFIGはcounterblock
でインストールしました。
fednode install counterblock develop
セキュリティの強化
Ubuntuの場合、セキュリティの設定を一発でやってくれるスクリプトが用意されています。
内容はnospoof
、unattended-upgrades
、sysctl
、fail2ban
、psad
、chkrootkit
、rkhunter
、logwatch
、apparmor
、auditd
、iwatch
などなどをまとめて設定できます。
詳細はここ。
cd extras/host_security
sudo ./run.py
管理
サービスの状態確認
インストールが完了すると自動的に起動するのでps
コマンドで各サービスの状態を確認します。
StateがUpになっているのが分かります。
fednode ps Name Command State Ports ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ federatednode_counterblock-testnet_1 start.sh Up 0.0.0.0:14100->14100/tcp, 0.0.0.0:14101->14101/tcp, 0.0.0.0:14102->14102/tcp, 4100/tcp, 4101/tcp, 4102/tcp federatednode_counterblock_1 start.sh Up 14100/tcp, 14101/tcp, 14102/tcp, 0.0.0.0:4100->4100/tcp, 4101/tcp, 4102/tcp federatednode_counterparty-testnet_1 start.sh Up 0.0.0.0:14000->14000/tcp, 4000/tcp federatednode_counterparty_1 start.sh Up 14000/tcp, 0.0.0.0:4000->4000/tcp federatednode_monacoin-testnet_1 start.sh Up 0.0.0.0:19402->19402/tcp, 19403/tcp, 9401/tcp, 9402/tcp federatednode_monacoin_1 start.sh Up 19402/tcp, 19403/tcp, 9401/tcp, 0.0.0.0:9402->9402/tcp federatednode_mongodb_1 docker-entrypoint.sh mongod Up 127.0.0.1:27017->27017/tcp federatednode_redis_1 docker-entrypoint.sh redis ... Up 6379/tcp
データの保存場所
各データは以下にfederatednode_bitcoin-data
やfederatednode_counterparty-data
などのディレクトリがあり、そこに保存されていました。
/var/lib/docker/volumes
ログの確認
tail
コマンドやlogs
コマンドで各サービスのログを確認出来ます。
サービスを指定しなければ、すべてのサービスのログが流れてきます。
fednode tail <service> fednode logs <service>
monacoinのログを確認するには以下のようにサービスを指定します。
fednode tail monacoin Attaching to federatednode_monacoin_1 monacoin_1 | 2018-01-17 12:27:44 UpdateTip: new best=9df4d83ebc67172601b543fdef232b2818289f216215876f5494fac0c5a1e753 height=3053 version=0x00000002 log2_work=33.168825 tx=3060 date='2014-01-01 00:46:37' progress=0.000617 cache=0.6MiB(3058tx)
コンテナの起動、停止
confファイルを更新した場合など、サービスの再起動が必要になります。 サービス名を指定しなければ全サービスに対して実行します。
fednode stop <service> fednode start <service> fednode restart <service>
シェルコマンドの実行
exec
コマンドで各サービスのコマンドを実行出来ます。
fednode exec <service> <CMD>
monacoin-cli
を実行するには以下のようにします。
fednode exec monacoin monacoin-cli getinfo { "version": 130202, "protocolversion": 70015, "walletversion": 130000, "balance": 0.00000000, "blocks": 8328, "timeoffset": 0, "connections": 2, "proxy": "", "difficulty": 1.690091809366619, "testnet": false, "keypoololdest": 1516190275, "keypoolsize": 100, "paytxfee": 0.00000000, "relayfee": 0.00100000, "errors": "Upgrade to Monacoin 0.14.2 https://monacoin.org/" }
ちなみに各コンテナのシェルに入るにはshell
コマンドで入り、exit
で抜けます。
fednode shell <service>
APIの実行
同期が終わったらCounterblock APIも試してみます。
curl -s -X POST --data '{"jsonrpc":"2.0","id":1,"method":"get_chain_block_height"}' http://localhost:4100 {"result": 1222864, "id": 1, "jsonrpc": "2.0"}
とりあえず問題なく動きました。
次はCounterblockのカスタムモジュールについて色々と触ってみます。
一応ゴールとしてはブロックエクスプローラ的なものでも作って公開したいと思っているんですが、分からない事が多すぎて到達出来るかは非常に怪しい感じです。。
soon...