ビットコインのフルノード Raspberry Pi+Ubuntu

1.必要なもの

フルノードの稼働に必要なものは、ラズベリーパイの本体と記憶装置(マイクロSDカード+HDD)のみです。

しかし、事前準備のために、セッティング用のPC(OSインストール用)、モニター、マウス、キーボードが必要です。これらは普段使用しているものを一時的に流用すれば、新たに購入する必要はありません。

したがって、購入する必要がある最低限の機材は、ラズベリーパイ3本体(+ケース、電源)、マイクロSDカード、および外付けHDDのみで、合計1万5,000円くらいの予算に収まります。(使用していないHDDが家にある人は、さらに予算を節約できます。)

また、部分的なブロックチェーンのみを保持する「剪定ノード(Pruning Node)」で運用する場合は、マイクロSDカードの空き容量だけで間に合うので、外付けHDDは必要ありません。

以下は、標準的なフルノードの運用に必要な機材です。

フルノードの稼働に必要なもの

  • ラズベリーパイ3 本体
  • ラズベリーパイ3用 ケース
  • ラズベリーパイ3用 電源アダプター
  • マイクロSDカード(16GB以上)
  • USB接続のハードディスク(できれば1TB以上を推奨)

フルノードのセッティング時に必要なもの

  • セッティング用PC(普通のWindowsパソコン)
  • モニター(HDMI端子付き)
  • HDMIケーブル
  • USBマウス
  • USBキーボード

ラズベリーパイ3の本体は、「本体+ケース+電源」の3点セットがAmazonで購入できます。

ラズベリーパイ3 3点セット

マイクロSDカードは、「クラス10」以上の読み書き速度に対応しているものを選びます。(それ以下の場合、読み書き速度がボトルネックとなってラズパイの性能が低下するため)

OSをインストールできれば良いので、容量は16GBあれば大丈夫です。クラス10対応で16GBのものは、Amazonなら1,000円以下で買えます(2017年11月現在)。
筆者は以下のSDカードを購入しました。

シリコンパワー microSDHCカード 16GB class10

セッティング用のパソコンにSDカードのスロットが付いていない場合は、別途SDカードリーダーが必要になります。 参考:SDカードリーダー

ハードディスクは、電源コード付きのものと、USBからの電源供給型(バスパワー)のタイプに分かれます。超小型のラズパイに合わせるなら、手のひらサイズの電源供給型のものがおすすめです。

どの容量を選ぶべきかは、なかなか悩ましい問題です。ビットコインの誕生から2017年までの期間で見ると、年間平均で約20GBのブロックが生成され、2017年11月末時点で約160GBのブロック・データがあります。

しかし、今後は1ブロック当たりの容量が増えていくことが予想されるため、長期的な運用を見据えるなら1TB以上の容量が欲しいところです。この辺は、予算と運用方針の相談ということになります。
私は以下と同タイプで2TBのものを購入しましたが、この先5年くらいの運用であれば1TBでも十分かもしれません。

WD HDD ポータブルハードディスク


2.Ubuntu Mateのインストール

ラズベリーパイ3の本体とケースを入手したら、ケースに本体をカチッとはめ込みます。また、ヒートシンクが付属している場合は、両面テープでCPU部分に貼り付けます。本体側でやるべきことは、ひとまずこれだけ。

ラズベリーパイにはOSが何もインストールされていない(というか記憶装置が付いていない)ので、まずはセッティング用のPCを使って、マイクロSDカードにUbuntu MateというOSをインストールします。

Ubuntu MateはLinux系のディストリビューションの一つで、おそらく初心者にとっては一番扱いやすいOSだと思います。 Ubuntu Mateのインストール手順は次のとおりです。

  1. Ubuntu Mateのイメージファイルをダウンロード
  2. イメージファイルをマイクロSDカードに書き込む
  3. ラズベリーパイ3でUbuntu Mateを起動し、初期設定をする

(1) Ubuntu Mateのダウンロード

まず、以下のページからUbuntu Mateのイメージファイルをダウンロードします。

ダウンロードの手順は次のとおりです。


Ubuntu Mateのロゴをクリック



Downloadのリンクをクリック



Raspberry Piの場所をクリック



安定版のリリースを選択します(2017年11月時点では「16.04.2」)



直接ダウンロードするには、「.xz」で終わるファイル名をクリックします。「.torrent」で終わるファイル名をクリックすると、torrent経由でダウンロードすることもできます。

ファイル容量は約1GBあるので、ダウンロードには少々時間が掛かります

次に、ダウンロードしたファイルを解凍します。拡張子「.xz」のファイルは、「7-Zip」というフリーソフトで解凍できます。(または「WinRAR」等でもOK。)


