NEMのノード(スーパーノード可)を建ててみよう Ubuntu 18.04
はじめに
NEMでハーベストするためにはNEMのフルノードに接続することが必要ですが、
ノードによって定員が定められており、なかなか空いてないことがあります。
そこで今回は自分でNEMのノードを建ててみることにします。
また、この手順で定期的に報酬が受けられるNEMのスーパーノードを建てることもできます。
手順
ドメインの準備
ドメインの取得
今回はipv4アドレスでも構いません。必要な場合のみドメインを取得してください。
サーバーの準備
サーバーの用意
Linuxサーバーを立ち上げます。
今回はドイツにあるCONTABOの「VPS L SSD」、OSは「Ubuntu 18.04」を選びました。
メールでroot/passwordが送られてくるのでそれでログインしてください。
8コア、RAM 30GB、SSD 800GB、帯域600Mbit/s、帯域利用無制限、DDoS保護で月15ユーロはVPSでは格安の部類だと思います。
サーバの初期設定
root/passwordで入り、初期設定を行います。
タイムゾーン、NTPの設定
サーバーを日本時間にします。
timedatectl set-timezone Asia/Tokyo
NTPサーバーを設定します。今回はサーバーがドイツにあるので、ドイツのNTPサーバーを使う方が良いでしょう。
sed -i 's/#NTP=/NTP=2.de.pool.ntp.org/g' /etc/systemd/timesyncd.conf
スワップファイルの設定
CONTABOの場合、既に2GBのスワップが最初から設定されていますが、増やしたい場合は一度既存のスワップファイルを消して作り直しましょう。
現在の割り当てを消去して10GB割り当てます。
swapoff /swapfile && sudo rm /swapfile
fallocate -l 10G /swapfile && sudo chmod 600 /swapfile && sudo mkswap /swapfile && sudo swapon /swapfile
ファイアウォールの設定
SSH制限
SSHポートは攻撃を受けやすいので、ファイアーウォールで接続制限しましょう。
接続元は自宅の固定IPや、踏み台サーバーの固定IPが良いでしょう。
ufw allow from xxx.xxx.xxx.xxx to any port 22
ポート番号を変えてさらに接続制限するのも有効です。
vi /etc/ssh/sshd_config
を追記。 (yyyyyは任意のポート番号)
Port yyyyy
その場合はファイアーウォールも忘れずに設定しましょう。
ufw allow from xxx.xxx.xxx.xxx to any port yyyyy
ポート解放
今回はTCP 7778、7880、7890を外部に公開する必要があります。
ufw allow 7778/tcp
ufw allow 7880/tcp
ufw allow 7890/tcp
ファイアウォールの起動
ファイアウォールを起動します。
sudo ufw enable
Ubuntuのアップデート
Ubuntuをアップデートして最新版にします。
sudo apt update
sudo apt -y dist-upgrade
ノード用ユーザーの作成
nemというユーザーを作成します。
adduser nem
2回パスワードを聞かれるので、入力したら後はエンターキーで省略しましょう。
ユーザーnemにsudoを与えます
gpasswd -a nem sudo
Java8のインストール
Java8をインストールします。
apt install -y openjdk-8-jre
バージョン確認
java -version
unzipのインストール
apt install unzip
DNSの設定
ドメインを指定しない場合は必要ありません。
サーバーの設定
ユーザーをnemに変更します。
su - nem
NISとservantのダウンロードと展開
NEMのサーバーからnisとservantをダウンロードします。
※2019/12/08現在ではnis-0.6.97とservant_0_0_4が最新版となります。
wget http://bob.nem.ninja/nis-0.6.97.tgz
wget http://bob.nem.ninja/servant_0_0_4.zip
それぞれ展開します
tar xzf nis-0.6.97.tgz
unzip -q servant_0_0_4.zip
それらをnemServerという1つのフォルダにまとめます
mv servant package
mv package nemServer
chmod -R g-w nemServer
設定ファイルの設定
ここでは、NEMのnano walletの情報を使用します。
事前にデリゲートアカウントを有効化してください。
NISサーバの設定
cd nemServer/nis
念のため設定ファイルのパックアップをとっておきます
cp -p config.properties config.properties.org
vi config.propaties
46~47行目あたりと77行目あたり
#nis.bootKey = #0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
#nis.bootName = foobar
↓
nis.bootKey = <委任秘密鍵>
nis.bootName = <任意の名前>
nis.unlockedLimit = 4
↓
nis.unlockedLimit = 30
NISサーバーにメモリを3GB割り当てる予定なので、ハーベスト接続人数を30人に増やしています。
NISサーバの起動設定
cd ~/nemServer
vi nix.runNis.sh
最近はサーバーの最小標準構成が4GB以上が推奨されているようですので、とりあえず3GBのメモリをNISサーバーに割り当てます。
また、Java8の最適化のため「G1GC」オプションを追加しています。
#!/bin/bash
cd nis
java -Xms3G -Xmx3G -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -cp ".:./*:../libs/*" org.nem.deploy.CommonStarter
cd -
割り当てメモリを増やせば前述のハーベスト接続人数も更に増やすことができますし、動作も安定します。
NISサーバーの仮起動
cd ~/nemServer
NISサーバーの仮起動を行います
nohup ./nix.runNis.sh < /dev/null &
tail -f nohup.out
で確認できます
Ctrl+Cで終了
Servantサーバの設定
cd ~/nemServer/servant
念のため設定ファイルのパックアップをとっておきます
cp -p config.properties config.properties.org
vi config.properties
nem.host = <put vps ip address here>
↓
nem.host = <サーバーのIPもしくはドメイン名を入れます>
servant.key = <put your NIS boot key here>
↓
servant.key = <委任秘密鍵>
Servantサーバーの仮起動
cd ~/nemServer/servant
実行権限を付けておきます
chmod u+x startservant.sh
Servantサーバーの仮起動を行います
nohup ./startservant.sh < /dev/null &
tail -f nohup.out
で確認できます
Ctrl+Cで終了
NISサーバーおよびServantサーバーの停止
sudo pkill -SIGTERM -f org.nem
NISサーバーのデータベースダウンロード
データベースのダウンロード
初回起動時間短縮のために、予め用意されたデータベースをダウンロードして解凍しておきます。
cd ~/nemServer
wget http://bob.nem.ninja/nis5_mainnet.h2-2293k.db.zip
unzip -q nis5_mainnet.h2-2293k.db.zip
一度NISサーバーの仮起動をしたときにできたファイルを消去します
rm ~/nem/nis/data/*
解凍したデータを移動します
mv nis5_mainnet.h2.db ~/nem/nis/data/
自動起動の設定
NISサーバーとServantサーバーが自動起動するように設定します。
NISサーバーの自動起動
sudo vi /etc/systemd/system/nem-nis.service
[Unit]
Description = NEM NIS Server
After = network.target
[Service]
WorkingDirectory = /home/nem/nemServer
ExecStart = /home/nem/nemServer/nix.runNis.sh
Restart = always
Type = simple
User = nem
Group = nem
LimitNOFILE=100000
[Install]
WantedBy = multi-user.target
Servantサーバーの自動起動
sudo vi /etc/systemd/system/nem-servant.service
[Unit]
Description = NEM Servant program
After = network.target nem-nis.target
[Service]
WorkingDirectory = /home/nem/nemServer/servant
ExecStart = /home/nem/nemServer/servant/startservant.sh
Restart = always
Type = simple
User = nem
Group = nem
LimitNOFILE=100000
[Install]
WantedBy = multi-user.target
systendへの登録と起動
NISサーバーとServantサーバーをsystemdに登録します
sudo systemctl daemon-reload
sudo systemctl enable nem-nis.service
sudo systemctl enable nem-servant.service
NISサーバーとServantサーバー起動します
sudo systemctl start nem-nis.service
sudo systemctl start nem-servant.service
動作確認
NISサーバ動作確認
http://xxx.xxx.xxx.xxx:7890/node/extended-info (しばらく"Service Unavailable"エラー発生)で委任公開鍵やNISバージョン表示され
http://xxx.xxx.xxx.xxx:7890/chain/height にてブロック高が表示されれば、NISサーバーは稼働しています。
Servantサーバ動作確認
http://xxx.xxx.xxx.xxx:7880/nr/metaData にて 委任公開鍵やServantのバージョンが表示されれば、稼働しています。
スーパーノードとして登録
スーパーノード登録方法
アカウントに残高が300万XEM以上あればスーパーノードして登録でき、スーパーノード報酬が貰えますが、
事前に登録が必要です。
NEMのNano Walletから専用アカウントにメッセージを送りましょう。
宛先に NAFUND-BUKIOS-TMD4BN-XL7ZFE-735QHN-7A3FBS-6CMY
と入力し、メッセージに
enroll (nemServer/servant/config.propertieのIPアドレスもしくはドメイン名) (nemServer/nis/config.propertieの任意の名前) (委任公開鍵)
と入力し、送信しましょう。
ほどなくNem Node Rewardsに登録され、状況が確認できます。
間違えてしまった場合、NEM FORUMに報告して訂正してもらう必要があります。
おわりに
以上がNEMノードおよびスーパーノードの建て方となります。
NEMも一時期に比べて入手しやすくなったので、定期的に報酬が貰えるスーパーノードを建てるチャンスかもしれません。
しかしながら、自身や利用者のためにもハッキングから防ぐためにセキュリティには細心の注意を払うことも必要です。
また、NEMのアカウントはTREZORなどのハードウェアウォレットを使用することもお勧めします。
参考サイト
みなりん*のブログ - NEM スーパーノード
TecAdmin.net - How to Install JAVA 8 on Ubuntu 18.04/16.04, Linux Mint 19/18
Author And Source
この問題について(NEMのノード(スーパーノード可)を建ててみよう Ubuntu 18.04), 我々は、より多くの情報をここで見つけました https://qiita.com/ROZ-mofumofu-me/items/92d77413033eb8763a10著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .