---
title: 独自のイーサリアムノードを立ち上げる
description: イーサリアムクライアントの独自のインスタンスを実行するための一般的な概要です。
lang: ja
sidebarDepth: 2
---

独自のノードを実行することで、さまざまなメリットが得られ、新たな可能性が開かれ、エコシステムのサポートに役立ちます。このページでは、独自のノードを立ち上げ、[イーサリアム](/)のトランザクションの検証に参加する手順を説明します。

[マージ](/roadmap/merge)以降、イーサリアムノードを実行するには、**実行レイヤー（EL）**クライアントと**コンセンサス・レイヤー（CL）**クライアントの2つのクライアントが必要になることに注意してください。このページでは、イーサリアムノードを実行するためにこれら2つのクライアントをインストール、設定、接続する方法を説明します。

## 前提条件 {#prerequisites}

イーサリアムノードとは何か、なぜクライアントを実行するのかを理解しておく必要があります。これについては、[ノードとクライアント](/developers/docs/nodes-and-clients/)で説明されています。

ノードの実行について初めて学ぶ場合、または技術的でない方法を探している場合は、まず[イーサリアムノードの実行](/run-a-node)に関するユーザーフレンドリーな入門記事を確認することをお勧めします。

## アプローチの選択 {#choosing-approach}

ノードを立ち上げる最初のステップは、アプローチを選択することです。要件とさまざまな可能性に基づいて、クライアントの実装（実行クライアントとコンセンサス・クライアントの両方）、環境（ハードウェア、システム）、およびクライアント設定のパラメータを選択する必要があります。

このページでは、これらの決定について案内し、イーサリアムインスタンスを実行する最も適切な方法を見つけるお手伝いをします。

