5分でNKN MinerをセットアップしDigitalOceanで2カ月無料で実行しよう!
This original article created by Christian Busch.
Thank you for letting me translate and publish this great instruction in Japanese.
私のNKM(new kind of miner)をRaspberry pi上で実行するためのチュートリアル(https://medium.com/@christianbusch_45820/make-your-own-nkm-new-kind-of-miner-out-of-a-raspberry-pi-dbeeed6d8130)がうまくいった後で、私はAWSやGoogleCloudのようなクラウド・プラットフォーム上でノードを展開する何か簡単な方法はないだろうかと、何度も質問を受けました。短く回答するならば、はい、それは可能です!
世の中にはたくさんのクラウド・プラットフォームがあります。私がプログラム開発用途でほとんどの場合に使っているのはDigitalOceanです。簡単に使え、“使った分だけ”の請求とユーザーインターフェイスがとても素晴らしいです。
でも、何よりもまず第一に:NKNって一体全体何なんだ?何の事を言ってるの?
NKNって何?
NKN (New Kind of Network)はおそらく2018年で最もエキサイティングなブロックチェーン・プロジェクトです。NKNはネットワーク全体のレイヤーをブロックチェーン化して、コンピューティングとストレージに加え、インターネットの構造の3本目の柱に到達しようとしています。
マイニングの観点から言えば、NKNトークンは、あなたのインターネットのバンド帯域幅をネットワークに提供する事によって稼ぐ事が可能なのです。他の多くのトークンとは対照的に、いかなる大きなサーバーファームも、大きなストレージも必要ありません。- 単なるOSが入ったネットワーク・デバイスとちょっとした設定があればよいのです。NKNマイニング紹介ビデオは、これからマイニングを始めるのにちょうど良いスタート・ポイントです。
さて、ノードを走らせるのに重要な事は何でしょう?明らかに、大きな計算処理能力は必要なく、NKNブロックチェーンをデバイスに保管するためのほんの少しのスペースがあれば良いのです。―ほんの小さなサーバーと高バンド帯域幅があればそれでパーフェクトです。
…そしてOcean何とかって言うのは何?
DigitalOceanは、数回のクリックでヴァーチャル・サーバーを構築できるクラウド・プラットフォームです。これらのシステムは“Droplets”と呼ばれ、計算能力、ストレージ容量やOSに関して異なるスペックでの設定が可能です。
DigitalOceanへの支払いはとても簡単です。―サーバーが存在している時にだけ支払えばよいのです。それはつまりいつでも好きな時に削除できて、その後に、別のdropletを作成するまでは請求される事がありません。一番小さなdropletの価格は月額5ドルです。(もしくは一時間0.007ドル)
なるほど、あんた、さっき2か月無料でマイナー持てるって言ったよな?-どうやってやるの?!
えぇっと…それもとても簡単。DigitalOceanはリファレル・プログラムを提供していて、下の僕のパーソナル・リンクからサインアップすれば、すぐに10ドル使用分がもらえるんです。良くないですか?そしてその副作用として:もしあなたが続けて使おうと決めて、最初の25ドルをデポジットすると、私も同じ金額を紹介者ボーナスとして受け取れるんです。この方法だと、あなたは私のノードを提供し続ける仕事をサポートしてくれる事になるので、NKNネットワーク全体により多くの安定性を提供する事ができるのです。
もし、ボーナスを受け取る事も、私の仕事のサポートをする事も望まないとしても、それはそれで全然大丈夫です。チュートリアルの続きを参照できますし、リファレル・プログラムではない下記のリンクから、あなたのアカウントを登録できます。 https://www.digitalocean.com/
皆さん用意はいいですか?はい、それでは始めましょう!
必要なモノ
- SSHターミナル付きのパーソナル・コンピューター(Windowsの場合は、Putty https://www.putty.org/ を推奨)
- DigitalOceanのアカウント(上記参照)
- …はい、本当にそれだけです :)
さあ始めよう
マイナーの設定を始める前に、dropletの準備をしなければなりません。次のパートで、DigitalOcean上のdropletの設定を行います。
1.Dropletにサインアップする
DigitalOceanに自分のアカウントでログインした後、ダッシュボードが表示されます。ここから、右上の角にある“create”ボタンをクリックして“Droplets”を選択します。
これでdropletの設定を開始できます。NKNはそんなに計算能力を必要としないので、入手可能な最小構成のdropletで最新のDebian OSを選択しましょう。
バックアップもストレージも必要ないので、リージョン(地域)を選択するだけです。このチュートリアルでは、バンガロール地域を選択していますが、どうぞ自由にお好みの地域を選択してください。
その後は、dropletの名前を選ぶだけです。そして“create”をクリックして完了です。
さて、これでノードのセットアップ状況を確認する事ができます。コーヒーでも飲もうかなんて考えないで — 終わるまでほんの10~20秒くらいしかかかりません。すべてが完了したらメールをチェックしてください。DigitalOceanがあなたのdropletネーム、IPアドレス、ユーザーネームそしてパスワードを含んだメールを送信しています。ターミナルソフト(もしくはWindowsならPutty)を起動してください。初めてdropletに接続する場合はECDSA key fingerprintを求められるので、ターミナルに“yes”と入力します。追加で“root”ユーザーのためのパスワード変更を強いられます。現在のパスワード(メールで送られてきたもの)を入力して、その後、新しいパスワードを2回入力します。
うまくいきましたか?オーケー!それではいよいよマイナーの設定に移りましょう!
インストレーション
前回のステップをスキップしているなら、SSHでdropletかヴァーチャル・サーバーにrootユーザーで接続しているのを確認してください。そしてhomeディレクトリに変更します。 簡単に言うと、もしあなたの画面に下記が表示されているなら大丈夫です。☺
root@YOUR_DROPLET_NAME:~#
1. Debianのアップデートと依存環境のインストール
全てのDropletはいわば生まれたての子供のようなものです。ですので、物事をどうするのが教えてあげる必要があります。まず最初に、入手可能なソフトウェアのリストのアップデートを行います。
apt-get update
実行しているインストール済パッケージが最新バージョンである事を確認します。
apt-get upgrade
もしシステムに続行するかどうかするか聞かれた場合は“Y”をタイプしてからリターンを押します。
今回の執筆中にはsshd設定のアップデートが入手可能でした。もし尋ねられた場合は“keep the local version currently installed(現在のインストール済バージョンを保持する)”を選択しても大丈夫です。
アップデート処理が終わったら、必要な実行ファイルのインストールが開始できます。今回の場合で必要になるのはmake、curlそしてgitです。
apt-get install make curl git
再度、了解するには“Y”を入力します。
2. NKNユーザーの作成
NKNはテストネット段階であり、そんなに多くのセキュリティ上の問題があるとは思いませんが、それでも私たちのプロセスをrootアクセスで実行しないでおくのは良い考えです。そのために、“nkn”という名前の新しいユーザーを作成し、スーパー・ユーザーとしての実行権限を与えておきましょう。
adduser nkn
さて、新しく作成したユーザーにパスワード(必須)、そしてフルネーム、ルーム・ナンバー、職場の電話番号、家の電話番号やその他といったオプションの情報の詳細設定を求められます。
この設定が終わったら、このユーザーをsudoグループに加える事で、このユーザーに“sudo”(スーパー・ユーザーとして実行)コマンドを使える実行権限を与えます。
usermod -aG sudo nkn
ユーザーが作成されました。さっそくテストしてみましょう!現在のsshセッションからCTRL+Dを入力するか、ターミナルを終了して切断します。そしてdropletに新しい資格情報で再接続します。下記のような入力画面が見えているはずです。
nkn@YOUR_DROPLET_NAME:~#
人類にとっては小さな一歩ですが、NKNにとっては大きな跳躍です!さて、Goのインストールとマイナーの設定を続けましょう。
3. 最新バージョンGolangのインストール
デフォルトのDebianでは、古いバージョンのGoがインストールされています。 — 古すぎるためNKNで使用する事ができません。そのため、最初に最新バージョンをインストールする必要があります。下記のラインをターミナルにコピー&ペーストします:
最新バージョンのGoを検索し、 ダウンロードパスを“url”に保存:
url=`curl https://golang.org/dl/ | grep linux-amd64 | sort --version-sort | tail -1 | grep -o -E "https://dl.google.com/go/go[0-9]+\.[0-9]+((\.[0-9]+)?).linux-amd64.tar.gz"`
ファイルをダウンロード:
wget ${url}
go environmentを/usr/local
に展開: sudoパスワードはnknユーザーのものと同じ:
sudo tar -C /usr/local -xvf `echo ${url} | cut -d '/' -f5`
最後に環境変数を正しく設定: 一行ごとにリターンを押して改行してください。
cat >> ~/.bashrc << 'EOF'export GOPATH=$HOME/goexport PATH=/usr/local/go/bin:$PATH:$GOPATH/binEOF
やりましたね!これであとはbashを下記のようにre-sourceするだけです。
source .bashrc
これで準備は完了のはずです!下記をタイピングして確認しましょう。
go version
これでdropletは1.11もしくはそれ以上のバージョンのGoがインストールされているはずです。これによりNKNプログラムをダウンロード、ビルドできるようになりました。
4. NKNノードをダウンロード、ビルドする
執筆段階では、NKNはあらかじめ定義されたフォルダー構造内でビルドされる必要があります。さっそく、この長いコマンドで一足とびに作成してしまいましょう:
mkdir -p ~/go/src/github.com/nknorg && cd ~/go/src/github.com/nknorg
ここからは、NKNをビルドするために公式ガイドに従いましょう。https://github.com/nknorg/nkn
NKNレポジトリーのクローン作成:
git clone https://github.com/nknorg/nkn.git
新しいフォルダにディレクトリを変更:
cd nkn
glideパッケージ管理をインストール:
make glide
ビルドの依存関係をダウンロード
make vendor
makeでソースコードをビルド
make
簡単、でしょ?今やメインの2つの実行可能ファイル nknc
と nknd
がビルドされ、マイニング作業ができる準備が整いました!
5. Testnet設定とウォレット作成
ノードをスタートさせる前に、正しいコンフィグ・ファイルをリネームし、ウォレットを作成しなければなりません。
NKNノードのコンフィギュレーションは config.json
に保存されています。ありがたい事に、NKNは既にテストネット用コンフィグ・ファイルを用意してくれていますので、リネームするだけです。こうタイプするだけです。
cp config.testnet.json config.json
これで完了!
もしNKN用の新しいウォレットを作成したい場合は、下記のようにタイプします:
./nknc wallet -c
パスワードを選んで、全てのデータを安全な場所に保存します。
もし既に他のマシンでウォレットを持っていた場合は、wallet.dat
を sftpクライアント (sshと同じ資格情報)で/home/nkn/go/src/github.com/nknorg/nkn
にコピーするだけです。
6. テストマイニング
おお!やりましたね!これで全て準備完了でマイニングをスタートできます!ノードを下記のようにスタートさせましょう。
./nknd -p YOUR_WALLET_PASSWORD
そしてノードが正常にネットワークに接続しているかテストします。
ノードが適切に接続された場合、最後にやるべきことが一つだけ: NKMを完璧なプラグ&プレイ機に設定しましょう。 — クラッシュによる再起動やシステム起動時に自動スタートさせるための設定です。
8. プラグ&プレイ Droplet
ホーム・ディレクトリに切り替える
cd ~
そしてnanoで “nkn.service”という名前の新しいファイルを開く
nano nkn.service
下記の内容をコピー&ペースト。your wallet passwordを置き換えるのを忘れないように。
[Unit]
Description=nkn[Service]
User=nkn
WorkingDirectory=/home/nkn/go/src/github.com/nknorg/nkn
ExecStart=/home/nkn/go/src/github.com/nknorg/nkn/nknd -p YOUR_WALLET_PASSWORD
Restart=always
RestartSec=3
LimitNOFILE=500000[Install]
WantedBy=default.target
これにより自動的にノードをスタートさせ、予期せぬ終了時には5分後に再起動させるプロセスを作成するサービスファイルが作られる。
このファイルをrootで /etc/systemd/system
にコピーする:
sudo cp nkn.service /etc/systemd/system/nkn.service
そしていよいよグランドフィナーレです。サービスをブート時に起動させます。
sudo systemctl enable nkn.service
デバイスを再起動して完了です!
sudo reboot
さあ、リラックスして自動マイナー機を楽しみましょう — まさに本物のNew Kind of Minerを! — 全てがDigitalOcean Droplet上で動く!
8. (NEW) オートアップデーティングNKM
NKNは初期の開発段階にあるので、ノードを規則的にアップデートする必要があります。そのため、下記4セクションのいくつかのステップを何度も繰り返さなければいけません — 現在実行しているノードを止める、git pull
コマンドでnknファイルを更新する、そしてmake
をもう一度実行する。
私たちが世話することなくノードが自身で規則的にアップデートできたら良いと思いませんか?
いつものようにホームディレクトリから始めましょう。もし見えてなければ
nkn@YOUR_DROPLET_NAME:~#
下記のように入力して、画面をホーム・ディレクトリに切り替えます。
cd ~
まず最初に、NKNファイルをアップデートするスクリプトを作成します。直接、テキスト・エディタ(クールなキッズはviを使いますが、私はnanoが好みです)にジャンプして作成しましょう!
nano nkn-updater
下記の内容をコピー&ペーストします:
HOME=/home/nkn
GOPATH=$HOME/go
PATH=/usr/local/go/bin:$PATH:$GOPATH/bin
cd $HOME/go/src/github.com/nknorg/nkngit fetch &>/dev/nullLOCAL=$(git rev-parse HEAD)
UPSTREAM=$(git rev-parse @{u})if [ $LOCAL != $UPSTREAM ]
then
systemctl stop nkn.service;
git merge;
make deepclean;
make glide;
make vendor;
make;
chown -R nkn:nkn $HOME/go;
systemctl restart nkn.service;
fi
そしてCTRL+XとYを押して、ファイルを保存・終了します。このファイルを実行可能にしるために下記を実行します。
chmod +x nkn-updater
このファイルに関してはこれで終わりです。
最後にするのは、Debianにこのスクリプトを午前12時に実行するよう命令します。このためには、crontabリストを編集します。下記のようにして実行します。
sudo crontab -e
リターンを押してnanoをデフォルト・エディタとして設定し、crontabの編集画面にやってきました。そしたら下記の一行をファイルの最後に付け加えます。
00 12 * * * /home/nkn/nkn-updater >/dev/null 2>&1
再度、CTRL+XそしてYを押して、ファイルを保存し終了します。そして完了です — もうこれ以上の設定は必要ありません!
(今度こそ本当に)さあ、リラックスして自動マイナー機を楽しみましょう — まさに本物のNew Kind of Minerを! — 全てがDigitalOcean Droplet上で動く!
Home: https://nkn.org/
Email: contact@nkn.org
Telegram: https://t.me/nknorg
Twitter: https://twitter.com/NKN_ORG
Medium: https://medium.com/nknetwork
Linkedin: https://www.linkedin.com/company/nknetwork/
Github: https://github.com/nknorg
Reddit:https://www.reddit.com/r/nknblockchain
Discord: https://discord.gg/c7mTynX