13
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

RaspberryPi でブロックチェーンノードを構築する方法

Last updated at Posted at 2023-08-28

この記事ではRaspberryPi4でブロックチェーンノードを構築して運用する方法を紹介します。

機器

機種 備考
Raspberry Pi 4B Raspberry Pi 4 AmazonまたはRSオンライン で購入
SDカード できるだけ大容量なもの(2022.07現在で約80Gほど使用しています)

※手元の環境では、1TBのSSDをUSBブートで起動して使っています。

手順

まず、ラズパイOSのイメージの準備から行います。
ライズパイのイメージの準備はいいよって方は「OSの初期設定」まで飛ばして下さい。

SDカードに起動イメージを焼く

OSはUbuntu20.04.4LTSを使用します。(恐らく22.04でも動くと思いますが確証はありません)

$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.4 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.4 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal

Raspberry Piに公式のイメージ書き込みツール「Raspberry Pi Imager」を使ってOSイメージを書き込みます。
公式ページより「Raspberry Pi Imager」をダウンロードします。

起動するとこんな感じの画面が表示されます(バージョンはダウンロードタイミングによって変わります)
image.png

「OSを選ぶ」を押すと下記のようなリストが表示されます。

image.png

3番めの「Other general-purpose OS」を選びます。

image.png

「Ubuntu」を選択。
リストが表示されたら少し下の方へスクロールすると「Ubuntu Server 20.04.4 LTS(RPi 3/4/400」というのがあるのでそれをクリックします。(64bit版を選択してください)

image.png

OSのイメージを選択すると最初の画面に戻ります。
OSのところが「UBUNTU SERVER 20.04.4LTS(RPI 3/4/400)」となっていることを確認して下さい。
image.png

「ストレージを選ぶ」をクリックします。
SDカードをPCに接続していると下記のような状態になると思うので、書き込むストレージを選択します。

image.png

ストレージを選択すると最初の画面に戻ります。
選択したOSとストレージが正しいことを確認したら「書き込む」をクリックしてOSのイメージを書き込みます。

image.png

OSの初期設定

OSの初期設定を行います。
細かなことは下記の記事がとても参考になるのでそちらを参照下さい。全て設定する必要はないと思いますので自身に必要な部分のみ設定して下さい。
(※今回はパッケージ自動アップデートは切っておいたほうが良いです)

上記以外の設定(パッケージのインストール等)を下記で行います。

Dockerインストール

まずはDockerをインストールします。
現在Dockerはarm64環境でも動作するのでUbuntu標準のパッケージから導入してみました。

$ sudo apt install --yes docker.io

インストールが完了したらバージョンを確認します。

$ sudo docker version

上記コマンドを打ってバージョン情報が表示されればOKです。

image.png

DcokerをUbuntuユーザー(root以外)で使用できる様にする

Dockerをインストールした状態ではRootユーザーでDockerを実行する必要があるので下記のコマンドを実行してUbuntuユーザーでも使用出来るようにします。

$ sudo usermod -aG docker ${USER}

一旦、コンソールからログアウトするか下記のコマンドで新しいグループメンバーシップを適用します。

$ su - ${USER}

dcoker-composeのインストール

$ sudo apt install docker-compose

Nodejsとnpmをインストールする

Symbolノードを構築する上でnpmが必要になるのでNodejsとnpmをインストールします。

$ sudo apt install nodejs npm

Symbol-bootstrapをインストールする

Symbol-bootstrapはSymbolノードを構築するためのツールです。

$ npm install -g symbol-bootstrap

ブロックチェーンノードの構築

さて、事前準備が全て整ったのでこれよりブロックチェーンノード(Symbolノード)を構築していきます。

ただ、ここで1つ注意点があります。
先程インストールしたSymbol-bootstrapはlinux/amd64しかサポートしていません。
ラズパイのCPUアーキテクチャはarm64です。
ですのでこのままではノードの起動に失敗してしまうので、symbol-bootstrapの設定ファイルを修正します。

2022/09/19追記
Symbol-bootstrapで参照するDockerイメージの修正についての作業は不要ということが判明しました。

Symbol-bootstrapで参照するDockerイメージの修正(※この作業は不要です)

まず、npmのグローバルインストール先を調べます。

$ npm list -g | head -1

私の場合は下記のように表示されます。

$ /usr/local/lib

下記のファイルを修正します。(ファイルのパスは上記で確認したインストール先を指定して下さい)

$ sudo vi /usr/local/lib/node_modules/symbol-bootstrap/presets/shared.yml 

symbolServerImageとsymbolRestImageを変更します。
(ishidad2/symbol-server:gcc-10-1.0.3.3とishidad2/symbol-rest:2.4.0は私のDockerHubのリポジトリです)
参考:こちらの記事で作成したイメージです。

-symbolServerImage: symbolplatform/symbol-server:gcc-10-1.0.3.3
+symbolServerImage: ishidad2/symbol-server:gcc-10-1.0.3.3
-symbolRestImage: symbolplatform/symbol-rest:2.4.0
+symbolRestImage: ishidad2/symbol-rest:2.4.0

67行目から70行目にかけて修正。

image.png

修正は以上です。

ノードを起動する

これ以降は通常のSymbol-bootstrapでのノード構築と同じになります。

コンフィグの作成

コンフィグを作成する際のカスタムプリセットに以下の記述をします。(その他必要がある設定は各自してください)


nodes:
    -
        host: ****.localhost
        friendlyName: **********
        mainPrivateKey: *****************
        vrfPrivateKey: ****************
        remotePrivateKey: ****************
        transportPrivateKey: ****************

# httpsProxiesは必要に応じて有効化してください
# httpsProxies:
#            - excludeDockerService: false

maxChainBytesPerSyncAttempt: 50MB
messageSynchronizationMaxResponseSize: 10MB
blockDisruptorMaxMemorySize: 1000MB

# 以下でコンテナイメージを置き換えます
symbolRestImage: ishidad2/symbol-rest:2.4.2
symbolServerImage: ishidad2/symbol-server:gcc-1.0.3.5

※「******」の部分はご自身の環境に合わせて設定してください。

例)

