# Node setup (https://docs.axelar.dev/infrastructure/node/setup)



## Prerequisites [#prerequisites]

* **Operating system:** MacOS(x86 intel chip) or Ubuntu (tested on 18.04).
* **Hardware:** 4 cores, 8-16GB RAM, 512 GB drive, arm64 or amd64. Recommended 6-8 cores, 16-32 GB RAM, 1 TB+ drive.
* Increase the maximum number of open files on your system. Example: `ulimit -n 16384`. You may wish to add this command to your shell profile so that you don't need to execute it next time you restart your machine.

<Callout emoji="💡">
  Tip: Planning to run your own validator? Validators have different hardware
  requirements. See [Validator setup](https://docs.axelar.dev/llms.mdx/infrastructure/validators/content.md).
</Callout>

## Download binaries and initialize configuration [#download-binaries-and-initialize-configuration]

Clone the [`axelerate-community`](https://github.com/axelarnetwork/axelarate-community) repo:

```bash
git clone https://github.com/axelarnetwork/axelarate-community.git
cd axelarate-community
```

Run `setup-node.sh` to download the `axelard` binary and configure your node:

```bash
./scripts/setup-node.sh -n [mainnet|testnet]
```

Some additional flags:

* `-a` : Version of `axelard`.
* `-d` : Home directory path.
* `--help` : Print a complete list of flags.

### Verifying Binaries [#verifying-binaries]

By default, the binary signatures are downloaded and the binary is verified using the [commonprefix](https://keybase.io/commonprefix) PGP key. To verify the binary manually, you can download the PGP signature and verify using the following commands:

```bash
curl https://keybase.io/commonprefix/key.asc | gpg --import
gpg --verify [axelard_binary_signature_path] [axelard_binary_path]
```

On github the signatures are attached to the releases. To download the signatures from the axelar-releases AWS Bucket, you can add `.asc` to the end of the binary URL. For example, if the path of the binary is:

```bash
https://axelar-releases.s3.us-east-2.amazonaws.com/axelard/v0.26.0/axelard-darwin-arm64-v0.26.0
```

The path for the signature will be:

```bash
https://axelar-releases.s3.us-east-2.amazonaws.com/axelard/v0.26.0/axelard-darwin-arm64-v0.26.0.asc
```

## Home directory [#home-directory]

By default the `setup-node.sh` script sets the home directory for your node as follows:

| Network | Home directory path     |
| ------- | ----------------------- |
| mainnet | `$HOME/.axelar`         |
| testnet | `$HOME/.axelar_testnet` |

On a fresh install `setup-node.sh` puts the following in your node's home directory:

```
.axelar
├── bin
│   ├── axelard -> /Users/gus/.foo/bin/axelard-vx.y.z
│   └── axelard-vx.y.z
├── config
│   ├── app.toml
│   ├── config.toml
│   ├── genesis.json
│   └── seeds.toml
├── lib
│   └── libwasmvm.${arch}.so
└── logs
```

Other pages assume the `AXELARD_HOME` environment variable is set to this directory in your current session, for example `AXELARD_HOME="$HOME/.axelar"`.

## CLI configuration [#cli-configuration]

By default, many Axelar CLI commands contain boilerplate material that obfuscates the command and adds complexity to documentation. Here we describe documentation conventions and ways to configure your system so as to reduce this boilerplate.

Example: you can use the CLI to send `uaxl` tokens to another account on Axelar via the command

```bash
axelard tx bank send my_account {DEST_ADDR} {AMOUNT}uaxl --from my_account
```

The above command does not work on a system that has not yet been properly configured. On a fresh, unconfigured system you would instead need to type

```bash
echo $KEYRING_PASSWORD | ~/.axelar_testnet/bin/axelard tx bank send validator {DEST_ADDR} {AMOUNT}uaxl --from validator --gas auto --gas-adjustment 1.5 --chain-id axelar-testnet-lisbon-3 --home ~/.axelar_testnet
```

Let us explain the changes:

* **Keyring password.** `echo $KEYRING_PASSWORD` : Commands that use `tx` to post a signed transaction to the network require a password to unlock the keyring. For simplicity documentation elides the keyring password. See [Keyring backend](https://docs.axelar.dev/llms.mdx/infrastructure/node/keyring/content.md) for more info.
* **Path to `axelard`.** `~/.axelar_testnet/bin/axelard` : You can avoid the need to type the full path to `axelard` by putting `axelard` in your `PATH` environment variable or defining a shell alias.
* **Gas.** `--gas auto --gas-adjustment 1.5` : Commands that use `tx` to post a signed transaction to the network must pay transaction fees called *gas*. By default `axelard` estimates the gas fee but sometimes this estimation is inaccurate and the transaction fails due to insufficient gas fee. These gas flags instruct `axelard` to estimate gas more accurately, then increase the maximum gas for the transaction by a factor you specify (`1.5` in this case) so that your transaction is more likely to have sufficient gas even if actual network fees exceed the estimate. For simplicity documentation elides these flags.
* **Chain ID.** `--chain-id axelar-testnet-lisbon-3` : Commands that use `tx` to post a signed transaction to the network must specify the `chain-id` for the transaction. You could instead set the `AXELARD_CHAIN_ID` environment variable.
* **Home directory.** `--home ~/.axelar_testnet` : Many commands must specify the path to on-disk storage for `axelard`. You could instead set the `AXELARD_HOME` environment variable. The default value is `~/.axelar`.


---

All pages of these docs, as Markdown: https://docs.axelar.dev/llms.txt