counterweight_v2/README.md
2023-02-19 19:18:19 +01:00

95 lines
3 KiB
Markdown

# Counterweight V2
Release: v1
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:
```bash
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](https://github.com/lnbits/lnbits).
### 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.
### Monitoring
TODO: explain how to setup automatic monitoring of all the services
## 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.