(2) マイクロSDカードに書き込む

解凍したイメージファイル(.img)を、「Win32 Disk Imager」というソフトを使ってSDカードに書き込みます。

PCにマイクロSDカードを挿入し、Win32 Disk Imagerを起動してイメージファイルを書き込みます。書き込みの手順については、以下のページで詳しく解説されているので、こちらを参照いただければと思います。


(3) Ubuntu Mateの起動と初期設定

書き込みが終わったら、SDカードをPCから取り出し、ラズベリーパイにセットします。(Raspberry Pi3 Model Bでは、マイクロSDカードの挿入口は裏面にあります)

なお、ラズパイ3には電源ボタンというものはなく、電源コードをつないだ瞬間に電源ON、引っこ抜いたら電源OFFというワイルドな仕様になっています。

そのため、SDカードはもちろんのこと、セッティングに必要なマウス、キーボード、外付けHDD、モニター、LANケーブルをすべて接続してから、電源ケーブルをコンセントに挿入しましょう。

電源を入れてしばらくすると、次のような画面が出てきます。

その後、初期設定の画面が表示されるので、以下のように設定していきます。

  1. 言語設定
    デフォルトでは「English」が選択されています。一番下にある「日本語」をクリックすると、システム言語がすべて日本語になります。日本語を選択して「続ける」をクリック。
  2. タイムゾーン
    日本語を選択すると、自動的に「Tokyo」が選択されているはずです。Tokyoと表示されていることを確認し、そのまま「続ける」をクリック。
  3. キーボードレイアウト
    左の選択メニューから「日本語」を選択し、右側の選択メニューに表示される「日本語」を選択する。
  4. ユーザー情報
    メインユーザーのログイン情報などを入力する(以下は設定例)
    • あなたの名前:satoshi
    • コンピューターの名前:ubuntu
    • ユーザー名の入力:satoshi
    • パスワードの入力:alskjdie1234
    • パスワードの確認:alskjdie1234
    • 「ログイン時にパスワードを要求する」にチェック

設定したユーザー名とパスワードは、ログイン時や管理者コマンドの実行時に必要なので、忘れないようにしましょう!

これで初期設定が完了です。Ubuntu MATEの初回起動には少し時間がかかります。

3.Ubuntu Mateの設定

Ubuntu Mateのデスクトップが表示されたら、以下の設定を行います。

  1. 管理者権限の設定
  2. ラズベリーパイの最適化
  3. 外付けHDDのフォーマット

(1) 管理者権限の設定

メインユーザーの権限を「管理者」に設定します。(これを行わないと、Bitcoin Coreの起動時に「ロックが取得できません」と表示され、外付けHDDにデータを書き込めないため)

デスクトップのメニューから「システム」→「システム管理」→「ユーザとグループ」を選択します。

Ubuntu Mate管理者権限の設定

「ユーザの設定」ウィンドウが表示されるので、初期設定で登録したユーザ名を選択し、「アカウントの種類」の「変更」ボタンをクリックします。

パスワード(ログイン時と同じもの)を入力し、「管理者」の項目にチェックを入れて、ENTERキーを押します。

(2) ラズベリーパイの最適化

ラズベリーパイの性能を最大限に引き出すために、"/boot/config.txt"を編集します。(これを行うことで、Bitcoin Coreの動作が安定します)

デスクトップでターミナルを起動し、viコマンドを実行。(ターミナルは、「Ctrl + Alt + T」で起動できます。)

satoshi@ubuntu:~$ sudo vi /boot/config.txt
→ パスワードを入力

参考:viの使い方

ファイルの最後尾に、以下を追加します。(GPUメモリを最小限とし、メインメモリを増強する)

gpu_mem=16

さらに、以下を追加。(WiFiとBluetoothを無効化)

systemctl disable wpa_supplicant
systemctl disable bluetooth
systemctl disable hciuart

dtoverlay=pi3-disable-wifi
dtoverlay=pi3-disable-bt

ファイルを保存して終了し、Ubuntu Mateを再起動します。

satoshi@ubuntu:~$ sudo reboot

補足:WiFi接続はいろいろと難しいので、自信がある人以外は有線LANでの接続をおすすめします。


(3) 外付けHDDのフォーマット

外付けHDDをフォーマットし、Ubuntu Mateから読み書きできるようにします。

HDDのフォーマットは、デスクトップのメニューから「システム」→「設定」→「ハードウェア」→「Disks(ディスク)」を選択します。

