Move docker docs to ./docker/readme + edit
This commit is contained in:
		
							parent
							
								
									f92036f8da
								
							
						
					
					
						commit
						9753af1fed
					
				
							
								
								
									
										319
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										319
									
								
								README.md
									
									
									
									
									
								
							@ -13,12 +13,14 @@ Mempool can be self-hosted on a wide variety of your own hardware, ranging from
 | 
			
		||||
We support the following installation methods, ranked in order from simple to advanced:
 | 
			
		||||
 | 
			
		||||
1) [One-click installation on full-node distros](#one-click-installation)
 | 
			
		||||
2) [Docker installation on Linux using docker-compose](#docker-installation)
 | 
			
		||||
2) [Docker installation on Linux using docker-compose](./docker/README.md)
 | 
			
		||||
3) [Manual installation on Linux or FreeBSD](#manual-installation)
 | 
			
		||||
4) [Production installation on a powerful FreeBSD server](https://github.com/mempool/mempool/tree/master/production)
 | 
			
		||||
4) [Production installation on a powerful FreeBSD server](./production/README.md)
 | 
			
		||||
 | 
			
		||||
This doc offers install notes on the one-click method and manual install method. Follow the links above for install notes on Docker and production installations.
 | 
			
		||||
 | 
			
		||||
<a id="one-click-installation"></a>
 | 
			
		||||
### One-click installation on full-node distros
 | 
			
		||||
### One-Click Installation
 | 
			
		||||
 | 
			
		||||
Mempool can be conveniently installed on the following full-node distros: 
 | 
			
		||||
