# 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 `Dockerfile-electrs`. To build the image, run the following command: ```bash docker build -t my-electrs:latest -f Dockerfile-electrs . ``` ### 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. ## Upgrading versions of the different services - Bitcoin: upgrade in docker-compose.yaml. - electrs: specify tag in 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 TODO: explain how to back all the data up with a rsync.