ラズベリーパイでビットコンのフルノード(Bitcoin Core)を動かしてみる手順メモ
ラズパイでbitcoin Coreのフルノードを動かしてみることにした。以前はウォレットとしてWindowsノートで動かしていたことがあるが、今となってはビットコインはハードウェアウォレットやモバイルウォレットが便利になったため、Bitcoin coreを個人で使う理由はあまりない。常時起動しているサーバーではないので毎回ブロックチェーンの同期に時間かかりますしね。ところが、最近ラズパイでビットコインのフルノードを動かされている方がいるということをネットで知り、自分もやってみることにしました。
私がセットアップするにあたりこの以下のサイトが参考になりました。情報は若干古いようですが有用です。
参考サイト(英語):http://raspnode.com/diyBitcoin.html
準備
- RASPBERRY PI 3 MODEL Bのキットを購入。初めてなので、ケース、SDカード(16G)とHDMIケーブルのセットをAMAZON購入。
- マウス(USB)とキーボード(Bluetooth)は家にあったものを利用
- ブロックチェーン保存用にUSBフラッシュメモリを用意。2017月4月現在ブロックチェーンは128Gメモリだと足りないので256Gメモリを推奨。私はBitcoindのpruningモードを利用すること(後述)とし128Gを購入しました。(256Gは高い・・)
- ラズベリーパイのOSは標準のRaspbianを利用。GUIは使わずコンソールのみで運用(メモリをその分割当)。
- 固定のGlobal-IPがあればいいけど、なくてもOK
目標
- Bitcoin Coreのフルノードを自宅で常時稼働しビットコインネットワークに貢献
- 最新版のBitcoin Core 14.0を使用。自分でコンパイルしコンフィグを行う。
- OSセットアップ時のみディスプレイ・キーボード・マウスを接続するがネットワーク設定ができ次第、本体のみで稼働(sshでターミナル接続&設定)
- セットアップ後はLAN&自宅外からログインを可能にする(ssh公開鍵認証、Firewall設定)
- 自宅サーバーをbitnodeに登録しサーバーの稼働状況を常時監視
Rasbianのインストール
- ラズベリーパイのOSは標準のRaspbianを利用
- NOOBSを利用したOSのインストールの仕方については省略。ネットにたくさん情報があるので他のサイトでググってください。
Rasbianのターミナルログイン設定
- ネットワークの設定
- HDMIケーブルでテレビやモニターにつなげた状態で、WifiやLANケーブル接続でインターネットにつながっていることを確認
- 画面の設定メニューから、ネットワーク設定でsshを許可(重要)
- 自分のIPアドレスを確認(LANケーブルの場合はeth0の192.168.1.2がラズパイのアドレスですね)
-
$ ifconfig
-
eth0 Link encap:Ethernet HWaddr 00:40:CA:5E:12:48 net addr:192.168.1.2 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1493384 errors:0 dropped:0 overruns:0 frame:0 TX packets:336350 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:580470237 (553.5 Mb) TX bytes:52962419 (50.5 Mb) Interrupt:3 Memory:f8500000-f8510000 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:8125 errors:0 dropped:0 overruns:0 frame:0 TX packets:8125 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:449302 (438.7 Kb) TX bytes:449302 (438.7 Kb)
- SSH接続
- 他の端末(Macbook Air)からSSHで接続できるかを確認。以下のsshコマンドで接続できればOK。ちなみにデフォルトのパスワードは”raspberry”です。
-
% ssh pi@192.168.1.2
-
Using username "pi". pi@192.168.0.2's password: The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Sat Apr 15 16:58:24 2017 SSH is enabled and the default password for the 'pi' user has not been changed. This is a security risk - please login as the 'pi' user and type 'passwd' to set a new password. pi@raspberrypi:~ $
- セキュリティ対策
- SSHのパスワード認証を禁止にして公開鍵認証に切り替えることを推奨。外部からのBitcoinサーバーへのアクセスを許可するのでセキュリティを考慮したほうがよいでしょう。私は自宅外からもアクセスしたいので公開鍵認証のみアクセス可能にしました。(設定方法はググってみて下さい。後日加筆するかも)
Raspbian OSのカスタマイズ
- コンフィグコンソールを起動して、Raspbian OSをカスタマイズとアップデートします。
pi@raspberrypi:~ $ sudo raspi-config
- “3 Boot Options”でCLI(コンソール)でのブートに変更。もうDesktopは使わないので。
- “5 Internationalisation Options”を選択しタイムゾーンを変更。
- “7 Advanced Options” -> select “Memory Split”を選択し、GPUのメモリ割り当てを64 を 16へ変更。
- ”8 Update”でソフトウェアのアップデート。
- 設定を終了したら最後にラズパイをリブートする
SWAP領域の拡張
ラズパイのメモリ量では、最初のブロックチェーンの同期時にメモリが足りなくbitcoindがクラッシュすることが多発するらしいので、SWAPを増やしたほうが良いようです。
$ sudo vi /etc/dphys-swapfile
スワップサイズを1000へ変更
CONF_SWAPSIZE=1000
そして以下のコマンドを実行してスワップ領域を変更
$ sudo dphys-swapfile setup $ sudo dphys-swapfile swapon
Bitcoin Coreのダウンロード&コンパイル
ここではBitcoin Coreをコンソールで実行します。GUI版(Bitcoin-qt)を使いたい場合は少し追加作業が必要なのでご注意を。
Bitcoin Coreをダウンロードする前に、まずはインストールされているパッケージを最新に更新
$ sudo apt-get update $ sudo apt-get upgrade -y $ sudo apt-get dist-upgrade (ディストリビューションを更新する場合)
Bitcoin Coreのコンパイルに必要なパッケージをまとめてインストール
$ sudo apt-get install autoconf libevent-dev libtool libssl-dev libboost-all-dev libminiupnpc-dev -y
gitをダウンロード
$ sudo apt-get install git -y
bitcoin-qtも使いたい場合は以下のパッケージもインストール
$ sudo apt-get install qt4-dev-tools libprotobuf-dev protobuf-compiler libqrencode-dev -y
Bitcoin Coreをインストールするフォルダを作成
$ mkdir ~/bin $ cd ~/bin
BitCoin Coreの現時点の最新版(0.14)をゲットしてインストール
$ cd ~/bin $ git clone -b 0.14 https://github.com/bitcoin/bitcoin.git $ cd bitcoin/ $ ./autogen.sh
Bitcoin-qt/Wallet機能なしでConfigure
$ ./configure --enable-upnp-default --disable-wallet
そしてmakeする。私は2時間以上かかりましたのでしばらくほっておきます。
$ make -j2
最後にインストール
$ sudo make install
お疲れ様でした!
Bitcoin Coreの設定
Bitcoinブロックチェーン用のフォルダを作成
$ mkdir ~/bitcoinData
USBフラッシュメモリーをラズパイに差し込む。そしてしばらく待ってから以下のコマンドを実行
$ sudo blkid /dev/sda1: UUID="B15E-4649" TYPE="vfat"
接続されているメモリのデバイス名とタイプ等が表示されるのでそれをもとに/etc/fstabを編集する。
$ sudo vi /etc/fstab
以下の例に従ってfstabにUSBメモリのエントリを追加する
/dev/sda1 /home/pi/bitcoinData vfat uid=pi,gid=pi,umask=0022,sync,auto,nosuid,rw,nouser 0 0
そしてmountコマンドでUSBメモリをマウント
$ sudo mount -a
$ df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda1 122488576 62553568 59935008 52% /home/pi/bitcoinData
上記例のように/home/pi/bitcoinDataにマウントされていれば成功!
Bitcoin Coreの起動・ブロックチェーンのダウンロード
bitcoindを起動する前にコンフィグファイルを作成します。
$ cd ~/bitcoinData $ vi bitcoin.conf
次のrpcのエントリを作成
rpcuser=bitcoinrpc
rpcpassword=(適当に長いパスワード)
次にbitcoindがあるフォルダにパスを通しておきます。バイナリはコンパイルされたフォルダに置いたままなのでそこにパスを通します。/usr/local/binにバイナリを移動してもよいと思います。
$ vi ~/.profile
にbitcoindのあるフォルダを追加
/home/pi/bin/bitcoin/src
ついでに、bitcoin-cliコマンドを実行するときに、毎回datadirを指定するのが面倒なので、aliasを作って置いた方が楽かも
$ vi ~/.bashrc
alias bitcoin-cli='bitcoin-cli -datadir=/home/pi/bitcoinData'
そしてsourceしておきます
$ source ~/.profile $ source ~/.bashrc
いよいよビットコインのサーバーを起動します。
$ bitcoind -datadir=/home/pi/bitcoinData -daemon
ブロックチェーンを同期し始めているので、ブロックの同期状況を確認します。bitcoindと話すために標準のbitcoinクライアント (bitcoin-cli)を使います。
$ bitcoin-cli getinfo
このようにブロックの情報がひょうじされたら終了。私のラズパイは起動してから一週間くらいたってますがまだブロックチェーンの同期が終わっていません。気長に待ちましょう。
BitNodeへ登録・サーバーの監視
自分のサーバーをグローバルIPを確認。パソコンから ここをクリック。
https://bitnodes.21.co/へアクセスしてビットコインのノード一覧に登録しましょう
サイトのIPアドレス部分に自分のグローバルIPを入力し” Check Node”を実行
自分のノードが登録されたら、自分のemailを登録する
これでサーバーが5分ごとに監視されて、サーバーがダウンした場合など自分にメールが来るので便利です。