# Run a Node with Docker

With just a few commands, you can run your own Base Blockchain node using [docker-compose](https://docs.docker.com/compose/). Simply use the base blockchain docker.

## **Requirements:** <a href="#requirements" id="requirements"></a>

Listed below are the minimum viable requirements.

Although it is possible to run a node using these specifications, it is recommended to assign more resources for optimal performance.

* &#x20;[docker-compose](https://docs.docker.com/compose/install/) version `2.2.2` or greater is **required**
* **4GB memory**
* **1 Vcpu** ( *minimum of 2 Vcpu is recommended* )
* **100GB disk** ( *minimum of 150GB SSD is recommended* )

MACOS WITH AN ARM PROCESSOR IS NOT RECOMMENDED

{% hint style="info" %}
The design of Docker for Mac on an Arm CPU results in slow I/O, which can be problematic for I/O-intensive applications like blockchains. This issue appears to be specific to MacOS, as other Arm-based systems, such as Raspberry Pi, perform as expected.
{% endhint %}

## **Quickstart**[​](https://docs.stacks.co/docs/nodes-and-miners/run-a-node#quickstart) <a href="#quickstart" id="quickstart"></a>

The `<network>` placeholder used below can be replaced with one of:

* mainnet
* testnet
* mocknet

1. **Clone the base-blockchain-docker repository locally**

```
git clone https://github.com/Base-Technology/base-blockchain-docker && cd base-blockchain-docker
```

2. **Start the Services**

```
./manage.sh -n <network> -a start
```

WITH AN OPTIONAL HTTP PROXY ON PORT 80:

```
./manage.sh -n <network> -a start -f proxy
```

### **Accessing the services**[​](https://docs.stacks.co/docs/nodes-and-miners/run-a-node#accessing-the-services) <a href="#accessing-the-services" id="accessing-the-services"></a>

TIP

For networks other than `mocknet`, downloading the initial headers can take several minutes. Until the headers are downloaded, the `/v2/info` endpoints won't return any data.

Follow the logs to track the sync progress:

```
./manage.sh -n <network> -a logs
```

**Base-blockchain**:

* Ports `20443-20444` are exposed on `localhost`

```
curl -sL localhost:20443/v2/info | jq -r
```

**Base-blockchain-api**:

* Port `3999` is exposed on `localhost`

```
curl -sL localhost:3999 | jq -r
```

**proxy**:

* Port `80` is exposed on `localhost`

```
curl -sL localhost/v2/info | jq -r
curl -sL localhost | jq -r
```

***

### Upgrades <a href="#upgrades" id="upgrades"></a>
