> For the complete documentation index, see [llms.txt](https://elder-2.gitbook.io/elder-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://elder-2.gitbook.io/elder-docs/architecture/run-an-elder-node.md).

# Run an ELDER Node

{% hint style="info" %}
GitHub access for Elder is currently limited to early partner projects and may not be available to everyone.
{% endhint %}

{% hint style="info" %}
The documentation may be outdated due to rapid development. Expect improvements as the code goes public and the project approaches its internal testnet phase.
{% endhint %}

### Run your first node

* Ensure `go` v1.22 or higher is installed, and `$GOPATH/bin` is added to the `PATH` variable. (Usually `GOPATH=~/go/bin`)
* Clone the elder repository, and install it.

```bash
$ git clone <https://github.com/0xElder/elder.git>
$ cd elder
$ go mod tidy
$ go build -o $GOPATH/bin ./cmd/elderd

# Check if elderd has been installed to $GOPATH/bin
$ elderd --help
```

* Instantiate validator and node config files. (`chain-id` will be used in later commands).

```bash
$ elderd init eldertest --chain-id elder

# This creates ~/.elder/{config, data}
```

* Set node config values.

```bash
$ cd ~/.elder/config

# Set the following values against the keys in respective file.

# app.toml
## min-gas-prices = "0elder"

# client.toml
## keyring-backend = "test"
```

* Add keys to test keyring.

```bash
$ elderd keys add alice
$ elderd keys add bob
```

* Create genesis account, and generate transaction to create validator with self delegation.

```bash
$ elderd genesis add-genesis-account bob 1000000000000000elder
$ elderd genesis gentx bob 10000000000elder
```

* Collect genesis transactions and start the full node.

```bash
$ elderd genesis collect-gentxs
$ elderd start
```

* The full node is now running. Check for the corresponding config values to interact via REST API endpoints or GRPC service methods.

```bash
# GRPC
## In ~/.elder/config/app.toml
## grpc.enable = true
## grpc.address = "localhost:9090" or "0.0.0.0:9090" to allow all incoming IP addresses.

# REST
## In ~/.elder/config/app.toml
## api.enable = true;
## api.address = "tcp://localhost:1317" or "tcp://0.0.0.0:1317" to allow all incoming IP addresses.
```