クライアントの実装を選択するには、利用可能なメインネット対応の[実行クライアント](/developers/docs/nodes-and-clients/#execution-clients)、[コンセンサス・クライアント](/developers/docs/nodes-and-clients/#consensus-clients)をすべて確認し、[クライアント・ダイバーシティ](/developers/docs/nodes-and-clients/client-diversity)について学んでください。

クライアントの[要件](#requirements)を考慮し、ソフトウェアを独自の[ハードウェアで実行するか、クラウドで実行するか](#local-vs-cloud)を決定します。

環境を準備したら、[初心者向けのインターフェース](#automatized-setup)を使用するか、高度なオプションを備えたターミナルを使用して[手動で](#manual-setup)、選択したクライアントをインストールします。

ノードが実行され同期されたら、[使用する](#using-the-node)準備が整いますが、その[メンテナンス](#operating-the-node)には常に注意を払うようにしてください。

![クライアントのセットアップ](./diagram.png)

### 環境とハードウェア {#environment-and-hardware}

#### ローカルまたはクラウド {#local-vs-cloud}

イーサリアムクライアントはコンシューマー向けのコンピューターで実行でき、マイニングマシンのような特別なハードウェアは必要ありません。したがって、ニーズに基づいてノードをデプロイするためのさまざまなオプションがあります。
簡単に言うと、ローカルの物理マシンとクラウドサーバーの両方でノードを実行することを考えてみましょう。

- クラウド
  - プロバイダーは高いサーバー稼働率と静的なパブリックIPアドレスを提供します
  - 専用サーバーまたは仮想サーバーを取得する方が、自分で構築するよりも快適な場合があります
  - トレードオフは、サードパーティ（サーバープロバイダー）を信頼することです
  - フル・ノードに必要なストレージサイズのため、レンタルサーバーの価格が高くなる可能性があります
- 独自のハードウェア
  - よりトラストレスで主権的なアプローチです
  - 1回限りの投資で済みます
  - 事前設定されたマシンを購入するオプションがあります
  - マシンとネットワークを物理的に準備、保守し、潜在的なトラブルシューティングを行う必要があります

どちらのオプションにも、上記にまとめたような異なる利点があります。クラウドソリューションを探している場合、多くの従来のクラウドコンピューティングプロバイダーに加えて、ノードのデプロイに特化したサービスもあります。ホスト型ノードのその他のオプションについては、[サービスとしてのノード](/developers/docs/nodes-and-clients/nodes-as-a-service/)を確認してください。

#### ハードウェア {#hardware}

ただし、検閲耐性のある分散型ネットワークは、クラウドプロバイダーに依存すべきではありません。代わりに、独自のローカルハードウェアでノードを実行する方が、エコシステムにとって健全です。[推定](https://www.ethernodes.org/networkType/cl/Hosting)によると、ノードの大部分がクラウド上で実行されており、これが単一障害点になる可能性があります。

イーサリアムクライアントは、コンピューター、ラップトップ、サーバー、さらにはシングルボードコンピューターでも実行できます。パーソナルコンピューターでクライアントを実行することも可能ですが、ノード専用のマシンを用意することで、メインのコンピューターへの影響を最小限に抑えつつ、パフォーマンスとセキュリティを大幅に向上させることができます。

独自のハードウェアを使用するのは非常に簡単です。多くのシンプルなオプションに加えて、技術的な知識がある人向けの高度なセットアップもあります。それでは、マシンでイーサリアムクライアントを実行するための要件と方法を見ていきましょう。

#### 要件 {#requirements}

ハードウェア要件はクライアントによって異なりますが、ノードは同期を維持するだけでよいため、一般的にはそれほど高くありません。はるかに多くの計算能力を必要とするマイニングと混同しないでください。ただし、より強力なハードウェアを使用すると、同期時間とパフォーマンスは向上します。

クライアントをインストールする前に、コンピューターにそれを実行するのに十分なリソースがあることを確認してください。最小要件と推奨要件は以下で確認できます。

ハードウェアのボトルネックは主にディスク容量です。イーサリアムのブロックチェーンの同期は非常にI/O集約的であり、多くのスペースを必要とします。同期後でも数百GBの空き容量がある**ソリッドステートドライブ（SSD）**を用意するのが最適です。

データベースのサイズと初期同期の速度は、選択したクライアント、その設定、および[同期ストラテジー](/developers/docs/nodes-and-clients/#sync-modes)によって異なります。

また、インターネット接続が[帯域幅の制限](https://wikipedia.org/wiki/Data_cap)を受けていないことを確認してください。初期同期やネットワークにブロードキャストされるデータが制限を超える可能性があるため、従量制ではない接続を使用することをお勧めします。

##### オペレーティングシステム

すべてのクライアントは、主要なオペレーティングシステム（Linux、macOS、Windows）をサポートしています。つまり、自分に最も適したオペレーティングシステム（OS）を搭載した通常のデスクトップまたはサーバーマシンでノードを実行できます。潜在的な問題やセキュリティの脆弱性を回避するために、OSが最新であることを確認してください。

##### 最小要件

- 2コア以上のCPU
- 16 GBのRAM（安定性のためには32 GBを推奨）
- 2 TBのNVMe SSD（2027年までに超過する可能性が高いです。[イーサリアムノードに適したSSDとそうでないSSD](https://gist.github.com/yorickdowne/f3a3e79a573bf35767cd002cc977b038)について詳しくお読みください）
- 25 MBit/s以上の帯域幅

##### 推奨スペック

ノードオペレーター向けの現在のハードウェアガイダンスは、[EIP-7870](https://eips.ethereum.org/EIPS/eip-7870)で特定されています。フル・ノードの場合、以下が推奨されます。

- 4コア以上の高速CPU（バリデータの場合は8コア以上）
- 32 GBのRAM（安定性を確保するため、バリデータの場合は64 GBを推奨）
- 4 TBのNVMe SSD（DRAMレスおよびQLCドライブは推奨されません）
- 下り50 MBit/s / 上り15 MBit/s以上の帯域幅（バリデータの場合は上り25 MBit/s以上）

選択する同期モードとクライアントによって必要なスペースは異なりますが、各クライアントに必要なディスク容量の目安を以下に示します。

| クライアント | ディスクサイズ（スナップ同期） | ディスクサイズ（フルアーカイブ） |
| ---------- | --------------------- | ------------------------ |
| ベス       | 800GB以上                | 12TB以上                    |
| エリゴン     | 該当なし                   | 2.5TB以上                   |
| ゲス       | 500GB以上                | 12TB以上                    |
| ネザーマインド | 500GB以上                | 12TB以上                    |
| レス       | 該当なし                   | 2.2TB以上                   |

- 注：エリゴンとレスはスナップ同期を提供していませんが、フルプルーニングは可能です（エリゴンは約2TB、レスは約1.2TB）。

コンセンサス・クライアントの場合、必要なスペースはクライアントの実装や有効になっている機能（バリデータ・スラッシャーなど）によっても異なりますが、一般的にビーコンデータ用にさらに200GBが必要になると考えてください。バリデータの数が多いと、帯域幅の負荷も大きくなります。[コンセンサス・クライアントの要件の詳細については、こちらの分析](https://mirror.xyz/0x934e6B4D7eee305F8C9C42b46D6EEA09CcFd5EDc/b69LBy8p5UhcGJqUAmT22dpvdkU-Pulg2inrhoS9Mbc)をご覧ください。

#### プラグアンドプレイソリューション {#plug-and-play}

独自のハードウェアでノードを実行する最も簡単なオプションは、プラグアンドプレイボックスを使用することです。ベンダーが提供する事前設定済みのマシンは、注文、接続、実行という最も簡単なエクスペリエンスを提供します。すべてが事前設定されており、ソフトウェアを監視および制御するための直感的なガイドとダッシュボードを使用して自動的に実行されます。

- [DAppNode](https://dappnode.io/)
- [Avado](https://ava.do/)

#### シングルボードコンピューター上のイーサリアム {#ethereum-on-a-single-board-computer}

イーサリアムノードを実行する簡単で安価な方法は、Raspberry PiのようなARMアーキテクチャであっても、シングルボードコンピューターを使用することです。[Ethereum on ARM](https://ethereum-on-arm-documentation.readthedocs.io/en/latest/)は、Raspberry Piやその他のARMボード向けに、複数の実行クライアントとコンセンサス・クライアントの実行しやすいイメージを提供しています。

このような小型で手頃な価格の効率的なデバイスは、自宅でノードを実行するのに理想的ですが、パフォーマンスが限られていることに注意してください。

## ノードの立ち上げ {#spinning-up-node}

実際のクライアントのセットアップは、自動ランチャーを使用するか、クライアントソフトウェアを直接セットアップして手動で行うことができます。

上級者でないユーザーには、インストールをガイドし、クライアントのセットアッププロセスを自動化するソフトウェアであるランチャーを使用するアプローチをお勧めします。ただし、ターミナルの使用経験がある場合は、手動セットアップの手順も簡単に実行できるはずです。

### ガイド付きセットアップ {#automatized-setup}

複数のユーザーフレンドリーなプロジェクトが、クライアントのセットアップエクスペリエンスを向上させることを目指しています。これらのランチャーは、クライアントの自動インストールと設定を提供し、一部のランチャーは、ガイド付きセットアップとクライアントの監視のためのグラフィカルインターフェースも提供しています。

数回のクリックでクライアントをインストールおよび制御するのに役立つプロジェクトをいくつか紹介します。

- [DAppNode](https://docs.dappnode.io/docs/user/getting-started/choose-your-path) - DAppNodeはベンダーのマシンに付属しているだけではありません。ソフトウェア、実際のノードランチャー、および多くの機能を備えたコントロールセンターは、任意のハードウェアで使用できます。
- [EthPillar](https://www.coincashew.com/coins/overview-eth/ethpillar) - フル・ノードをセットアップする最も迅速で簡単な方法です。ワンライナーのセットアップツールとノード管理TUI。無料。オープンソース。ソロ・ステーキングを行う人々によるイーサリアムのための公共財。ARM64およびAMD64をサポート。
- [eth-docker](https://eth-docker.net/) - 簡単で安全なステーキングに焦点を当てたDockerを使用した自動セットアップ。基本的なターミナルとDockerの知識が必要で、少し上級のユーザーにお勧めです。
- [Stereum](https://stereum-dev.github.io/ethereum-node-web-docs) - GUIセットアップガイド、コントロールセンター、およびその他の多くの機能を備えた、SSH接続を介してリモートサーバーにクライアントをインストールするためのランチャー。
- [Sedge](https://docs.sedge.nethermind.io/docs/intro) - CLIウィザードを使用してDocker設定を自動的に生成するノードセットアップツール。ネザーマインドによってGoで書かれています。
- [Chainstack Self-Hosted](https://docs.chainstack.com/docs/self-hosted/introduction) - Kubernetes上に実行クライアントとコンセンサス・クライアントをデプロイするためのWeb UIおよびCLI。スナップショットブートストラップと組み込みの監視が含まれています。無料。Chainstackアカウントは不要です。Chainstackによって構築されています。

### 手動でのクライアントセットアップ {#manual-setup}

もう1つのオプションは、クライアントソフトウェアを手動でダウンロード、検証、および設定することです。一部のクライアントがグラフィカルインターフェースを提供している場合でも、手動セットアップにはターミナルの基本的なスキルが必要ですが、はるかに高い汎用性を提供します。

前述のように、独自のイーサリアムノードをセットアップするには、コンセンサス・クライアントと実行クライアントのペアを実行する必要があります。一部のクライアントには、もう一方の種類のライト・クライアントが含まれており、他のソフトウェアを必要とせずに同期できる場合があります。ただし、完全なトラストレスな検証には両方の実装が必要です。

#### クライアントソフトウェアの入手 {#getting-the-client}

まず、好みの[実行クライアント](/developers/docs/nodes-and-clients/#execution-clients)と[コンセンサス・クライアント](/developers/docs/nodes-and-clients/#consensus-clients)のソフトウェアを入手する必要があります。

オペレーティングシステムとアーキテクチャに合った実行可能アプリケーションまたはインストールパッケージをダウンロードするだけです。ダウンロードしたパッケージの署名とチェックサムは常に検証してください。一部のクライアントは、インストールと更新を容易にするためにリポジトリまたはDockerイメージも提供しています。すべてのクライアントはオープンソースであるため、ソースからビルドすることもできます。これはより高度な方法ですが、場合によっては必要になることがあります。

各クライアントのインストール手順は、上記のクライアントリストにリンクされているドキュメントに記載されています。

以下は、ビルド済みのバイナリやインストール手順を確認できるクライアントのリリース・ページです。

##### 実行クライアント

- [ベス](https://github.com/hyperledger/besu/releases)
- [エリゴン](https://github.com/ledgerwatch/erigon/releases)
- [ゲス](https://geth.ethereum.org/downloads)
- [ネザーマインド](https://downloads.nethermind.io/)
- [レス](https://reth.rs/installation/installation.html)

クライアント・ダイバーシティが[実行レイヤーにおける課題](/developers/docs/nodes-and-clients/client-diversity/#execution-layer)であることにも注意が必要です。読者の皆様には、マイノリティの実行クライアントを実行することを検討することをお勧めします。

##### コンセンサス・クライアント

- [ライトハウス](https://github.com/sigp/lighthouse/releases/latest)
- [ロードスター](https://chainsafe.github.io/lodestar/run/getting-started/installation#build-from-source/)（ビルド済みのバイナリは提供されておらず、Dockerイメージのみ、またはソースからビルドする必要があります）
- [ニンバス](https://github.com/status-im/nimbus-eth2/releases/latest)
- [プリズム](https://github.com/prysmaticlabs/prysm/releases/latest)
- [テク](https://github.com/ConsenSys/teku/releases)

[クライアント・ダイバーシティ](/developers/docs/nodes-and-clients/client-diversity/)は、バリデータを実行するコンセンサスノードにとって重要です。バリデータの大部分が単一のクライアント実装を実行している場合、ネットワークのセキュリティが危険にさらされます。したがって、マイノリティのクライアントを選択することを検討することをお勧めします。

[最新のネットワーククライアントの使用状況を確認](https://clientdiversity.org/)し、[クライアント・ダイバーシティ](/developers/docs/nodes-and-clients/client-diversity)について詳しく学んでください。

##### ソフトウェアの検証

インターネットからソフトウェアをダウンロードする際は、その整合性を検証することをお勧めします。この手順はオプションですが、特にイーサリアムクライアントのような重要なインフラストラクチャの一部については、潜在的な攻撃ベクトルを認識し、それらを回避することが重要です。ビルド済みのバイナリをダウンロードした場合、それを信頼する必要があり、攻撃者が実行可能ファイルを悪意のあるものにすり替えるリスクを負うことになります。

開発者はリリースされたバイナリにPGP鍵で署名するため、作成されたソフトウェアとまったく同じものを実行していることを暗号学的に検証できます。開発者が使用する公開鍵を入手するだけでよく、これはクライアントのリリース・ページまたはドキュメントに記載されています。クライアントのリリースとその署名をダウンロードした後、[GnuPG](https://gnupg.org/download/index.html)などのPGP実装を使用して簡単に検証できます。[Linux](https://www.tecmint.com/verify-pgp-signature-downloaded-software/)または[Windows/macOS](https://freedom.press/training/verifying-open-source-software/)で`gpg`を使用してオープンソースソフトウェアを検証するチュートリアルを確認してください。

もう1つの検証方法は、ダウンロードしたソフトウェアのハッシュ（一意の暗号学的フィンガープリント）が、開発者が提供したものと一致することを確認することです。これはPGPを使用するよりもさらに簡単で、一部のクライアントはこのオプションのみを提供しています。ダウンロードしたソフトウェアでハッシュ関数を実行し、リリース・ページのものと比較するだけです。例：

```sh
sha256sum teku-22.6.1.tar.gz

9b2f8c1f8d4dab0404ce70ea314ff4b3c77e9d27aff9d1e4c1933a5439767dde
```

#### クライアントのセットアップ {#client-setup}

クライアントソフトウェアをインストール、ダウンロード、またはコンパイルした後、実行する準備が整います。これは、適切な設定で実行する必要があることを意味するだけです。クライアントは豊富な設定オプションを提供しており、さまざまな機能を有効にすることができます。

クライアントのパフォーマンスとデータ使用量に大きな影響を与える可能性のあるオプションから始めましょう。[同期モード](/developers/docs/nodes-and-clients/#sync-modes)は、ブロックチェーンデータをダウンロードして検証するさまざまな方法を表します。ノードを起動する前に、使用するネットワークと同期モードを決定する必要があります。考慮すべき最も重要なことは、クライアントが必要とするディスク容量と同期時間です。クライアントのドキュメントに注意して、どの同期モードがデフォルトであるかを判断してください。それが適していない場合は、セキュリティのレベル、利用可能なデータ、およびコストに基づいて別のものを選択してください。同期アルゴリズムとは別に、さまざまな種類の古いデータのプルーニングを設定することもできます。プルーニングにより、古いデータを削除できます。つまり、最近のブロックから到達できないステート・トライのノードを削除します。

その他の基本的な設定オプションには、たとえば、ネットワーク（メインネットまたはテストネット）の選択、RPCまたはWebSocketのHTTPエンドポイントの有効化などがあります。すべての機能とオプションは、クライアントのドキュメントに記載されています。さまざまなクライアント設定は、CLIまたは設定ファイルで対応するフラグを使用してクライアントを直接実行することで設定できます。各クライアントは少しずつ異なります。設定オプションの詳細については、常に公式ドキュメントまたはヘルプページを参照してください。

テスト目的の場合は、テストネットのネットワークのいずれかでクライアントを実行することをお勧めします。[サポートされているネットワークの概要をご覧ください](/developers/docs/nodes-and-clients/#execution-clients)。

基本的な設定で実行クライアントを実行する例は、次のセクションにあります。

#### 実行クライアントの起動 {#starting-the-execution-client}

イーサリアムクライアントソフトウェアを起動する前に、環境の準備ができているか最終確認を行ってください。たとえば、以下を確認します。

- 選択したネットワークと同期モードを考慮して、十分なディスク容量があること。
- メモリとCPUが他のプログラムによって停止されていないこと。
- オペレーティングシステムが最新バージョンに更新されていること。
- システムの時刻と日付が正しいこと。
- ルーターとファイアウォールがリスニングポートでの接続を受け入れること。デフォルトでは、イーサリアムクライアントはリスナー（TCP）ポートとディスカバリー（UDP）ポートを使用し、どちらもデフォルトで30303です。

すべてが正しく機能していることを確認するために、まずテストネットでクライアントを実行してください。

起動時にデフォルトではないクライアント設定を宣言する必要があります。フラグまたは設定ファイルを使用して、好みの設定を宣言できます。各クライアントの機能セットと設定構文は異なります。詳細については、クライアントのドキュメントを確認してください。

実行クライアントとコンセンサス・クライアントは、[Engine API](https://github.com/ethereum/execution-apis/tree/main/src/engine)で指定された認証済みエンドポイントを介して通信します。コンセンサス・クライアントに接続するには、実行クライアントは既知のパスに[`jwtsecret`](https://jwt.io/)を生成する必要があります。セキュリティと安定性の理由から、クライアントは同じマシン上で実行する必要があり、両方のクライアント間のローカルRPC接続を認証するために使用されるため、両方のクライアントがこのパスを知っている必要があります。実行クライアントは、認証済みAPIのリスニングポートも定義する必要があります。

このトークンはクライアントソフトウェアによって自動的に生成されますが、場合によっては自分で生成する必要があります。[OpenSSL](https://www.openssl.org/)を使用して生成できます。

```sh
openssl rand -hex 32 > jwtsecret
```

#### 実行クライアントの実行 {#running-an-execution-client}

このセクションでは、実行クライアントの起動について説明します。これは基本的な設定の例にすぎず、以下の設定でクライアントを起動します。

- 接続するネットワークを指定します（例ではメインネット）
  - セットアップの予備テストとして、代わりに[テストネットのいずれか](/developers/docs/networks/)を選択することもできます
- ブロックチェーンを含むすべてのデータが保存されるデータディレクトリを定義します
  - パスを実際のパス（外部ドライブを指すなど）に置き換えてください
- クライアントと通信するためのインターフェースを有効にします
  - コンセンサス・クライアントとの通信用のJSON-RPCおよびEngine APIを含みます
- 認証済みAPIの`jwtsecret`へのパスを定義します
  - サンプルパスを、クライアントがアクセスできる実際のパス（例：`/tmp/jwtsecret`）に置き換えてください

これは単なる基本的な例であり、他のすべての設定はデフォルトに設定されることに注意してください。デフォルト値、設定、および機能については、各クライアントのドキュメントに注意してください。バリデータの実行、監視などのその他の機能については、特定のクライアントのドキュメントを参照してください。

> 例のバックスラッシュ`\`はフォーマット目的のみであることに注意してください。設定フラグは1行で定義できます。

##### ベスの実行

この例では、メインネットでベスを起動し、ブロックチェーンデータをデフォルトの形式で`/data/ethereum`に保存し、コンセンサス・クライアントを接続するためのJSON-RPCとEngine RPCを有効にします。Engine APIはトークン`jwtsecret`で認証され、`localhost`からの呼び出しのみが許可されます。

```sh
besu --network=mainnet \
    --data-path=/data/ethereum \
    --rpc-http-enabled=true \
    --engine-rpc-enabled=true \
    --engine-host-allowlist="*" \
    --engine-jwt-enabled=true \
    --engine-jwt-secret=/path/to/jwtsecret
```

ベスには、一連の質問をして設定ファイルを生成するランチャーオプションも付属しています。次を使用してインタラクティブなランチャーを実行します。

```sh
besu --Xlauncher
```

[ベスのドキュメント](https://besu.hyperledger.org/public-networks/get-started/start-node/)には、追加のオプションと設定の詳細が含まれています。

##### エリゴンの実行

この例では、メインネットでエリゴンを起動し、ブロックチェーンデータを`/data/ethereum`に保存し、JSON-RPCを有効にし、許可される名前空間を定義し、`jwtsecret`パスで定義されるコンセンサス・クライアントを接続するための認証を有効にします。

```sh
erigon --chain mainnet \
    --datadir /data/ethereum  \
    --http --http.api=engine,eth,web3,net \
    --authrpc.jwtsecret=/path/to/jwtsecret
```

エリゴンはデフォルトで8GBのHDDでフル同期を実行し、その結果2TBを超えるアーカイブデータが生成されます。`datadir`が十分な空き容量のあるディスクを指していることを確認するか、さまざまな種類のデータをトリミングできる`--prune`フラグを調べてください。詳細については、エリゴンの`--help`を確認してください。

##### ゲスの実行

この例では、メインネットでゲスを起動し、ブロックチェーンデータを`/data/ethereum`に保存し、JSON-RPCを有効にして、許可される名前空間を定義します。また、コンセンサス・クライアントを接続するための認証を有効にします。これには`jwtsecret`へのパスが必要であり、許可される接続を定義するオプションも必要です。この例では`localhost`からのみ許可されます。

```sh
geth --mainnet \
    --datadir "/data/ethereum" \
    --http --authrpc.addr localhost \
    --authrpc.vhosts="localhost" \
    --authrpc.port 8551
    --authrpc.jwtsecret=/path/to/jwtsecret
```

[すべての設定オプションのドキュメント](https://geth.ethereum.org/docs/fundamentals/command-line-options)を確認し、[コンセンサス・クライアントでゲスを実行する](https://geth.ethereum.org/docs/getting-started/consensus-clients)ことについて詳しく学んでください。

##### ネザーマインドの実行

ネザーマインドはさまざまな[インストールオプション](https://docs.nethermind.io/get-started/installing-nethermind)を提供しています。パッケージには、ガイド付きセットアップを備えたランチャーなど、さまざまなバイナリが付属しており、インタラクティブに設定を作成するのに役立ちます。または、実行可能ファイル自体であるRunnerを見つけて、設定フラグを付けて実行することもできます。JSON-RPCはデフォルトで有効になっています。

```sh
Nethermind.Runner --config mainnet \
    --datadir /data/ethereum \
    --JsonRpc.JwtSecretFile=/path/to/jwtsecret
```

ネザーマインドのドキュメントには、コンセンサス・クライアントでネザーマインドを実行するための[完全なガイド](https://docs.nethermind.io/get-started/running-node/)が用意されています。

実行クライアントは、コア機能、選択したエンドポイントを初期化し、ピアの検索を開始します。ピアのディスカバリーに成功すると、クライアントは同期を開始します。実行クライアントは、コンセンサス・クライアントからの接続を待機します。クライアントが現在の状態に正常に同期されると、現在のブロックチェーンデータが利用可能になります。

##### レスの実行

この例では、デフォルトのデータの場所を使用して、メインネットでレスを起動します。`jwtsecret`パスで定義されるコンセンサス・クライアントを接続するためのJSON-RPCおよびEngine RPC認証を有効にし、`localhost`からの呼び出しのみを許可します。

```sh
reth node \
    --authrpc.jwtsecret /path/to/jwtsecret \
    --authrpc.addr 127.0.0.1 \
    --authrpc.port 8551
```

デフォルトのデータディレクトリの詳細については、[レスの設定](https://reth.rs/run/config.html?highlight=data%20directory#configuring-reth)を参照してください。[レスのドキュメント](https://reth.rs/run/mainnet.html)には、追加のオプションと設定の詳細が含まれています。

#### コンセンサス・クライアントの起動 {#starting-the-consensus-client}

コンセンサス・クライアントは、実行クライアントへのローカルRPC接続を確立するために、正しいポート設定で起動する必要があります。コンセンサス・クライアントは、公開された実行クライアントのポートを設定引数として実行する必要があります。

コンセンサス・クライアントは、それらの間のRPC接続を認証するために、実行クライアントの`jwt-secret`へのパスも必要とします。上記の実行例と同様に、各コンセンサス・クライアントには、jwtトークンファイルのパスを引数として取る設定フラグがあります。これは、実行クライアントに提供される`jwtsecret`パスと一致している必要があります。

バリデータを実行する予定の場合は、手数料の受取人のイーサリアムアドレスを指定する設定フラグを必ず追加してください。ここにバリデータのイーサ報酬が蓄積されます。各コンセンサス・クライアントには、イーサリアムアドレスを引数として取るオプション（例：`--suggested-fee-recipient=0xabcd1`）があります。

テストネットでビーコン・ノードを起動する場合、[チェックポイント同期](https://notes.ethereum.org/@launchpad/checkpoint-sync)のパブリックエンドポイントを使用することで、同期時間を大幅に節約できます。

#### コンセンサス・クライアントの実行 {#running-a-consensus-client}

##### ライトハウスの実行

ライトハウスを実行する前に、[Lighthouse Book](https://lighthouse-book.sigmaprime.io/installation.html)でインストールと設定の方法について詳しく学んでください。

```sh
lighthouse beacon_node \
    --network mainnet \
    --datadir /data/ethereum \
    --http \
    --execution-endpoint http://127.0.0.1:8551 \
    --execution-jwt /path/to/jwtsecret
```

##### ロードスターの実行

ロードスターソフトウェアをコンパイルするか、Dockerイメージをダウンロードしてインストールします。詳細については、[ドキュメント](https://chainsafe.github.io/lodestar/)およびより包括的な[セットアップガイド](https://hackmd.io/@philknows/rk5cDvKmK)を参照してください。

```sh
lodestar beacon \
    --dataDir="/data/ethereum" \
    --network=mainnet \
    --eth1.enabled=true \
    --execution.urls="http://127.0.0.1:8551" \
    --jwt-secret="/path/to/jwtsecret"
```

##### ニンバスの実行

ニンバスには、コンセンサス・クライアントと実行クライアントの両方が付属しています。非常に控えめな計算能力のさまざまなデバイスでも実行できます。
[依存関係とニンバス自体をインストール](https://nimbus.guide/quick-start.html)した後、そのコンセンサス・クライアントを実行できます。

```sh
nimbus_beacon_node \
    --network=mainnet \
    --web3-url=http://127.0.0.1:8551 \
    --rest \
    --jwt-secret="/path/to/jwtsecret"
```

##### プリズムの実行

プリズムには、簡単な自動インストールを可能にするスクリプトが付属しています。詳細は[プリズムのドキュメント](https://prysm.offchainlabs.com/docs/install-prysm/install-with-script/)に記載されています。

```sh
./prysm.sh beacon-chain \
    --mainnet \
    --datadir /data/ethereum  \
    --execution-endpoint=http://localhost:8551  \
    --jwt-secret=/path/to/jwtsecret
```

##### テクの実行

```sh
teku --network mainnet \
    --data-path "/data/ethereum" \
    --ee-endpoint http://localhost:8551 \
    --ee-jwt-secret-file "/path/to/jwtsecret"
```

コンセンサス・クライアントが実行クライアントに接続してデポジット・コントラクトを読み取り、バリデータを識別すると、他のビーコン・ノードのピアにも接続し、ジェネシスからコンセンサススロットの同期を開始します。ビーコン・ノードが現在のエポックに到達すると、バリデータでBeacon APIを使用できるようになります。[ビーコン・ノードAPI](https://ethereum.github.io/beacon-APIs)について詳しく学んでください。

### バリデータの追加 {#adding-validators}

コンセンサス・クライアントは、バリデータが接続するためのビーコン・ノードとして機能します。各コンセンサス・クライアントには独自のバリデータソフトウェアがあり、それぞれのドキュメントで詳しく説明されています。

独自のバリデータを実行することで、イーサリアムネットワークをサポートする最も影響力がありトラストレスな方法である[ソロ・ステーキング](/staking/solo/)が可能になります。ただし、これには32 ETHのデポジットが必要です。より少ない金額で独自のノードでバリデータを実行するには、[Rocket Pool](https://rocketpool.net/node-operators)のようなパーミッションレスなノードオペレーターを持つ分散型プールに興味があるかもしれません。

ステーキングとバリデータの鍵生成を開始する最も簡単な方法は、[Hoodiテストネットステーキングローンチパッド](https://hoodi.launchpad.ethereum.org/)を使用することです。これにより、[Hoodiでノードを実行する](https://notes.ethereum.org/@launchpad/hoodi)ことでセットアップをテストできます。メインネットの準備ができたら、[メインネットステーキングローンチパッド](https://launchpad.ethereum.org/)を使用してこれらの手順を繰り返すことができます。

ステーキングオプションの概要については、[ステーキングページ](/staking)をご覧ください。

### ノードの使用 {#using-the-node}

実行クライアントは、トランザクションを送信したり、イーサリアムネットワーク上のスマート・コントラクトとやり取りしたり、デプロイしたりするために使用できる[RPC APIエンドポイント](/developers/docs/apis/json-rpc/)をさまざまな方法で提供します。

- 適切なプロトコルを使用して手動で呼び出す（例：`curl`を使用）
- 提供されているコンソールをアタッチする（例：`geth attach`）
- Web3ライブラリ（例：[Web3.py](https://web3py.readthedocs.io/en/stable/overview.html#overview)、[ethers](https://github.com/ethers-io/ethers.js/)）を使用してアプリケーションに実装する

クライアントによってRPCエンドポイントの実装は異なります。しかし、すべてのクライアントで使用できる標準のJSON-RPCがあります。概要については、[JSON-RPCのドキュメントをお読みください](/developers/docs/apis/json-rpc/)。イーサリアムネットワークからの情報を必要とするアプリケーションは、このRPCを使用できます。たとえば、人気のあるウォレットであるメタマスクを使用すると、[独自のRPCエンドポイントに接続](https://metamask.zendesk.com/hc/en-us/articles/360015290012-Using-a-Local-Node)でき、プライバシーとセキュリティの面で大きなメリットがあります。

コンセンサス・クライアントはすべて、[Curl](https://curl.se)などのツールを使用してリクエストを送信することで、コンセンサス・クライアントのステータスを確認したり、ブロックやコンセンサスデータをダウンロードしたりするために使用できる[Beacon API](https://ethereum.github.io/beacon-APIs)を公開しています。これに関する詳細情報は、各コンセンサス・クライアントのドキュメントに記載されています。

#### RPCへのアクセス {#reaching-rpc}

実行クライアントのJSON-RPCのデフォルトポートは`8545`ですが、設定でローカルエンドポイントのポートを変更できます。デフォルトでは、RPCインターフェースはコンピューターのローカルホストでのみアクセス可能です。リモートからアクセスできるようにするには、アドレスを`0.0.0.0`に変更して公開することをお勧めします。これにより、ローカルネットワークおよびパブリックIPアドレス経由でアクセスできるようになります。ほとんどの場合、ルーターでポートフォワーディングを設定する必要もあります。

ポートをインターネットに公開すると、インターネット上の誰もがノードを制御できるようになるため、慎重に行ってください。悪意のあるアクターがノードにアクセスしてシステムをダウンさせたり、クライアントをウォレットとして使用している場合は資金を盗んだりする可能性があります。

これを回避する方法は、潜在的に有害なRPCメソッドを変更できないようにすることです。たとえば、ゲスでは、フラグ`--http.api web3,eth,txpool`を使用して変更可能なメソッドを宣言できます。

RPCインターフェースへのアクセスは、エッジレイヤーAPIまたはNginxなどのWebサーバーアプリケーションを開発し、それらをクライアントのローカルアドレスとポートに接続することで拡張できます。中間レイヤーを活用することで、開発者はRPCインターフェースへの安全な`https`接続のための証明書をセットアップすることもできます。

Webサーバー、プロキシ、または外部向けRest APIをセットアップすることだけが、ノードのRPCエンドポイントへのアクセスを提供する方法ではありません。パブリックにアクセス可能なエンドポイントをセットアップするもう1つのプライバシー保護方法は、独自の[Tor](https://www.torproject.org/)オニオンサービスでノードをホストすることです。これにより、静的なパブリックIPアドレスや開いているポートがなくても、ローカルネットワークの外部からRPCにアクセスできるようになります。ただし、この設定を使用すると、Torネットワーク経由でのみRPCエンドポイントにアクセスできるようになる場合があり、すべてのアプリケーションでサポートされているわけではないため、接続の問題が発生する可能性があります。

これを行うには、独自の[オニオンサービス](https://community.torproject.org/onion-services/)を作成する必要があります。独自にホストするためのオニオンサービスのセットアップに関する[ドキュメント](https://community.torproject.org/onion-services/setup/)を確認してください。RPCポートへのプロキシを備えたWebサーバーを指すようにすることも、RPCを直接指すようにすることもできます。

最後に、内部ネットワークへのアクセスを提供する最も一般的な方法の1つは、VPN接続を使用することです。ユースケースやノードへのアクセスを必要とするユーザーの数によっては、安全なVPN接続がオプションになる場合があります。[OpenVPN](https://openvpn.net/)は、業界標準のSSL/TLSプロトコルを使用してOSIレイヤー2または3の安全なネットワーク拡張を実装するフル機能のSSL VPNであり、証明書、スマートカード、および/またはユーザー名/パスワードの資格情報に基づく柔軟なクライアント認証方法をサポートし、VPN仮想インターフェースに適用されるファイアウォールルールを使用してユーザーまたはグループ固有のアクセス制御ポリシーを許可します。

### ノードの運用 {#operating-the-node}

ノードが適切に実行されていることを確認するために、定期的に監視する必要があります。時折メンテナンスを行う必要がある場合があります。

#### ノードをオンラインに保つ {#keeping-node-online}

ノードは常にオンラインである必要はありませんが、ネットワークとの同期を維持するために、可能な限りオンラインに保つ必要があります。再起動するためにシャットダウンすることはできますが、次の点に注意してください。

- 最近の状態がまだディスクに書き込まれている場合、シャットダウンに数分かかることがあります。
- 強制シャットダウンはデータベースを損傷する可能性があり、ノード全体を再同期する必要があります。
- クライアントはネットワークと同期しなくなり、再起動時に再同期する必要があります。ノードは最後にシャットダウンされた場所から同期を開始できますが、オフラインになっていた時間によってはプロセスに時間がかかる場合があります。

_これはコンセンサス・レイヤーのバリデータノードには適用されません。_ ノードをオフラインにすると、それに依存するすべてのサービスに影響します。_ステーキング_目的でノードを実行している場合は、ダウンタイムを可能な限り最小限に抑えるように努める必要があります。

#### クライアントサービスの作成 {#creating-client-services}

起動時にクライアントを自動的に実行するサービスを作成することを検討してください。たとえば、Linuxサーバーでは、`systemd`などを使用して、制限された権限を持つユーザーの下で適切な設定でクライアントを実行し、自動的に再起動するサービスを作成することをお勧めします。

#### クライアントの更新 {#updating-clients}

クライアントソフトウェアを最新のセキュリティパッチ、機能、および[EIP](/eips/)で最新の状態に保つ必要があります。特に[ハードフォーク](/ethereum-forks/)の前には、正しいクライアントバージョンを実行していることを確認してください。

> 重要なネットワーク更新の前に、EFは[ブログ](https://blog.ethereum.org)に記事を公開します。[これらの発表を購読](https://blog.ethereum.org/category/protocol#subscribe)すると、ノードの更新が必要なときにメールで通知を受け取ることができます。

クライアントの更新は非常に簡単です。各クライアントのドキュメントに具体的な手順が記載されていますが、一般的なプロセスは、最新バージョンをダウンロードし、新しい実行可能ファイルでクライアントを再起動するだけです。クライアントは中断したところから再開しますが、更新が適用された状態になります。

各クライアント実装には、ピア・ツー・ピアプロトコルで使用される人間が読めるバージョンの文字列がありますが、コマンドラインからもアクセスできます。このバージョンの文字列により、ユーザーは正しいバージョンを実行していることを確認でき、ネットワーク上の特定のクライアントの分布を定量化することに関心のあるブロックエクスプローラーやその他の分析ツールが利用できます。バージョンの文字列の詳細については、個々のクライアントのドキュメントを参照してください。

#### 追加サービスの実行 {#running-additional-services}

独自のノードを実行すると、イーサリアムクライアントのRPCへの直接アクセスを必要とするサービスを使用できます。これらは、[レイヤー2ソリューション](/developers/docs/scaling/#layer-2-scaling)、ウォレットのバックエンド、ブロックエクスプローラー、開発者ツール、その他のイーサリアムインフラストラクチャなど、イーサリアムの上に構築されたサービスです。

#### ノードの監視 {#monitoring-the-node}

ノードを適切に監視するには、メトリクスの収集を検討してください。クライアントはメトリクスエンドポイントを提供しているため、ノードに関する包括的なデータを取得できます。[InfluxDB](https://www.influxdata.com/get-influxdb/)や[Prometheus](https://prometheus.io/)などのツールを使用してデータベースを作成し、[Grafana](https://grafana.com/)などのソフトウェアで視覚化やチャートに変換できます。このソフトウェアを使用するための多くのセットアップと、ノードとネットワーク全体を視覚化するためのさまざまなGrafanaダッシュボードがあります。たとえば、[ゲスの監視に関するチュートリアル](/developers/tutorials/monitoring-geth-with-influxdb-and-grafana/)を確認してください。

監視の一環として、マシンのパフォーマンスに常に注意を払うようにしてください。ノードの初期同期中、クライアントソフトウェアはCPUとRAMに非常に大きな負荷をかける可能性があります。Grafanaに加えて、`htop`や`uptime`など、OSが提供するツールを使用してこれを行うことができます。

## 参考文献 {#further-reading}

- [イーサリアムステーキングガイド](https://github.com/SomerEsat/ethereum-staking-guides) - _Somer Esat、頻繁に更新_
- [ガイド | メインネットでのイーサリアムステーキング用バリデータのセットアップ方法](https://www.coincashew.com/coins/overview-eth/guide-or-how-to-setup-a-validator-on-eth2-mainnet) _– CoinCashew、頻繁に更新_
- [テストネットでのバリデータ実行に関するEthStakerガイド](https://github.com/remyroy/ethstaker#guides) – _EthStaker、定期的に更新_
- [イーサリアムノード用のサンプルAWS Blockchain Node Runnerアプリ](https://aws-samples.github.io/aws-blockchain-node-runners/docs/blueprints/ethereum) - _AWS、頻繁に更新_
- [ノードオペレーター向けのマージFAQ](https://notes.ethereum.org/@launchpad/node-faq-merge) - _2022年7月_
- [イーサリアムのフル検証ノードになるためのハードウェア要件の分析](https://medium.com/coinmonks/analyzing-the-hardware-requirements-to-be-an-ethereum-full-validated-node-dc064f167902) _– Albert Palau、2018年9月24日_
- [イーサリアムフル・ノードの実行：モチベーションが低い人向けのガイド](https://medium.com/@JustinMLeroux/running-ethereum-full-nodes-a-guide-for-the-barely-motivated-a8a13e7a0d31) _– Justin Leroux、2019年11月7日_
- [イーサリアム・メインネットでのHyperledger Besuノードの実行：利点、要件、およびセットアップ](https://pegasys.tech/running-a-hyperledger-besu-node-on-the-ethereum-mainnet-benefits-requirements-and-setup/) _– Felipe Faraggi、2020年5月7日_
- [監視スタックを使用したネザーマインドイーサリアムクライアントのデプロイ](https://medium.com/nethermind-eth/deploying-nethermind-ethereum-client-with-monitoring-stack-55ce1622edbd) _– Nethermind.eth、2020年7月8日_

## 関連トピック {#related-topics}

- [ノードとクライアント](/developers/docs/nodes-and-clients/)
- [ブロック](/developers/docs/blocks/)
- [ネットワーク](/developers/docs/networks/)