Go Ethereum(Geth)はGoで構築されたイーサリアムの実行クライアントです。
初期設定
- インストールに必要なパッケージをインストールする。
sudo apt install -y curl
- Gethの公式サイトを開き、「Geth X.XX.XX for Linux」のボタンを右クリックし、URLをコピーする。
- Gethのバイナリをダウンロードする。上記で取得した最新のURLを使用してください。
cd ~
curl -LO https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-X.XX.XX-XXXXXXXX.tar.gz
- 解凍して
/usr/local/bin
にコピーし、不要になったファイルを削除する。
tar xvf geth-linux-amd64-X.XX.XX-XXXXXXXX.tar.gz
cd geth-linux-amd64-X.XX.XX-XXXXXXXX
sudo cp geth /usr/local/bin
/usr/local/bin/geth version
cd ~
rm -r geth-linux-amd64-X.XX.XX-XXXXXXXX
rm geth-linux-amd64-X.XX.XX-XXXXXXXX.tar.gz
- Geth実行用のユーザー
goeth
を作成する。
sudo useradd --no-create-home --shell /bin/false goeth
- ノードを保存するディレクトリを作成し、ユーザー
goeth
にアクセス許可を与える。
sudo mkdir -p /var/lib/goethereum
sudo chown -R goeth:goeth /var/lib/goethereum
- サーバー起動時にGethが自動的に開始されるためのserviceファイルを作成する。
sudo nano /etc/systemd/system/geth.service
- 以下を入力し、保存する。(Ctrl + O で保存、Ctrl + X で閉じる)
[Unit]
Description=Go Ethereum
After=network.target
Wants=network.target
[Service]
User=goeth
Group=goeth
Type=simple
Restart=always
RestartSec=5
ExecStart=/usr/local/bin/geth \
--datadir /var/lib/goethereum \
--http \
--http.addr "0.0.0.0" \
--maxpeers 15 \
--cache 16000 \
--authrpc.jwtsecret /var/lib/jwtsecret/jwt.hex
[Install]
WantedBy=default.target
※ExecStart=
のパラメータに--maxpeers 20
を追加すればデータの送受信を抑えられます。デフォルトは50に設定されています。低くしすぎると同期に支障をきたす場合があります。
※メモリを多く搭載している場合は、gethの利用するメモリ容量を--cache 16000
(デフォルトは4096)のように増やしてあげるといいです。メモリ設定を高くしすぎても、gethは自動的に安全圏までしか使わない仕様になってます。
Holeskyテストネット用
[Unit]
Description=Go Ethereum
After=network.target
Wants=network.target
[Service]
User=goeth
Group=goeth
Type=simple
Restart=always
RestartSec=5
ExecStart=/usr/local/bin/geth \
--holesky \
--datadir /var/lib/goethereum \
--http \
--http.addr "0.0.0.0" \
--maxpeers 15 \
--cache 16000 \
--authrpc.jwtsecret /var/lib/jwtsecret/jwt.hex
[Install]
WantedBy=default.target
- daemonをリロードし、Gethがちゃんと動くか確認する。今後上記のserviceファイルに変更を加えることがあれば、毎回daemonをリロードして変更を適応するようにしてください。
sudo systemctl daemon-reload
sudo systemctl start geth
- サーバー再起動時にGethが自動的に開始されるようにする。
※サーバーをシャットダウンまたは再起動する際は、必ずsudo systemctl stop geth
でGethを正常に終了させてからにしてください。
sudo systemctl enable geth
- ログで同期状態を確認する。(Ctrl + Cで閉じる)
sudo journalctl -fu geth
※ビーコンノードが設定されていないと同期は開始しません。
※ログにImported new potential chain segment
が表示されるようになれば同期完了です。
アップデート方法
- サーバーのバージョンと公式サイトのバージョンを確認し、アップデートの必要があるか確認する。
/usr/local/bin/geth version
- Gethの公式サイトを開き、「Geth X.XX.XX for Linux」のボタンを右クリックし、URLをコピーする。
- Gethをダウンロードする。上記で取得した最新のURLを使用してください。
cd ~
curl -LO https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-X.XX.XX-XXXXXXXX.tar.gz
- 実行中のgethを止める。
sudo systemctl stop geth
- 解凍して
/usr/local/bin
にコピーし、不要になったファイルを削除する。
tar xvf geth-linux-amd64-X.XX.XX-XXXXXXXX.tar.gz
cd geth-linux-amd64-X.XX.XX-XXXXXXXX
sudo cp geth /usr/local/bin
/usr/local/bin/geth version
cd ~
rm -r geth-linux-amd64-X.XX.XX-XXXXXXXX
rm geth-linux-amd64-X.XX.XX-XXXXXXXX.tar.gz
- gethを起動する。
sudo systemctl start geth
- gethがちゃんと動いていることを確認する。
sudo journalctl -fu geth