Run a Node with Digital Ocean
Introduction
This is a step by step guide to deploy the Stacks Blockchain on DigitalOcean.
Build code is hosted on this Github repository using the methods from here.
Steps
Create the Droplet from the Marketplace
Go to the Stacks Blockchain page in DigitalOcean's marketplace. Click on Create Stacks Blockchain Droplet.
Authentication
Enter a root password or enable SSH keys if you prefer.
Getting started after deploying Stacks Blockchain
Once the droplet is launched, the initial startup can take several minutes while BNS data is imported (this is a one time operation) and the Bitcoin headers are synced.
To keep track of the progress, you can SSH to the host and view logs:
ssh root@your_droplet_public_ipv4
/opt/stacks-blockchain-docker/manage.sh -n mainnet -a logsAfter the stacks blockchain finishes the initial header sync and starts to sync with its peers, the application ports will open (20443 and 3999) and HTTP port 80 will now start proxying requests.
Use http://your_droplet_public_ipv4 to access the data directly, with output being similar to:
{
"server_version": "stacks-blockchain-api v6.2.3 (master:77ab3ae2)",
"status": "ready",
"chain_tip": {
"block_height": 91820,
"block_hash": "0x06b276e85f238151414616618ae0adaf5eeda4eac6cad5bbefceeb37948ab275",
"index_block_hash": "0x4d7c075d7ab0f90b1dbc175f5c42b7344265d00cfef202dd9681d95388eeed8c",
"microblock_hash": "0xcf4f9037cc10696b2812b617ca105885be625c6acf8ad67e71bb4c09fa6ebb21",
"microblock_sequence": 4
}
}All services are managed by a systemd unit file that is set to start on boot.
Manual control is also possible via the manage.sh script at /opt/stacks-blockchain-docker/manage.sh on the host.
Full details on how to use the manage.sh script is available here.
Launching a Droplet using the DigitalOcean API
In addition to creating a Droplet from the Stacks Blockchain 1-Click App via the control panel, you can also use the DigitalOcean API.
As an example, to create a 4GB Stacks Blockchain Droplet in the SFO2 region, you can use the following curl command. You’ll need to either save your API access token to an environment variable or substitute it into the command below.
$ export TOKEN=<digitalocean API token>
$ curl -X POST -H 'Content-Type: application/json' \
-H 'Authorization: Bearer '$TOKEN'' -d \
'{"name":"stacks-blockchain","region":"sfo2","size":"s-2vcpu-4gb","image":"stacksfoundation-stacksblockchain"}' \
"https://api.digitalocean.com/v2/droplets"Was this helpful?
