LoginSignup
11
7

[Symbol]ラズパイでノードを運用してみよう(Client構築編)

Last updated at Posted at 2022-04-08

Raspberry PiでSymbolのdualノードを構築、ハーベスト設定、HTTPS化、運用まで。
本記事ではclientインストールまでを扱います。
Client構築編:Clientインストールまで <- 今ここ
Client設定編:ハーベスト設定まで
Rest構築編:HTTPS化まで
メンテナンス編:HA構成、アップグレードetc

前提知識

  • symbol-bootstrapでノードを運用できる
  • ノード運用においての専門用語を理解している
  • OSに関する基礎知識がある

準備する機器

  • Raspberry Pi 4B 8GBモデル
  • SSD 1TBくらいあるとうれしい
  • その他周辺機器(キーボード、モニタ、SSDとラズパイ繋ぐアダプタ、ラズパイ電源ケーブル、etc)

バージョン情報

執筆時点で構築するバージョンはこのようになります。
Catapult Client: 1.0.3.3
※今はまだ、バージョンを重ねるごとに構築手順やディレクトリ構造が変わっています。このバージョンでない場合、手順が異なる可能性が高いのでご了承ください。

Ubuntu Server 20.04を構築する

OSインストール

今回、Ubuntu ServerはUSBブートで構築します。
結局SSDは繋ぎますし、OSごとSSDにあるほうが高速です。

Ubuntu20.04のUSBブートは公式から落としてきたイメージをそのままでは起動できません。
下記からイメージを落としてきます。

今ではRaspberry Pi ImagerがあるのでOS起動まで楽になりました。
※apt upgradeでカーネルが更新されるとOSが起動しなくなる恐れがあります。
apt upgrade後は必ずこのコマンドを実行しましょう。

/boot/firmware/
zcat vmlinuz > vmlinux

メモリスワップ設定

現状、8GBメモリあれば十分ですが、将来を考えると心もとないです。
下記を参考にスワップ領域を確保しておきましょう。私は追加で8GB確保しています。(こんなにはいらないと正直思う)

File Descriptor

/etc/security/limits.conf
* hard nofile 65535
* soft nofile 65535
root hard nofile 65535
root soft nofile 65535

Catapult Clientを構築する

必要なものをインストール

aptでインストールしていきます。github上のドキュメントではこのようになっています。

apt install git gcc g++ cmake curl libssl-dev ninja-build pkg-config python3-pip

後にコンパイル中 gtest.hが見つからないとエラーが出ると思います。追加でlibgtest-devをインストールします。

apt install libgtest-dev

(追記)v1.0.3.4だとうまくいかなくなりました。パッケージは削除しgitから最新のgoogle testをインストールしたところうまくいきました。

Clientインストール

githubからソースをダウンロードします。私は/home/ubuntu/にダウンロードしインストール先としました。
※バージョンのタグを指定しましょう。最新で実施するとテストされておらず未知のエラーに遭遇する場合があります。

/home/ubuntu/
git clone https://github.com/symbol/symbol.git -b client/catapult/v1.0.3.3

依存関係をインストールしていきます。/home/ubuntu/symbol/client/catapult/に_depsディレクトリが出来上がります。

/home/ubuntu/
cd symbol/client/catapult
PYTHONPATH="../../jenkins/catapult/" python3 "../../jenkins/catapult/installDepsLocal.py" \
	--target "./_deps" \
	--versions "../../jenkins/catapult/versions.properties" \
	--download \
	--build

インストールした依存関係へパスを通します。執筆時点でこの手順がgithub上のドキュメントから消えてしまったのですが、まだ必要そうです。

export CAT_DEPS_DIR=/home/ubuntu/symbol/client/catapult/_deps
export LD_LIBRARY_PATH=$CAT_DEPS_DIR/boost/lib:$CAT_DEPS_DIR/facebook/lib:$CAT_DEPS_DIR/google/lib:$CAT_DEPS_DIR/mongodb/lib:$CAT_DEPS_DIR/zeromq/lib

再起動後もパス設定が残るように.bashrcに書き込んでおきます。

/home/root/.bashrc
...
export CAT_DEPS_DIR=/home/ubuntu/symbol/client/catapult/_deps
export LD_LIBRARY_PATH=$CAT_DEPS_DIR/boost/lib:$CAT_DEPS_DIR/facebook/lib:$CAT_DEPS_DIR/google/lib:$CAT_DEPS_DIR/mongodb/lib:$CAT_DEPS_DIR/zeromq/lib

Clientのソースをコンパイル、インストールします。

/home/ubuntu/symbol/client/catapult/
mkdir -p _build && cd _build
BOOST_ROOT="$(realpath ../_deps/boost)" cmake .. \
	-DCMAKE_BUILD_TYPE=RelWithDebInfo \
	-DCMAKE_PREFIX_PATH="$(realpath ../_deps/facebook);$(realpath ../_deps/google);$(realpath ../_deps/mongodb);$(realpath ../_deps/zeromq)" \
	-GNinja
ninja publish
ninja

※コンパイルに一晩かかります。ninja実行後はPCつけたまま寝ましょう
Clientがインストールされたか確認します。

/home/ubuntu/symbol/client/catapult/_build/bin
./catapult.tools.address --help
11
7
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
11
7