No description
Find a file
2023-02-19 09:03:11 +01:00
config_templates Improve readme, still WIP 2023-02-18 19:48:04 +01:00
electrs-docker Electrs back to 0.9.11 2023-02-18 23:18:32 +01:00
.env-example Moved hardcodes from docker compose to .env 2023-02-18 19:24:33 +01:00
.gitignore Initial commit 2023-02-18 19:19:14 +01:00
docker-compose.yaml Specify versions 2023-02-18 23:14:48 +01:00
README.md Document how to backup data. 2023-02-19 09:03:11 +01:00

Counterweight V2

This is the repo where I store everything necessary to spin up my Bitcoin-related node.

It currently includes:

  • Bitcoin core
  • electrs
  • mempool block explorer
  • lnbits

How to deploy

Requirements

These instructions assume you are on a debian/ubuntu machine with docker, docker compose and git installed.

Cloning

First, clone this repo where you would like to run your node.

Building electrs

Since there is no good electrs docker image out there, we roll our own one for this project. The file is electrs-docker/Dockerfile. To build the image, run the following command:

cd electrs-docker
docker build -t my-electrs:latest -f Dockerfile . 

Environment and configuration files

Now, you need to build a .env file. You can start by making a copy of .env-example and filling it.

Afterwards, create the data folder in the root of the cloned repo. Inside, create the folders bitcoin, electrs, mempool and lnbits.

Inside data/bitcoin, you will need to place a bitcoin.conf file. You can use the example in config_templates/bitcoin.conf. Ensure that your inputs here are consistent with the ones in the .env file.

Inside data/electrs/config, you will need to place a config.toml file. You can use the example in config_templates/config.toml. For this one, you should not make any changes if you are following these instructions.

Inside data/lnbits, you will need to place a .env file. Pay attention: this file is specific for LNbits and is unrelated to the other .env file that sits on the root of this repo. The best place to get an example is the official LNbits repository.

Running and Smoke testing

To run, execute a simple docker compose up -d.

Once you get everything running, here is how you can check on the health of the different services:

  • All: check if the containers are running.
  • Bitcoin: check the logs. You should see Bitcoin updating its tip with as new blocks are found.
  • Electrs: connect from Sparrow or another wallet.
  • Mempool: visit the page.
  • LNbits: visit the page, perhaps make a small transaction if you want to be dead sure everything is up and running.

Upgrading versions of the different services

  • Bitcoin: upgrade in docker-compose.yaml.
  • electrs: specify tag in the git checkout command in the custom electrs dockerfile, build again.
  • mempool: upgrade web, api and db in docker-compose.yaml.
  • LNbits: upgrade in docker-compose.yaml.

How to backup data

The relevant assets you should backup are:

  • Your .env file.
  • Your docker-compose-yaml (if you changed any of its contents).
  • Your data folder.

An rsync to another server should do the trick. You probably don't want to copy the bitcoin blockchain and the electrs indexes due to their massive size. You can use the --exclude option when calling rsync to exclude them.