Ubuntu Mate 外付けHDDのフォーマット

  1. ハードディスクの設定画面で、左のコラムから外付けHDDをクリック
  2. 赤い四角の停止ボタンをクリックしてアンマウント(マウントしていた場合)
  3. パーティションがある場合は、赤いマイナスのマークをクリックして削除しておく
  4. その右横にある歯車のマークをクリックし、「Format Partition(パーティションを初期化)」を選択
  5. Typeは「Compatible with Linux systems (Ext4) ( Linuxシステムと互換)」を選択
  6. Format(初期化)をクリック
  7. フォーマットが終わったら、緑の再生ボタンをクリックしてマウントする

HDDのラベル(名前)は、歯車メニューの「Edit Filesystem(ファイルシステムを編集)」から変更できます。ラベルはHDDのパス(場所名)にも影響するので、スペースや特殊記号を含まないシンプルな名前にします。ここでは例として、「2TBHDD」というラベルにしました。

HDDがマウントされると、デスクトップに以下のようなアイコンが追加されます。

Ubuntu Mate 外付けHDDのアイコン

HDDのパスは、"/media/<ユーザ名>/<ラベル名>"になります。
ターミナルを起動し、HDDのパスを確認してみましょう。

satoshi@ubuntu:~$ ls /media/satoshi/
2TBHDD

4.Bitcoin Coreのインストール

ラズベリーパイの準備が整ったら、いよいよBitcoin Coreのインストール! …ですが、その前にシステムを最新の状態に更新します。

ターミナルを起動し、以下のコマンドを実行。

satoshi@ubuntu:~$ sudo apt-get update
.
.
.
satoshi@ubuntu:~$ sudo apt-get upgrade -y
.
.
(途中で確認のプロンプトが表示されたら、'y'と入力してENTERキー)

初回のシステム更新には30分程度かかるので、気長に待ちます。

更新が終わったら、"apt-add-repository"コマンドでBitcoin Coreのレポジトリを追加します。
これを実行することで、以後はUbuntuのパッケージ管理システム(apt-get)を通じて、Bitcoin Coreをインストールできるようになります。(レポジトリは"/etc/apt/source.list"に追加されます)

satoshi@ubuntu:~$ sudo apt-add-repository ppa:bitcoin/bitcoin
.
.
[ENTER]を押すと実行します。 → (ENTERキー押下)

再度"apt-get update"を実行し、最新のパッケージリストを入手します。

satoshi@ubuntu:~$ sudo apt-get update

そしてBitcoin Coreのパッケージをダウンロード、インストールします。

satoshi@ubuntu:~$ sudo apt-get install bitcoind bitcoin-qt

"bitcoind"はテキストベースのフルノード実装、"bitcoin-qt"はウォレット機能付きのGUIアプリです。上のコマンドでは、この2つを同時にインストールしています。


Bitcoin Core(ビットコイン・コア)の設定

インストールが終わったら、データの保存用フォルダを外付けHDDに作成します。ここでは例として、"bitcoin"という名前のフォルダにします。

satoshi@ubuntu:~$ mkdir /media/satoshi/2TBHDD/bitcoin

上記はユーザ名「satoshi」、HDDラベル「2TBHDD」が設定されている場合のパス。

エラーが出てフォルダを作成できない時は、先にパーミッションを変更します。

satoshi@ubuntu:~$ sudo chown -R satoshi /media/satoshi/2TBHDD
satoshi@ubuntu:~$ sudo chmod -R 766 /media/satoshi/2TBHDD

次に、bitcoinフォルダの所有者を<ユーザ名>に変更し、書き込みのパーミッションを変更します。(下のコマンドでエラーが出るときは、sudoで実行してみてください。)

satoshi@ubuntu:~$ chown -R satoshi /media/satoshi/2TBHDD/bitcoin
satoshi@ubuntu:~$ chmod -R 766 /media/satoshi/2TBHDD/bitcoin

フォルダを作成したら、bitcoin-qtを起動します。

satoshi@ubuntu:~$ bitcoin-qt

bitcoin-qtの起動時に"libEGL warning: DRI2: failed to authenticate"という警告メッセージが表示されるかもしれません。これはQt(キュート)というGUIツールに関連するものですが、動作には特に影響がないようなので、無視してかまいません。

bitcoin-qtの初回起動時には、次のような画面が表示されます。

bitcoin-qt 初回起動時の画面

データ辞書というのは、要するにデータを保存する場所のことです。デフォルトでは、"/home/<ユーザ名>/.bitcoin"にデータが作成されます。

初回起動時は、先ほど作成したbitcoinフォルダではなく、あえて「デフォルトデータ辞書を使用」にチェックを入れます。

赤い警告文は、「ブロックチェーンのデータ容量は153GBあるけど、保存しようとしているSDカードには13GBしか空き容量が無いから、強制的に剪定ノード(Pruning)にするよ!」という意味ですが、ここでは無視してOKをクリックします。

