さあ夏休みがやってまいります。
自由研究の課題、どうしようとお悩みのそこのあなた。
どうでしょう、この夏はブロックチェーンのノード構築に挑戦してみませんか。
必要なもの
- 自宅のインターネット光回線
- Linuxが動くコンピュータ
- (スーパーノードプログラムに参加するなら) 10,001XEM
手に入るもの
- Linuxの経験
- Dockerの経験
- NEM NIS1ノード構築の経験
- (スーパーノードプログラム参加報酬として)1日1ドル程度のXEM
未経験者にとってはハードルが高くて大変だと思います。が、そこは先輩方も通った道。頑張りましょう。
ポート開放
- 7890 … NIS1基本通信用 (http)
- 7778 … Websockets用 (http)
- 7891 … NIS1基本通信用 (必要ならhttps)
- 7779 … Websockets用 (必要ならhttps)
- 7880 … スーパーノードプログラム サーヴァント用
docker のインストールは以下の記事などを参考
https://qiita.com/curupo/items/d89990bf5e2ae371dd25
準備
nemユーザーを作成しsudoグループに追加
# adduser nem
New password: <適宜入力>
Retype new password: <再度入力>
⇒あとはリターンをしておく
# cat /etc/group | grep sudo
# usermod -aG sudo nem
# cat /etc/group | grep sudo
# exit
$ su - nem
⇒ログインできること
nemユーザーをdockerグループに追加
$ su -
# cat /etc/group | grep docker
# usermod -aG docker nem
# cat /etc/group | grep docker
# exit
$ exit
設定を反映させるため再度ログイン
$ su - nem
動作テスト
$ docker run hello-world
Hello from Docker!
⇒OK
nem-dockerで構築
$ ~/
$ git clone https://github.com/NemProject/nem-docker.git
$ cd ~/nem-docker
$ cp custom-configs/servant.config.properties.sample custom-configs/servant.config.properties
$ vi custom-configs/servant.config.properties
---
nem.host = <put vps ip address here>
servant.key = <put your NIS boot key here>
---
$ ./boot.sh
⇒とりあえず全てリターン
⇒途中いろいろとエラーがでる
とりあえずコメントアウトで回避します
$ vim Dockerfile
---
+#RUN sha=$(curl -L -s http://hugealice.nem.ninja:7890/transaction/get?hash=$(curl -L -s http://bob.nem.ninja/nis-0.6.101.tgz.sig | grep txId | sed -e 's/txId: //') | jq -r '.transaction.message.payload[10:74]') && \
+# echo "$sha nis-0.6.101.tgz" > /tmp/sum && \
+# sha256sum -c /tmp/sum
---
$ vim Dockerfile(自身の構築環境に合わせて適宜修正)
---
-RUN useradd --uid 1000 nem
+RUN useradd --uid 1002 nem
---
$ vm boot.sh
---
-chown -R 1000 nem
+sudo chown -R 1002 nem # なぜかroot権限でログファイルができるstderr出力対応。
+sudo chgrp -R 1002 nem # もっと良い方法があるかも。javaよくわからん
---
logファイルのパーミッション
$ ~/nem-docker/nem
$ sudo chown nem:nem nis-std*.log
再度起動
$ ./boot.sh
All done, here are the services running:
ncc STOPPED Not started
nis RUNNING pid 14, uptime 0:00:02
perms RUNNING pid 13, uptime 0:00:02
servant STOPPED Not started
⇒起動成功
動作確認
$ curl http://localhost:7890/node/info
$ curl http://localhost:7890/chain/height
スーパーノードプログラムに参加する場合はサーヴァントを起動
$ ./service.sh start servant
servant: started
停止
$ ./stop.sh
参考