- [Umbrel](https://github.com/getumbrel/umbrel)
 | 
			
		||||
@ -27,278 +29,12 @@ Mempool can be conveniently installed on the following full-node distros:
 | 
			
		||||
- [myNode](https://github.com/mynodebtc/mynode)
 | 
			
		||||
- [Start9](https://github.com/Start9Labs/embassy-os)
 | 
			
		||||
 | 
			
		||||
# Docker Installation
 | 
			
		||||
<a id="manual-installation"></a>
 | 
			
		||||
### Manual Installation
 | 
			
		||||
 | 
			
		||||
The `docker` directory contains the Dockerfiles used to build and release the official images and a `docker-compose.yml` file that is intended for end users to run a Mempool instance with minimal effort.
 | 
			
		||||
The following instructions are for a manual installation on Linux or FreeBSD. You may need to change file and directory paths to match your OS.
 | 
			
		||||
 | 
			
		||||
## bitcoind only configuration
 | 
			
		||||
 | 
			
		||||
To run an instance with the default settings, use the following command:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
$ docker-compose up
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
The default configuration will allow you to run Mempool using `bitcoind` as the backend, so address lookups will be disabled. It assumes you have added RPC credentials for the `mempool` user with a `mempool` password in your `bitcoin.conf` file:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
rpcuser=mempool
 | 
			
		||||
rpcpassword=mempool
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
If you want to use your current credentials, update them in the `docker-compose.yml` file:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
  api:
 | 
			
		||||
    environment:
 | 
			
		||||
      MEMPOOL_BACKEND: "none"
 | 
			
		||||
      RPC_HOST: "172.27.0.1"
 | 
			
		||||
      RPC_PORT: "8332"
 | 
			
		||||
      RPC_USER: "mempool"
 | 
			
		||||
      RPC_PASS: "mempool"
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Note: the IP in the example above refers to Docker's default gateway IP address so the container can hit the `bitcoind` instance running on the host machine. If your setup is different, update it accordingly.
 | 
			
		||||
 | 
			
		||||
You can check if the instance is running by visiting http://localhost - the graphs will be populated as new transactions are detected.
 | 
			
		||||
 | 
			
		||||
## bitcoind+electrum configuration
 | 
			
		||||
 | 
			
		||||
In order to run with a `electrum` compatible server as the backend, in addition to the settings required for running with `bitcoind` above, you will need to make the following changes to the `docker-compose.yml` file:
 | 
			
		||||
 | 
			
		||||
- Under the `api` service, change the value of the `MEMPOOL_BACKEND` key from `none` to `electrum`:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
  api:
 | 
			
		||||
    environment:
 | 
			
		||||
      MEMPOOL_BACKEND: "none"
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
- Under the `api` service, set the `ELECTRUM_HOST` and `ELECTRUM_PORT` keys to your Docker host IP address and set `ELECTRUM_TLS_ENABLED` to `false`:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
  api:
 | 
			
		||||
    environment:
 | 
			
		||||
      ELECTRUM_HOST: "172.27.0.1"
 | 
			
		||||
      ELECTRUM_PORT: "50002"
 | 
			
		||||
      ELECTRUM_TLS_ENABLED: "false"
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
You can update any of the backend settings in the `mempool-config.json` file using the following environment variables to override them under the same `api` `environment` section.
 | 
			
		||||
 | 
			
		||||
JSON:
 | 
			
		||||
```
 | 
			
		||||
  "MEMPOOL": {
 | 
			
		||||
    "NETWORK": "mainnet",
 | 
			
		||||
    "BACKEND": "electrum",
 | 
			
		||||
    "HTTP_PORT": 8999,
 | 
			
		||||
    "SPAWN_CLUSTER_PROCS": 0,
 | 
			
		||||
    "API_URL_PREFIX": "/api/v1/",
 | 
			
		||||
    "POLL_RATE_MS": 2000,
 | 
			
		||||
    "CACHE_DIR": "./cache",
 | 
			
		||||
    "CLEAR_PROTECTION_MINUTES": 20,
 | 
			
		||||
    "RECOMMENDED_FEE_PERCENTILE": 50,
 | 
			
		||||
    "BLOCK_WEIGHT_UNITS": 4000000,
 | 
			
		||||
    "INITIAL_BLOCKS_AMOUNT": 8,
 | 
			
		||||
    "MEMPOOL_BLOCKS_AMOUNT": 8,
 | 
			
		||||
    "PRICE_FEED_UPDATE_INTERVAL": 600,
 | 
			
		||||
    "USE_SECOND_NODE_FOR_MINFEE": false,
 | 
			
		||||
    "EXTERNAL_ASSETS": ["https://raw.githubusercontent.com/mempool/mining-pools/master/pools.json"],
 | 
			
		||||
    "STDOUT_LOG_MIN_PRIORITY": "info"
 | 
			
		||||
  },
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
docker-compose overrides:
 | 
			
		||||
```
 | 
			
		||||
      MEMPOOL_NETWORK: ""
 | 
			
		||||
      MEMPOOL_BACKEND: ""
 | 
			
		||||
      MEMPOOL_HTTP_PORT: ""
 | 
			
		||||
      MEMPOOL_SPAWN_CLUSTER_PROCS: ""
 | 
			
		||||
      MEMPOOL_API_URL_PREFIX: ""
 | 
			
		||||
      MEMPOOL_POLL_RATE_MS: ""
 | 
			
		||||
      MEMPOOL_CACHE_DIR: ""
 | 
			
		||||
      MEMPOOL_CLEAR_PROTECTION_MINUTES: ""
 | 
			
		||||
      MEMPOOL_RECOMMENDED_FEE_PERCENTILE: ""
 | 
			
		||||
      MEMPOOL_BLOCK_WEIGHT_UNITS: ""
 | 
			
		||||
      MEMPOOL_INITIAL_BLOCKS_AMOUNT: ""
 | 
			
		||||
      MEMPOOL_MEMPOOL_BLOCKS_AMOUNT: ""
 | 
			
		||||
      MEMPOOL_PRICE_FEED_UPDATE_INTERVAL: ""
 | 
			
		||||
      MEMPOOL_USE_SECOND_NODE_FOR_MINFEE: ""
 | 
			
		||||
      MEMPOOL_EXTERNAL_ASSETS: ""
 | 
			
		||||
      MEMPOOL_STDOUT_LOG_MIN_PRIORITY: ""
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
JSON:
 | 
			
		||||
```
 | 
			
		||||
"CORE_RPC": {
 | 
			
		||||
    "HOST": "127.0.0.1",
 | 
			
		||||
    "PORT": 8332,
 | 
			
		||||
    "USERNAME": "mempool",
 | 
			
		||||
    "PASSWORD": "mempool"
 | 
			
		||||
  },
 | 
			
		||||
```
 | 
			
		||||
docker-compose overrides:
 | 
			
		||||
```
 | 
			
		||||
      CORE_RPC_HOST: ""
 | 
			
		||||
      CORE_RPC_PORT: ""
 | 
			
		||||
      CORE_RPC_USERNAME: ""
 | 
			
		||||
      CORE_RPC_PASSWORD: ""
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
JSON:
 | 
			
		||||
```
 | 
			
		||||
  "ELECTRUM": {
 | 
			
		||||
    "HOST": "127.0.0.1",
 | 
			
		||||
    "PORT": 50002,
 | 
			
		||||
    "TLS_ENABLED": true
 | 
			
		||||
  },
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
docker-compose overrides:
 | 
			
		||||
```
 | 
			
		||||
      ELECTRUM_HOST: ""
 | 
			
		||||
      ELECTRUM_PORT: ""
 | 
			
		||||
      ELECTRUM_TLS: ""
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
JSON:
 | 
			
		||||
```
 | 
			
		||||
  "ESPLORA": {
 | 
			
		||||
    "REST_API_URL": "http://127.0.0.1:3000"
 | 
			
		||||
  },
 | 
			
		||||
```
 | 
			
		||||
docker-compose overrides:
 | 
			
		||||
```
 | 
			
		||||
      ESPLORA_REST_API_URL: ""
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
JSON:
 | 
			
		||||
```
 | 
			
		||||
  "SECOND_CORE_RPC": {
 | 
			
		||||
    "HOST": "127.0.0.1",
 | 
			
		||||
    "PORT": 8332,
 | 
			
		||||
    "USERNAME": "mempool",
 | 
			
		||||
    "PASSWORD": "mempool"
 | 
			
		||||
  },
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
docker-compose overrides:
 | 
			
		||||
```
 | 
			
		||||
      SECOND_CORE_RPC_HOST: ""
 | 
			
		||||
      SECOND_CORE_RPC_PORT: ""
 | 
			
		||||
      SECOND_CORE_RPC_USERNAME: ""
 | 
			
		||||
      SECOND_CORE_RPC_PASSWORD: ""
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
JSON:
 | 
			
		||||
```
 | 
			
		||||
  "DATABASE": {
 | 
			
		||||
    "ENABLED": true,
 | 
			
		||||
    "HOST": "127.0.0.1",
 | 
			
		||||
    "PORT": 3306,
 | 
			
		||||
    "DATABASE": "mempool",
 | 
			
		||||
    "USERNAME": "mempool",
 | 
			
		||||
    "PASSWORD": "mempool"
 | 
			
		||||
  },
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
docker-compose overrides:
 | 
			
		||||
```
 | 
			
		||||
      DATABASE_ENABLED: ""
 | 
			
		||||
      DATABASE_HOST: ""
 | 
			
		||||
      DATABASE_PORT: ""
 | 
			
		||||
      DATABASE_DATABASE: ""
 | 
			
		||||
      DATABASE_USERAME: ""
 | 
			
		||||
      DATABASE_PASSWORD: ""
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
JSON:
 | 
			
		||||
```
 | 
			
		||||
  "SYSLOG": {
 | 
			
		||||
    "ENABLED": true,
 | 
			
		||||
    "HOST": "127.0.0.1",
 | 
			
		||||
    "PORT": 514,
 | 
			
		||||
    "MIN_PRIORITY": "info",
 | 
			
		||||
    "FACILITY": "local7"
 | 
			
		||||
  },
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
docker-compose overrides:
 | 
			
		||||
```
 | 
			
		||||
      SYSLOG_ENABLED: ""
 | 
			
		||||
      SYSLOG_HOST: ""
 | 
			
		||||
      SYSLOG_PORT: ""
 | 
			
		||||
      SYSLOG_MIN_PRIORITY: ""
 | 
			
		||||
      SYSLOG_FACILITY: ""
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
JSON:
 | 
			
		||||
```
 | 
			
		||||
  "STATISTICS": {
 | 
			
		||||
    "ENABLED": true,
 | 
			
		||||
    "TX_PER_SECOND_SAMPLE_PERIOD": 150
 | 
			
		||||
  },
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
docker-compose overrides:
 | 
			
		||||
```
 | 
			
		||||
      STATISTICS_ENABLED: ""
 | 
			
		||||
      STATISTICS_TX_PER_SECOND_SAMPLE_PERIOD: ""
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
JSON:
 | 
			
		||||
```
 | 
			
		||||
  "BISQ": {
 | 
			
		||||
    "ENABLED": false,
 | 
			
		||||
    "DATA_PATH": "/bisq/statsnode-data/btc_mainnet/db"
 | 
			
		||||
  }
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
docker-compose overrides:
 | 
			
		||||
```
 | 
			
		||||
      BISQ_ENABLED: ""
 | 
			
		||||
      BISQ_DATA_PATH: ""
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
JSON:
 | 
			
		||||
```
 | 
			
		||||
  "SOCKS5PROXY": {
 | 
			
		||||
    "ENABLED": false,
 | 
			
		||||
    "HOST": "127.0.0.1",
 | 
			
		||||
    "PORT": "9050",
 | 
			
		||||
    "USERNAME": "",
 | 
			
		||||
    "PASSWORD": ""
 | 
			
		||||
  }
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
docker-compose overrides:
 | 
			
		||||
```
 | 
			
		||||
      SOCKS5PROXY_ENABLED: ""
 | 
			
		||||
      SOCKS5PROXY_HOST: ""
 | 
			
		||||
      SOCKS5PROXY_PORT: ""
 | 
			
		||||
      SOCKS5PROXY_USERNAME: ""
 | 
			
		||||
      SOCKS5PROXY_PASSWORD: ""
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
JSON:
 | 
			
		||||
```
 | 
			
		||||
  "PRICE_DATA_SERVER": {
 | 
			
		||||
    "TOR_URL": "http://wizpriceje6q5tdrxkyiazsgu7irquiqjy2dptezqhrtu7l2qelqktid.onion/getAllMarketPrices",
 | 
			
		||||
    "CLEARNET_URL": "https://price.bisq.wiz.biz/getAllMarketPrices"
 | 
			
		||||
  }
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
docker-compose overrides:
 | 
			
		||||
```
 | 
			
		||||
      PRICE_DATA_SERVER_TOR_URL: ""
 | 
			
		||||
      PRICE_DATA_SERVER_CLEARNET_URL: ""
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
# Manual Installation
 | 
			
		||||
 | 
			
		||||
The following instructions are for a manual installation on Linux or FreeBSD. The file and directory paths may need to be changed to match your OS.
 | 
			
		||||
 | 
			
		||||
## Dependencies
 | 
			
		||||
Dependencies:
 | 
			
		||||
 | 
			
		||||
* [Bitcoin](https://github.com/bitcoin/bitcoin)
 | 
			
		||||
* [Electrum](https://github.com/romanz/electrs)
 | 
			
		||||
@ -306,9 +42,10 @@ The following instructions are for a manual installation on Linux or FreeBSD. Th
 | 
			
		||||
* [MariaDB](https://github.com/mariadb/server)
 | 
			
		||||
* [Nginx](https://github.com/nginx/nginx)
 | 
			
		||||
 | 
			
		||||
## Mempool
 | 
			
		||||
#### Get Latest Mempool Release
 | 
			
		||||
 | 
			
		||||
Clone the mempool repo, and checkout the latest release tag:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
  git clone https://github.com/mempool/mempool
 | 
			
		||||
  cd mempool
 | 
			
		||||
@ -316,20 +53,22 @@ Clone the mempool repo, and checkout the latest release tag:
 | 
			
		||||
  git checkout $latestrelease
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## Bitcoin Core (bitcoind)
 | 
			
		||||
#### Configure Bitcoin Core
 | 
			
		||||
 | 
			
		||||
Enable RPC and txindex in `bitcoin.conf`:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
  rpcuser=mempool
 | 
			
		||||
  rpcpassword=mempool
 | 
			
		||||
  txindex=1
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## MySQL
 | 
			
		||||
#### Get & Configure MySQL
 | 
			
		||||
 | 
			
		||||
Install MariaDB from your OS package manager:
 | 
			
		||||
 | 
			
		||||
Install MariaDB from OS package manager:
 | 
			
		||||
```bash
 | 
			
		||||
  # Linux
 | 
			
		||||
  # Debian, Ubuntu, etc.
 | 
			
		||||
  apt-get install mariadb-server mariadb-client
 | 
			
		||||
 | 
			
		||||
  # macOS
 | 
			
		||||
@ -338,6 +77,7 @@ Install MariaDB from OS package manager:
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Create database and grant privileges:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
  MariaDB [(none)]> drop database mempool;
 | 
			
		||||
  Query OK, 0 rows affected (0.00 sec)
 | 
			
		||||
@ -349,7 +89,8 @@ Create database and grant privileges:
 | 
			
		||||
  Query OK, 0 rows affected (0.00 sec)
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## Mempool Backend
 | 
			
		||||
#### Build Mempool Backend
 | 
			
		||||
 | 
			
		||||
Install mempool dependencies from npm and build the backend:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
@ -365,7 +106,8 @@ In the `backend` folder, make a copy of the sample config and modify it to fit y
 | 
			
		||||
  cp mempool-config.sample.json mempool-config.json
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Edit `mempool-config.json` to add your Bitcoin Core node RPC credentials:
 | 
			
		||||
Edit `mempool-config.json` with your Bitcoin Core node RPC credentials:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
{
 | 
			
		||||
  "MEMPOOL": {
 | 
			
		||||
@ -401,7 +143,7 @@ Start the backend:
 | 
			
		||||
  npm run start
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
When it's running you should see output like this:
 | 
			
		||||
When it's running, you should see output like this:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
  Mempool updated in 0.189 seconds
 | 
			
		||||
@ -424,9 +166,9 @@ When it's running you should see output like this:
 | 
			
		||||
  Updating mempool
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## Mempool Frontend
 | 
			
		||||
#### Build Mempool Frontend
 | 
			
		||||
 | 
			
		||||
Install mempool dependencies from npm and build the frontend static HTML/CSS/JS:
 | 
			
		||||
Install the Mempool dependencies with npm and build the frontend:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
  # frontend
 | 
			
		||||
@ -435,15 +177,15 @@ Install mempool dependencies from npm and build the frontend static HTML/CSS/JS:
 | 
			
		||||
  npm run build
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Install the output into nginx webroot folder:
 | 
			
		||||
Install the output into the nginx webroot folder:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
  sudo rsync -av --delete dist/ /var/www/
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## nginx + certbot
 | 
			
		||||
#### `nginx` + `certbot`
 | 
			
		||||
 | 
			
		||||
Install the supplied nginx.conf and nginx-mempool.conf in /etc/nginx
 | 
			
		||||
Install the supplied `nginx.conf` and `nginx-mempool.conf` in `/etc/nginx`:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
  # install nginx and certbot
 | 
			
		||||
@ -457,7 +199,6 @@ Install the supplied nginx.conf and nginx-mempool.conf in /etc/nginx
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
If everything went okay you should see the beautiful mempool :grin:
 | 
			
		||||
If everything went well, you should see the beautiful mempool :grin:
 | 
			
		||||
 | 
			
		||||
If you get stuck on "loading blocks", this means the websocket can't connect.
 | 
			
		||||
Check your nginx proxy setup, firewalls, etc. and open an issue if you need help.
 | 
			
		||||
If you get stuck on "loading blocks", this means the websocket can't connect. Check your nginx proxy setup, firewalls, etc. and open an issue if you need help.
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										334
									
								
								docker/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										334
									
								
								docker/README.md
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,334 @@
 | 
			
		||||
# Docker Installation
 | 
			
		||||
 | 
			
		||||
This directory contains the Dockerfiles used to build and release the official images and a `docker-compose.yml` for end users to run a Mempool instance with minimal effort.
 | 
			
		||||
 | 
			
		||||
You can choose to configure Mempool to run with a basic backend powered by just `bitcoind`, or with `bitcoind` along with an Electrum-compatible server for full functionality.
 | 
			
		||||
 | 
			
		||||
## `bitcoind`-only Configuration
 | 
			
		||||
 | 
			
		||||
_Note: address lookups require an Electrum server and will not work with this configuration._
 | 
			
		||||
 | 
			
		||||
Make sure `bitcoind` is running and synced.
 | 
			
		||||
 | 
			
		||||
The default Docker configuration assumes you have added RPC credentials for a `mempool` user with a `mempool` password in your `bitcoin.conf` file, like so:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
rpcuser=mempool
 | 
			
		||||
rpcpassword=mempool
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
If you want to use different credentials, specify them in the `docker-compose.yml` file:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
  api:
 | 
			
		||||
    environment:
 | 
			
		||||
      MEMPOOL_BACKEND: "none"
 | 
			
		||||
      CORE_RPC_HOST: "172.27.0.1"
 | 
			
		||||
      CORE_RPC_PORT: "8332"
 | 
			
		||||
      CORE_RPC_USERNAME: "customuser"
 | 
			
		||||
      CORE_RPC_PASSWORD: "custompassword"
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
The IP address in the example above refers to Docker's default gateway IP address so that the container can hit the `bitcoind` instance running on the host machine. If your setup is different, update it accordingly.
 | 
			
		||||
 | 
			
		||||
Now, run:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
$ docker-compose up
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Your Mempool instance should be running at http://localhost. The graphs will be populated as new transactions are detected.
 | 
			
		||||
 | 
			
		||||
## `bitcoind` + Electrum Server Configuration
 | 
			
		||||
 | 
			
		||||
First, configure `bitcoind` as specified above, and make sure your Electrum server is running and synced.
 | 
			
		||||
 | 
			
		||||
Then, make sure the following variables are set in `docker-compose.yml`, as shown below, so Mempool can connect to your Electrum server:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
  api:
 | 
			
		||||
    environment:
 | 
			
		||||
      MEMPOOL_BACKEND: "electrum"
 | 
			
		||||
      ELECTRUM_HOST: "172.27.0.1"
 | 
			
		||||
      ELECTRUM_PORT: "50002"
 | 
			
		||||
      ELECTRUM_TLS_ENABLED: "false"
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Of course, if your Docker host IP address is different, update accordingly.
 | 
			
		||||
 | 
			
		||||
With `bitcoind` and Electrum Server set up, run Mempool with:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
$ docker-compose up
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## Further Configuration
 | 
			
		||||
 | 
			
		||||
Optionally, you can override any other backend settings from `mempool-config.json`.
 | 
			
		||||
 | 
			
		||||
Below we list all settings from `mempool-config.json` and the corresponding overrides you can make in the `api` > `environment` section of `docker-compose.yml`. 
 | 
			
		||||
 | 
			
		||||
<br/>
 | 
			
		||||
 | 
			
		||||
`mempool-config.json`:
 | 
			
		||||
```
 | 
			
		||||
  "MEMPOOL": {
 | 
			
		||||
    "NETWORK": "mainnet",
 | 
			
		||||
    "BACKEND": "electrum",
 | 
			
		||||
    "HTTP_PORT": 8999,
 | 
			
		||||
    "SPAWN_CLUSTER_PROCS": 0,
 | 
			
		||||
    "API_URL_PREFIX": "/api/v1/",
 | 
			
		||||
    "POLL_RATE_MS": 2000,
 | 
			
		||||
    "CACHE_DIR": "./cache",
 | 
			
		||||
    "CLEAR_PROTECTION_MINUTES": 20,
 | 
			
		||||
    "RECOMMENDED_FEE_PERCENTILE": 50,
 | 
			
		||||
    "BLOCK_WEIGHT_UNITS": 4000000,
 | 
			
		||||
    "INITIAL_BLOCKS_AMOUNT": 8,
 | 
			
		||||
    "MEMPOOL_BLOCKS_AMOUNT": 8,
 | 
			
		||||
    "PRICE_FEED_UPDATE_INTERVAL": 600,
 | 
			
		||||
    "USE_SECOND_NODE_FOR_MINFEE": false,
 | 
			
		||||
    "EXTERNAL_ASSETS": ["https://raw.githubusercontent.com/mempool/mining-pools/master/pools.json"],
 | 
			
		||||
    "STDOUT_LOG_MIN_PRIORITY": "info"
 | 
			
		||||
  },
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Corresponding `docker-compose.yml` overrides:
 | 
			
		||||
```
 | 
			
		||||
  api:
 | 
			
		||||
    environment:
 | 
			
		||||
      MEMPOOL_NETWORK: ""
 | 
			
		||||
      MEMPOOL_BACKEND: ""
 | 
			
		||||
      MEMPOOL_HTTP_PORT: ""
 | 
			
		||||
      MEMPOOL_SPAWN_CLUSTER_PROCS: ""
 | 
			
		||||
      MEMPOOL_API_URL_PREFIX: ""
 | 
			
		||||
      MEMPOOL_POLL_RATE_MS: ""
 | 
			
		||||
      MEMPOOL_CACHE_DIR: ""
 | 
			
		||||
      MEMPOOL_CLEAR_PROTECTION_MINUTES: ""
 | 
			
		||||
      MEMPOOL_RECOMMENDED_FEE_PERCENTILE: ""
 | 
			
		||||
      MEMPOOL_BLOCK_WEIGHT_UNITS: ""
 | 
			
		||||
      MEMPOOL_INITIAL_BLOCKS_AMOUNT: ""
 | 
			
		||||
      MEMPOOL_MEMPOOL_BLOCKS_AMOUNT: ""
 | 
			
		||||
      MEMPOOL_PRICE_FEED_UPDATE_INTERVAL: ""
 | 
			
		||||
      MEMPOOL_USE_SECOND_NODE_FOR_MINFEE: ""
 | 
			
		||||
      MEMPOOL_EXTERNAL_ASSETS: ""
 | 
			
		||||
      MEMPOOL_STDOUT_LOG_MIN_PRIORITY: ""
 | 
			
		||||
      ...
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
<br/>
 | 
			
		||||
 | 
			
		||||
`mempool-config.json`:
 | 
			
		||||
```
 | 
			
		||||
"CORE_RPC": {
 | 
			
		||||
    "HOST": "127.0.0.1",
 | 
			
		||||
    "PORT": 8332,
 | 
			
		||||
    "USERNAME": "mempool",
 | 
			
		||||
    "PASSWORD": "mempool"
 | 
			
		||||
  },
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Corresponding `docker-compose.yml` overrides:
 | 
			
		||||
```
 | 
			
		||||
  api:
 | 
			
		||||
    environment:
 | 
			
		||||
      CORE_RPC_HOST: ""
 | 
			
		||||
      CORE_RPC_PORT: ""
 | 
			
		||||
      CORE_RPC_USERNAME: ""
 | 
			
		||||
      CORE_RPC_PASSWORD: ""
 | 
			
		||||
      ...
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
<br/>
 | 
			
		||||
 | 
			
		||||
`mempool-config.json`:
 | 
			
		||||
```
 | 
			
		||||
  "ELECTRUM": {
 | 
			
		||||
    "HOST": "127.0.0.1",
 | 
			
		||||
    "PORT": 50002,
 | 
			
		||||
    "TLS_ENABLED": true
 | 
			
		||||
  },
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Corresponding `docker-compose.yml` overrides:
 | 
			
		||||
```
 | 
			
		||||
  api:
 | 
			
		||||
    environment:
 | 
			
		||||
      ELECTRUM_HOST: ""
 | 
			
		||||
      ELECTRUM_PORT: ""
 | 
			
		||||
      ELECTRUM_TLS: ""
 | 
			
		||||
      ...
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
<br/>
 | 
			
		||||
 | 
			
		||||
`mempool-config.json`:
 | 
			
		||||
```
 | 
			
		||||
  "ESPLORA": {
 | 
			
		||||
    "REST_API_URL": "http://127.0.0.1:3000"
 | 
			
		||||
  },
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Corresponding `docker-compose.yml` overrides:
 | 
			
		||||
```
 | 
			
		||||
  api:
 | 
			
		||||
    environment:
 | 
			
		||||
      ESPLORA_REST_API_URL: ""
 | 
			
		||||
      ...
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
<br/>
 | 
			
		||||
 | 
			
		||||
`mempool-config.json`:
 | 
			
		||||
```
 | 
			
		||||
  "SECOND_CORE_RPC": {
 | 
			
		||||
    "HOST": "127.0.0.1",
 | 
			
		||||
    "PORT": 8332,
 | 
			
		||||
    "USERNAME": "mempool",
 | 
			
		||||
    "PASSWORD": "mempool"
 | 
			
		||||
  },
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Corresponding `docker-compose.yml` overrides:
 | 
			
		||||
```
 | 
			
		||||
  api:
 | 
			
		||||
    environment:
 | 
			
		||||
      SECOND_CORE_RPC_HOST: ""
 | 
			
		||||
      SECOND_CORE_RPC_PORT: ""
 | 
			
		||||
      SECOND_CORE_RPC_USERNAME: ""
 | 
			
		||||
      SECOND_CORE_RPC_PASSWORD: ""
 | 
			
		||||
      ...
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
<br/>
 | 
			
		||||
 | 
			
		||||
`mempool-config.json`:
 | 
			
		||||
```
 | 
			
		||||
  "DATABASE": {
 | 
			
		||||
    "ENABLED": true,
 | 
			
		||||
    "HOST": "127.0.0.1",
 | 
			
		||||
    "PORT": 3306,
 | 
			
		||||
    "DATABASE": "mempool",
 | 
			
		||||
    "USERNAME": "mempool",
 | 
			
		||||
    "PASSWORD": "mempool"
 | 
			
		||||
  },
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Corresponding `docker-compose.yml` overrides:
 | 
			
		||||
```
 | 
			
		||||
  api:
 | 
			
		||||
    environment:
 | 
			
		||||
      DATABASE_ENABLED: ""
 | 
			
		||||
      DATABASE_HOST: ""
 | 
			
		||||
      DATABASE_PORT: ""
 | 
			
		||||
      DATABASE_DATABASE: ""
 | 
			
		||||
      DATABASE_USERAME: ""
 | 
			
		||||
      DATABASE_PASSWORD: ""
 | 
			
		||||
      ...
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
<br/>
 | 
			
		||||
 | 
			
		||||
`mempool-config.json`:
 | 
			
		||||
```
 | 
			
		||||
  "SYSLOG": {
 | 
			
		||||
    "ENABLED": true,
 | 
			
		||||
    "HOST": "127.0.0.1",
 | 
			
		||||
    "PORT": 514,
 | 
			
		||||
    "MIN_PRIORITY": "info",
 | 
			
		||||
    "FACILITY": "local7"
 | 
			
		||||
  },
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Corresponding `docker-compose.yml` overrides:
 | 
			
		||||
```
 | 
			
		||||
  api:
 | 
			
		||||
    environment:
 | 
			
		||||
      SYSLOG_ENABLED: ""
 | 
			
		||||
      SYSLOG_HOST: ""
 | 
			
		||||
      SYSLOG_PORT: ""
 | 
			
		||||
      SYSLOG_MIN_PRIORITY: ""
 | 
			
		||||
      SYSLOG_FACILITY: ""
 | 
			
		||||
      ...
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
<br/>
 | 
			
		||||
 | 
			
		||||
`mempool-config.json`:
 | 
			
		||||
```
 | 
			
		||||
  "STATISTICS": {
 | 
			
		||||
    "ENABLED": true,
 | 
			
		||||
    "TX_PER_SECOND_SAMPLE_PERIOD": 150
 | 
			
		||||
  },
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Corresponding `docker-compose.yml` overrides:
 | 
			
		||||
```
 | 
			
		||||
  api:
 | 
			
		||||
    environment:
 | 
			
		||||
      STATISTICS_ENABLED: ""
 | 
			
		||||
      STATISTICS_TX_PER_SECOND_SAMPLE_PERIOD: ""
 | 
			
		||||
      ...
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
<br/>
 | 
			
		||||
 | 
			
		||||
`mempool-config.json`:
 | 
			
		||||
```
 | 
			
		||||
  "BISQ": {
 | 
			
		||||
    "ENABLED": false,
 | 
			
		||||
    "DATA_PATH": "/bisq/statsnode-data/btc_mainnet/db"
 | 
			
		||||
  }
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Corresponding `docker-compose.yml` overrides:
 | 
			
		||||
```
 | 
			
		||||
  api:
 | 
			
		||||
    environment:
 | 
			
		||||
      BISQ_ENABLED: ""
 | 
			
		||||
      BISQ_DATA_PATH: ""
 | 
			
		||||
      ...
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
<br/>
 | 
			
		||||
 | 
			
		||||
`mempool-config.json`:
 | 
			
		||||
```
 | 
			
		||||
  "SOCKS5PROXY": {
 | 
			
		||||
    "ENABLED": false,
 | 
			
		||||
    "HOST": "127.0.0.1",
 | 
			
		||||
    "PORT": "9050",
 | 
			
		||||
    "USERNAME": "",
 | 
			
		||||
    "PASSWORD": ""
 | 
			
		||||
  }
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Corresponding `docker-compose.yml` overrides:
 | 
			
		||||
```
 | 
			
		||||
  api:
 | 
			
		||||
    environment:
 | 
			
		||||
      SOCKS5PROXY_ENABLED: ""
 | 
			
		||||
      SOCKS5PROXY_HOST: ""
 | 
			
		||||
      SOCKS5PROXY_PORT: ""
 | 
			
		||||
      SOCKS5PROXY_USERNAME: ""
 | 
			
		||||
      SOCKS5PROXY_PASSWORD: ""
 | 
			
		||||
      ...
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
<br/>
 | 
			
		||||
 | 
			
		||||
`mempool-config.json`:
 | 
			
		||||
```
 | 
			
		||||
  "PRICE_DATA_SERVER": {
 | 
			
		||||
    "TOR_URL": "http://wizpriceje6q5tdrxkyiazsgu7irquiqjy2dptezqhrtu7l2qelqktid.onion/getAllMarketPrices",
 | 
			
		||||
    "CLEARNET_URL": "https://price.bisq.wiz.biz/getAllMarketPrices"
 | 
			
		||||
  }
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Corresponding `docker-compose.yml` overrides:
 | 
			
		||||
```
 | 
			
		||||
  api:
 | 
			
		||||
    environment:
 | 
			
		||||
      PRICE_DATA_SERVER_TOR_URL: ""
 | 
			
		||||
      PRICE_DATA_SERVER_CLEARNET_URL: ""
 | 
			
		||||
      ...
 | 
			
		||||
```
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user