# Running a Node

{% hint style="warning" %}
Cappuccino node operators are limited to a select group. If you are interested in running a node in a future release of Espresso, [contact us](https://y3at7jy5knf.typeform.com/to/KgayxNsX?typeform-source=webflow.com).
{% endhint %}

This page give the configuration used to run different types of nodes in the Cappuccino testnet. For general information on running an Espresso node, see [https://github.com/EspressoSystems/gitbook/blob/main/guides/running-a-sequencer-node.md](https://github.com/EspressoSystems/gitbook/blob/main/guides/running-a-sequencer-node.md "mention").

All nodes in Cappuccino use the `ghcr.io/espressosystems/espresso-sequencer/sequencer:cappuccino` Docker image. Depending on the type of node, the configuration varies.

## Regular Node

### Command

`sequencer -- http -- catchup -- status`

### Environment

#### Same for all nodes

```
ESPRESSO_SEQUENCER_ORCHESTRATOR_URL=https://orchestrator.cappuccino.testnet.espresso.network
ESPRESSO_SEQUENCER_CDN_ENDPOINT=cdn.cappuccino.testnet.espresso.network:1737
ESPRESSO_STATE_RELAY_SERVER_URL=https://state-relay.cappuccino.testnet.espresso.network
ESPRESSO_SEQUENCER_GENESIS_FILE=/genesis/cappuccino.toml
RUST_LOG="warn,libp2p=off"
RUST_LOG_FORMAT="json"

# At least one state peer is required. The following URL provided by Espresso works.
# Optionally, add endpoints for additional peers, separated by commas.
ESPRESSO_SEQUENCER_STATE_PEERS=https://query.cappuccino.testnet.espresso.network
```

#### Chosen by operators

```
# JSON-RPC endpoint for Sepolia testnet
ESPRESSO_SEQUENCER_L1_PROVIDER # e.g. https://sepolia.infura.io/v3/<API-KEY>

# Port on which to host metrics and healthchecks
ESPRESSO_SEQUENCER_API_PORT # e.g. 80

# Path in container to store consensus state
ESPRESSO_SEQUENCER_STORAGE_PATH # e.g. /mount/sequencer/store/

# Path in container to keystore
ESPRESSO_SEQUENCER_KEY_FILE # e.g. /mount/sequencer/keys/0.env
```

### Volumes

* `$ESPRESSO_SEQUENCER_STORAGE_PATH`
* `$ESPRESSO_SEQUENCER_KEY_FILE`

## DA Node

{% hint style="info" %}
Requires operator to additionally run a Postgres server
{% endhint %}

### Command

`sequencer -- storage-sql -- http -- catchup -- status -- query`

### Environment

#### Same for all nodes

```
ESPRESSO_SEQUENCER_ORCHESTRATOR_URL=https://orchestrator.cappuccino.testnet.espresso.network
ESPRESSO_SEQUENCER_CDN_ENDPOINT=cdn.cappuccino.testnet.espresso.network:1737
ESPRESSO_STATE_RELAY_SERVER_URL=https://state-relay.cappuccino.testnet.espresso.network
ESPRESSO_SEQUENCER_GENESIS_FILE=/genesis/cappuccino.toml
ESPRESSO_SEQUENCER_POSTGRES_PRUNE="true"
ESPRESSO_SEQUENCER_PRUNER_PRUNING_THRESHOLD="549755813888" # 0.5 TB
ESPRESSO_SEQUENCER_PRUNER_MINIMUM_RETENTION="1d"
ESPRESSO_SEQUENCER_PRUNER_TARGET_RETENTION="7d"
ESPRESSO_SEQUENCER_PRUNER_BATCH_SIZE=5000
ESPRESSO_SEQUENCER_IS_DA="true"
ESPRESSO_SEQUENCER_FETCH_RATE_LIMIT=25

RUST_LOG="warn,libp2p=off"
RUST_LOG_FORMAT="json"

# At least one state peer is required. The following URL provided by Espresso works.
# Optionally, add endpoints for additional peers, separated by commas.
ESPRESSO_SEQUENCER_STATE_PEERS=https://query.cappuccino.testnet.espresso.network
ESPRESSO_SEQUENCER_API_PEERS=https://query.cappuccino.testnet.espresso.network
```

#### Chosen by operators

```
# JSON-RPC endpoint for Sepolia testnet
ESPRESSO_SEQUENCER_L1_PROVIDER # e.g. https://sepolia.infura.io/v3/<API-KEY>

# Port on which to host metrics, healthchecks, and DA API
ESPRESSO_SEQUENCER_API_PORT # e.g. 80

# Path in container to keystore
ESPRESSO_SEQUENCER_KEY_FILE # e.g. /mount/sequencer/keys/0.env

# Connection to Postgres
ESPRESSO_SEQUENCER_POSTGRES_HOST
ESPRESSO_SEQUENCER_POSTGRES_USER
ESPRESSO_SEQUENCER_POSTGRES_PASSWORD
```

### Volumes

* `$ESPRESSO_SEQUENCER_KEY_FILE`

## Archival Node

{% hint style="info" %}
Requires operator to additionally run a Postgres server
{% endhint %}

### Command

`sequencer -- storage-sql -- http -- catchup -- status -- query -- state`

### Environment

#### Same for all nodes

```
ESPRESSO_SEQUENCER_ORCHESTRATOR_URL=https://orchestrator.cappuccino.testnet.espresso.network
ESPRESSO_SEQUENCER_CDN_ENDPOINT=cdn.cappuccino.testnet.espresso.network:1737
ESPRESSO_STATE_RELAY_SERVER_URL=https://state-relay.cappuccino.testnet.espresso.network
ESPRESSO_SEQUENCER_GENESIS_FILE=/genesis/cappuccino.toml
ESPRESSO_SEQUENCER_FETCH_RATE_LIMIT=25
RUST_LOG="warn,libp2p=off"
RUST_LOG_FORMAT="json"

# At least one state peer is required. The following URL provided by Espresso works.
# Optionally, add endpoints for additional peers, separated by commas.
ESPRESSO_SEQUENCER_STATE_PEERS=https://query.cappuccino.testnet.espresso.network
ESPRESSO_SEQUENCER_API_PEERS=https://query.cappuccino.testnet.espresso.network
```

#### Chosen by operators

```
# JSON-RPC endpoint for Sepolia testnet
ESPRESSO_SEQUENCER_L1_PROVIDER # e.g. https://sepolia.infura.io/v3/<API-KEY>

# Port on which to host metrics, healthchecks, and query API
ESPRESSO_SEQUENCER_API_PORT # e.g. 80

# Path in container to keystore
ESPRESSO_SEQUENCER_KEY_FILE # e.g. /mount/sequencer/keys/0.env

# Connection to Postgres
ESPRESSO_SEQUENCER_POSTGRES_HOST
ESPRESSO_SEQUENCER_POSTGRES_USER
ESPRESSO_SEQUENCER_POSTGRES_PASSWORD
```

### Volumes

* `$ESPRESSO_SEQUENCER_KEY_FILE`