$ symbol-bootstrap config -p <preset> -a <assembly> -c <custom_parameters_file.yml>

実際には下記のような感じになります。

$ symbol-bootstrap config -p mainnet -a dual -c custom_parameters.yml

詳しい情報はこちら(PDF)を参考にしてください。特にcustom_parameters.ymlはリンク先の「2. ノード設定ファイルの生成」を参考に作成して下さい。(重要なファイルですが作成しなくても起動はできます)

必要な Docker ファイルを準備

$symbol-bootstrap compose

一応イメージを確認。
ここまでエラーなく実行できていれば、targetというフォルダが作成されているはずです。

$ cat target/docker/docker-compose.yml
...

 node:
        user: '1000:1000'
        container_name: node
        image: ishidad2/symbol-server:gcc-10-1.0.3.3
        command: /bin/bash /symbol-commands/start.sh /usr/catapult ./data server broker node NORMAL true
        stop_signal: SIGINT
...

 rest-gateway:
        container_name: rest-gateway
        user: '1000:1000'
        image: ishidad2/symbol-rest:2.4.0
        command: npm start --prefix /app/catapult-rest/rest /symbol-workdir/rest.json
        stop_signal: SIGINT
...

nodeとrest-gatewayのimage名が指定したイメージとなっていればOKです。

確認が取れたら起動します。

$ symbol-bootstrap run -d

色々とログが流れノードが起動します。途中パスワードを入力する画面になると思うので、適当なパスワードを設定して下さい(起動の度必要になるので忘れないで下さい)
正常に起動したかどうかのチェックは下記のコマンドを実行します。

$ symbol-bootstrap healthCheck

下記のようにヘルスチェックでエラーがでなければ成功です。

image.png

その他の確認の仕方として、自身のサーバーへアクセスして確認することもできます。

http://IPアドレス(またはFQDN):3000/node/info

ノードにアクセスして情報が表示されればOKです。

以上、RaspberryPi でブロックチェーンノードを構築する方法を終わります。

補足

ラズパイ用のイメージはこちらで公開しています。

13
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?