2020/02/07 追記
$PAC →PAC Globalへのリブランドに伴い、ブロックチェーンのプロトコルもMasternode+PoW→Masternode+Posに変更されました。
PAC Globalのマスターノード構築については別途記事がありますのでこちらを参考にしてください。
目次
$PACのマスターノードを立てたい
$PACのマスターノードで検索するとVPS(仮想サーバー)を使用する方法が一般的で、vultrというサービスでVPSを構築するのが公式の推奨となっているようです。
vultrは最低価格で$2.5/月なので$1=110円だと275円ですね。
確かに非常に安い!…ですが、やはり無料では無いのと海外のサービスの為全て英語ですし、アカウント登録や支払い方法が少々面倒です。
また、一番安いプランは時々売り切れになるらしいです。
そこで今回はみなさんお馴染みのGoogleが提供するクラウドサービス、GCP(Google Cloud Platform)を使って無料(1年間)でVPSを構築してマスターノードを立ててみます。
やる事は大きく3つ。
以上を順番に説明していきます。
GCPでVPS構築
GCPに登録
まずはGCPのアカウントを作成しましょう。(※Googleアカウントが必要です)
https://cloud.google.com/ GCPトップの「無料トライアル」から進んで規約に同意の項目で「はい」をチェックし、「同意して続行」ボタンを押して進めます。
登録に必要な情報を埋めて、「無料トライアルを開始」ボタンを押して登録してください。
クレジットカード情報も登録する必要がありますが、1年間もしくは300$(1$=110円で33,000円)分は無料ですし、有料版にアップグレードしない限り請求は発生しないので安心してください。(無料分が切れるとアカウントは一時停止となる) また、無料分のクレジットが残ったまま有料版にアップグレードした場合でも無料分を使い切るまでは請求が発生しません。
無事登録が完了するとホーム画面が出てきます。
左上のハンバーガーメニュー(横棒3棒が並んだアイコン)からお支払いに移動すると残りのクレジットと日数が表示されます。
VPS(VM)構築
VPSは仮想サーバを作成する技術、VM(Virtual Machine)はその仮想サーバを指します。 作成されたVMの実体をVMインスタンスと呼びます。 では、VMを作成して行きましょう。 左上のハンバーガーメニューから Compute Engine -> VMインスタンス に移動します。
インスタンスを作成を押します。
名前は適当でよいですが、mn1などマスターノードとわかりやすい名前にしておくと管理が楽です。
リージョン、ゾーンは特にこだわりが無ければどこでもよいですが、リージョン毎に価格が異なります。
東京は若干割高です。
マシンタイプですが、一番下のmicroだとマスターノードの為のスペックが足りないというエラーが出た為、共有vCPUでないvCPU×1を選択しました。
カスタマイズを押すとメモリ数を変更できます。
自分は1GBにして費用を抑えましたが、1年間で$300以内に収まるのであれば特にこだわる必要はありません。
vCPU×1、メモリ1GBでマスターノードは問題無く稼動しています。
2018/8/4修正
マシンタイプをmicroで作成してもENABLEとなり、問題無く稼働しました!
恐らくこの時出ていたエラーはファイアウォール設定していなかった為のものでしょう… 2018/10/9修正
10/3の$PACネットワークへの攻撃で少ないメモリのノードがダウンするという事例が発生しました。
現在は1GB以上のメモリを持つマシンを推奨します。
GCPの場合はsmall(共有vCPU×1、メモリ1.7GB)のプランがよいでしょう。
また、ディスク領域の一部をメモリとして使用するスワップ設定を後から行う為、ディスク容量はデフォルトの10GBでは不足するようです。
公式ガイドによるとスワップは4GB確保する為、最低それだけの容量を追加しておきましょう。
1GBあたり$0.04/月とディスク容量の追加は非常に安価な為、余裕を見てもう少し追加してもいいかもしれません。
ディスクの料金体系 リージョンにもよりますが、smallのプランハus-east1で約$14.20/月です。
(2018/10/9現在) 参考までに、カスタマイズでvCPU×1、メモリ1GBのプランは約$19.62/月です。
OSも特にこだわりが無ければデフォルトのDebian GNU/Linux 9(stretch)で問題ありません。 作成を押して完成です。
IPアドレス固定
VultrのVPSは静的(固定)IPアドレスが割り振られるようですが、GCPのVMはデフォルトだとグローバルIPアドレスがエフェメラルになっており、変わる事があります。
マスターノードはグローバルIPを設定して通信する為、変わらないように静的なIPアドレスに変更します。
左上のハンバーガーメニューから VPCネットワーキング -> 外部IPアドレスを選択します。
エフェメラルとなっている箇所を選択し、静的に変更してください。
名前を適当に入力して予約を押せばOKです。
成功すれば先程作成したVMインスタンスのIPアドレスの左に設定した名前が付きます。
ファイアウォールのルールを作成する
※2018/7/8追記 ファイアウォールでtcpポート:7112を許可しておかないとうまくマスターノードが機能しないようです。
設定しておきましょう。
IPアドレスと同様にVPCネットワークの項目からファイアウォールルールを選択します。
ファイアウォールルールを作成をしていきます。
名前、ターゲット、ソースIPの範囲、プロトコルとポートの項目に入力し、作成します。
- 名前…PACのマスターノードという事がわかりやすい名前にしましょう。
- ターゲット…ネットワーク上のすべてのインスタンス
- ソースIPの範囲…作成したVMのIPアドレス
- プロトコルとポート…tcp:7112
これでVMの構築は完了です! この外部アドレスは後からマスターノード設定ファイルに書く為、メモ帳等で一時保管しておきましょう。
$PACウォレットの設定
次にウォレットとマスターノードの設定ファイル作成です。
マスターノードタブを表示する
ウォレットはデフォルトではマスターノードのタブがメニューに表示されていません。 以下の手順で表示させます。 設定 -> オプション で設定画面を開き、ウォレットタブでShow Masternodes Tabにチェックを入れます。 ウォレットを再起動すると左側にMasternodesのタブが表示されるようになります。
自分のアドレス宛に500,000$PACを送信する
次にマスターノード用の500,000$PACを自分自身のウォレットアドレスに対して送信します。 左側メニューの受信を開いて支払いをリクエストするを押すとアドレスが表示されるので、アドレスをコピーします。 ラベルにはMN1、MN2などわかりやすい名前を付けておきましょう。
アドレスをコピーしたら左側メニューの送信を開いて送り先欄に貼り付け、500,000$PACを指定して送信します。
支払いリクエストでMN1等の名前を付けていれば自動でラベル欄に表示されます。
自身のウォレットに500,000$PACが届けば成功です。 しばらく時間をおいて、支払いステータスの確認数が15以上となるまで待ちましょう。
デバッグコンソールでgenkeyとTXIDを出力
自身への500,000$PAC支払いステータスの承認が15を超えたら Tools -> Debug Console でコンソールを開き、以下のコマンドを入力します。
masternode genkey
生成されたキーをコピーしてメモ帳などに貼り付け、一時保管しておきましょう。
後からマスターノードの設定ファイルに貼り付けます。
続けて、以下のコマンドを打ち込みます。
masternode outputs
ここで""で挟まれた内容(長い文字列と0または1)をそれぞれ一時保管しておきます。
マスターノード設定ファイル作成(masternode.conf)
Tools -> Open Masternode Configuration File でマスターノードの設定ファイルを開きます。
自身への支払いリクエストに使用したラベル、VMのIPアドレス:7112、genkey、TXIDの順で1行で書いて上書き保存します。
TXIDの長い文字列と0(または1)の間は半角スペースを入れておきます。
例)ラベル名 VMのIPアドレス:7112 genkey TXID MN1 35.228.11.235:7112 7s8ZQb2aUgyoF9k5wBVucd7nYhDQ49odn9aXSSkUKeZ2xTdiWeb a10b376c9e3764b1ef99b314ded923045231f2ab6075c684839326f7cd701274 1
途中で改行等をして上記の項目が全て1行内に無いとウォレットが起動できなくなるので注意してください。
もし起動できなくなった場合は以下のパス(デフォルト)のmasternode.confをメモ帳等で開いて全部消すか、正しいフォーマットで必要な情報を記載して保存し直してください。
※masternode.conf内の#記号が先頭にある行はコメント化され、無効となります。
注意書き等を残したい人は#を使ってください。
C:\Users\ユーザー名\AppData\Roaming\PaccoinCore\masternode.conf
masternode.confに必要な情報を正しく書いて保存したら、ウォレットを再起動します。
SSHでVPSにログインしてマスターノード設定
次はVPS側のマスターノード設定です。
自分のPCからVPSにSSH接続してリモート操作する必要がありますが、GCPの場合はPuTTYやtera termなどのクライアントソフトが無くてもブラウザからSSH接続できるので楽です。
VMインスタンスの画面でSSHを押してください。 すると別ウィンドウでターミナル画面が開きます。
管理者に切り替え
この時のログインは一般ユーザーレベルの権限しか無く色々実行するのに不都合な為、以下のコマンドを入力して管理者権限を持つrootユーザーに一時的に切り替えます。
sudo su
また、作業フォルダも以下のコマンドでrootに移動します。
cd /root/
これで準備はできました。
VPSのアップデートとスワップ領域の追加
2018/10/23追記
10/3に$PACネットワークに攻撃があり、ネットワークが更新されました。 公式ガイドのSTEP10~12に新しい手順が追加されています。 https://masternodes.paccoin.net/ VPSのアップデートは必須ではありませんが、推奨と書かれているのでやっておきましょう。
sudo apt-get update && sudo apt-get dist-upgrade
途中で[Y/n]と聞かれるので、yと入力してエンターを押しましょう。
HDD/SSDのディスク領域の一部をメモリとして使用するスワップ領域の設定は必須です。
前回の攻撃の時はメモリが少ないマシンがダウンしたようなので。。。 以下のコマンドでは4GBの領域を追加します。
sudo fallocate -l 4G /swapfile && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile && echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab && free -h
インスタンス作成の章でも言及しましたがスワップ領域の追加はディスク領域の一部を確保する為、デフォルトの10GBでは少ないようです。 インスタンス作成時に多めに設定しておきましょう。 再起動すれば設定完了です。
sudo reboot
再起動後、以下のコマンドを実行して4GBのスワップ領域が設定されている事を確認しましょう。
free -h
公式ガイドによるとVPSが英語以外のロケールに設定されている場合はマスターノードが失敗するそうです。 sshでVPSにリモート接続するとsshクライアントはデスクトップロケールをリモートVPSのsshセッションに自動的に設定します。 VPSの実体がニューヨークにある場合でも日本からssh接続するとセッションが日本に設定されインストールが失敗するそうです。 以下のコマンドを実行して英語ロケールを設定しておきましょう。
export LC_ALL="en_US.UTF-8"
マスターノードをインストールして実行
$PACのマスターノード用のソフトをインストールして実行します。
wget https://raw.githubusercontent.com/PACCommunity/PAC/master/pacmn.sh
pacmn.shに実行権限を与える為、以下のコマンドを実行します。
chmod +x pacmn.sh
pacmn.shを実行します。
./pacmn.sh
pacmn.shを実行するとIPアドレスを聞かれるので、作成したVMの外部IPアドレスを入力しましょう。 IPアドレスを入れるとウォレットで生成したgenkeyを求められるので入力します。
念の為、以下のコマンドを入力してstatusがMasternode successfully startedになっている事を確認しましょう。
./paccoin-cli masternode status
VPS再起動時のマスターノード自動再起動
2018/7/11 追記
VPSは何らかの異常などで再起動される事があるそうです。
その時にマスターノードも合わせて自動的に再起動するコマンドを入力しておきましょう。
2018/10/17追記
公式のRedditで自動再起動のコマンドがアップデートされていましたので修正しました。
攻撃されてサーバーが落ちる場合もある為、このコマンドを入力しておきましょう。 https://www.reddit.com/r/PACcoinOfficial/comments/9lakew/vultr_masternode_outage/e75g994/
wget https://gist.githubusercontent.com/foxrtb/b703ae761472c5599c4d83ab0d3d62ae/raw/e8913deb9e1b7cc9c649febd2942930e4f6f5127/add-systemd-from-script && chmod +x add-systemd-from-script && ./add-systemd-from-script
マスターノード起動!
以下の内容を再確認です。
全て完了していますね? ウォレットは再起動していますね?
では、マスターノードを起動しましょう。
ウォレット左側メニューのmastenodeを開くとMN1が追加されています。 起動したいマスターノードをクリックして選択し、 Start aliasボタンを押すと、マスターノードが起動します。
起動してしばらくはstatus欄がPRE_ENABLED、NEW_START、WATCHDOG_EXPIRED等になっていると思いますが、20~30分程度するとENABLEになるはずです。
もしどれだけ待ってもENABLEにならない場合は何かの設定が間違っていると思われます。
手順の再確認、再設定、ウォレットの再起動等を試してみましょう。 それでも上手くいかない場合はウィルス対策ソフト等がウォレットを邪魔していないか確認してみましょう。
マスターノードの状態確認
ウォレットでもマスターノードのステータスを確認できますが、以下のサイトでIPアドレスを入力しても確認できます。 https://monitor.masternodes.work/monitor また、Android・iOSにもマスターノード管理アプリがあります。
こちらのアプリではIPアドレスを入力してお気に入りに追加する事で、マスターノードステータスと報酬までのカウント数を確認する事ができます。
statusがENABLEになった方は全ての作業完了です。
アプリのPayment Queueが減って報酬が入るのを楽しみに待ちましょう!
※1年の無料期間が過ぎたら安いVultrへ移行するか、AWSやAzureの無料プランを使いましょう。