Run your own Stacks Blockchain node using docker-compose with just few commands using stacks-blockchain-docker
- Quickstart
- Requirements
- Docker Setup
- Configuration
- Upgrading
- Common Issues
The minimum viable requirements are listed below.
While you can run a node using these specs, it's recommended to assign more than the minimum for better performance.
⚠️ docker-compose version2.2.2
or greater is required- 4GB memory if running only a Stacks node
- 10 GB memory if running Stacks + Bitcoin node
- 1 Vcpu ( minimum of 2 Vcpu is recommended )
- 350GB disk for Stacks node
- 1TB disk space for Bitcoin node
{% hint style="warning" %} MacOS with an ARM (M-series chip) processor is NOT recommended
The way Docker for Mac on an Arm CPU is designed makes the I/O incredibly slow, and blockchains are very heavy on I/O. This only seems to affect MacOS with the M-series chip, other Arm based systems like Raspberry Pi work as expected. {% endhint %}
The <network>
placeholder used below can be replaced with one of:
- mainnet
- testnet
- mocknet
- Clone the stacks-blockchain-docker repository locally
git clone https://github.com/stacks-network/stacks-blockchain-docker && cd stacks-blockchain-docker
- Start the Services
./manage.sh -n <network> -a start
{% hint style="info" %} With an optional HTTP proxy on port 80:
./manage.sh -n <network> -a start -f proxy
{% endhint %}
{% hint style="info" %}
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
{% endhint %}
stacks-blockchain:
- Ports
20443-20444
are exposed onlocalhost
curl -sL localhost:20443/v2/info | jq -r
stacks-blockchain-api:
- Port
3999
is exposed onlocalhost
curl -sL localhost:3999 | jq -r
proxy:
- Port
80
is exposed onlocalhost
curl -sL localhost/v2/info | jq -r
curl -sL localhost | jq -r
{% hint style="warning" %} For schema-breaking upgrades to running instances of this repo, you'll need to run an event-replay. {% endhint %}