なぜそうするかというと、データの保存場所と設定ファイルの場所を物理的に分けるためです。

bitcoin-qt データと設定ファイルの分離

設定ファイルを外付けHDDに保存してしまうと、HDDが何らかの理由でアクセス不能になった時に、復旧するのが非常に困難になります。そのため、初回起動時には「デフォルトデータ辞書」にチェックを入れ、<ユーザ>のホームディレクトリに設定ファイルを作らせます。

Bitcoin Coreの初回起動は、設定ファイルの場所を決めるためのものなので、起動したらすぐに終了します。(起動から1分後くらいに、ウィンドウの×印をクリック)

こうすることで、Bitcoin Coreの作業フォルダが"/home/<ユーザ名>"に設定され、ここに".bitcoin"というフォルダが自動的に作られます。早速、このフォルダを確認してみましょう。

satoshi@ubuntu:~$ ls -a /home/satoshi/
...
...
.bitcoin

次に、この".bitcoin"フォルダに移動し、設定ファイルの"bitcoin.conf"を作成します。

satoshi@ubuntu:~$ cd ~/.bitcoin
satoshi@ubuntu:~$ vi bitcoin.conf

bitcoin.confに、以下の内容を書き込みます。

datadir=/media/<ユーザ名>/<HDDのラベル>/bitcoin
listen=1
upnp=1
dbcache=100
maxmempool=50
maxorphantx=10
maxconnections=48
limitfreerelay=0

1行目は、外付けHDDに作成したデータフォルダのパスです。これを指定することで、以後は外付けHDDにブロックチェーンのデータが保存されるようになります。

2行目の"listen=1"は、他のノードからの接続を許可するという設定です。

3行目の"upnp=1"は、ルーター越しの接続を最適化するための設定です。日本のネット環境では、ほとんどの環境がこれに該当します。

4行目以降は、ラズベリーパイに合わせたリソース管理、およびスパム対策です。これにより、キャパオーバーによるクラッシュを防ぎ、動作を安定させることができます。

加えて、剪定ノード(Pruning Node)で運用する場合は、"prune=xxx"という行を追加します。"xxx"には、保存するデータ容量をメガバイト単位で指定します。ただし550MB未満にはできないので、550以上の数値にする必要があります。(例:2GBのブロックを保存する場合 → prune=2048)

以上を入力したら、bitcoin.confを保存して終了します。

次に、Ubuntu Mateのアクセス制御ファイルを編集し、P2Pの接続を行えるようにします。

satoshi@ubuntu:~$ sudo vi /etc/hosts.allow

hosts.allowに以下を記入して保存。

bitcoind:ALL
bitcoin-qt:ALL

さらに、関係のないプログラムからのアクセスを防ぐために、/etc/hosts.denyに以下を記入します。

satoshi@ubuntu:~$ sudo vi /etc/hosts.deny
ALL:ALL

次に、ルーターのポート開放を行います。
この手順については、ポート8333の開放で詳しく解説しているので、こちらを参照してください。(ラズベリーパイで行う必要はなく、同じルーターに接続しているWindowsパソコンからでも設定できます。)

これで必要な設定はすべて終わりました。
あらためてbitcoin-qt(またはbitcoind)を起動すれば、いよいよフルノードの本稼働です。

satoshi@ubuntu:~$ bitcoin-qt

bitcoin-qtは進捗状況をリアルタイムで表示してくれるので、最新のブロックに追いつくまではbitcoin-qtがおすすめです。同期が完了したらbitcoin-qtを終了し、以後はより軽負荷で動くbitcoindを稼働させると良いでしょう。

bitcoindは以下のコマンドで起動できます(bitcoin-qtとの同時起動はできません)。

satoshi@ubuntu:~$ bitcoind -daemon

bitcoindを終了させる時は以下のコマンド。

satoshi@ubuntu:~$ bitcoin-cli stop

初期同期に要する時間は、環境にもよりますが、おそらく一週間以上はかかるはずです。

ブロックの同期がある程度進行したら、ノードの稼働状況を自動的に監視できるBitNodesというサービスも試してみてください。


ページトップへ

このサイトについて

当サイトは広告フリーで運営しております。
ご支援いただける方は、以下のアドレスにお願い致します。


ビットコイン アドレス
36oqqcnJeD3VZVkHatwfXnB8daxmUSavkF
bitcoin address
モナコイン アドレス
MJZ7aUPGrpeXrP22hRLYZZ9qVUWUNq4Rv6
monacoin address

1 satoshiから受付けております。ご支援、ありがとうございます!