2022-02-07 21:24:05 -08:00
# The Mempool Open Source Projectâ„¢ [](https://dashboard.cypress.io/projects/ry4br7/runs)
2019-08-23 09:51:12 +09:00
2022-05-02 14:15:28 -04:00
Mempool is the fully-featured mempool visualizer, explorer, and API service running at [mempool.space ](https://mempool.space/ ).
It is an open-source project developed and operated for the benefit of the Bitcoin community, with a focus on the emerging transaction fee market that is evolving Bitcoin into a multi-layer ecosystem.
2020-03-30 03:58:28 +09:00
2021-12-07 23:59:33 +09:00

2020-03-30 03:58:28 +09:00
2022-05-03 13:04:02 -04:00
# Installation Methods
2021-02-11 14:57:43 +09:00
2022-05-02 14:35:03 -04:00
Mempool can be self-hosted on a wide variety of your own hardware, ranging from a simple one-click installation on a Raspberry Pi full-node distro all the way to a robust production instance on a powerful FreeBSD server.
2021-02-11 14:57:43 +09:00
2022-05-02 14:35:03 -04:00
We support the following installation methods, ranked in order from simple to advanced:
1) [One-click installation on full-node distros ](#one-click-installation )
2022-05-03 13:04:02 -04:00
2) [Docker installation on Linux using docker-compose ](./docker )
2022-05-02 14:35:03 -04:00
3) [Manual installation on Linux or FreeBSD ](#manual-installation )
2022-05-03 13:04:02 -04:00
4) [Production installation on a powerful FreeBSD server ](./production )
2022-05-03 00:01:20 -04:00
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.
2022-05-02 14:35:03 -04:00
< a id = "one-click-installation" > < / a >
2022-05-03 13:04:02 -04:00
## One-Click Installation
2022-05-02 14:35:03 -04:00
Mempool can be conveniently installed on the following full-node distros:
- [Umbrel ](https://github.com/getumbrel/umbrel )
- [RaspiBlitz ](https://github.com/rootzoll/raspiblitz )
- [RoninDojo ](https://code.samourai.io/ronindojo/RoninDojo )
- [myNode ](https://github.com/mynodebtc/mynode )
- [Start9 ](https://github.com/Start9Labs/embassy-os )
2021-02-11 14:57:43 +09:00
2022-05-03 00:01:20 -04:00
< a id = "manual-installation" > < / a >
2022-05-03 13:04:02 -04:00
## Manual Installation
2022-01-12 17:18:33 -08:00
2022-05-03 00:01:20 -04:00
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.
2022-01-12 17:18:33 -08:00
2022-05-04 11:59:23 -04:00
You will need [Bitcoin Core ](https://github.com/bitcoin/bitcoin ), [Electrum Server ](https://github.com/romanz/electrs ), [Node.js ](https://github.com/nodejs/node ), [MariaDB ](https://github.com/mariadb/server ), and [Nginx ](https://github.com/nginx/nginx ). Below, we walk through how to configure each of these.
2019-07-22 17:46:36 +09:00
2022-05-03 13:04:02 -04:00
### 1. Get Latest Mempool Release
2019-07-22 17:46:36 +09:00
2022-05-03 00:52:16 -04:00
Clone the Mempool repo, and checkout the latest release tag:
2022-05-03 00:01:20 -04:00
2020-02-26 02:34:37 +09:00
```bash
2022-05-03 13:04:02 -04:00
$ git clone https://github.com/mempool/mempool
$ cd mempool
$ latestrelease=$(curl -s https://api.github.com/repos/mempool/mempool/releases/latest|grep tag_name|head -1|cut -d '"' -f4)
$ git checkout $latestrelease
2020-02-26 02:34:37 +09:00
```
2022-05-03 13:04:02 -04:00
### 2. Configure Bitcoin Core
2019-07-22 17:46:36 +09:00
2021-01-11 23:07:16 +09:00
Enable RPC and txindex in `bitcoin.conf` :
2022-05-03 00:01:20 -04:00
2019-09-08 13:37:07 -04:00
```bash
2022-05-03 13:04:02 -04:00
rpcuser=mempool
rpcpassword=mempool
txindex=1
2019-07-22 17:46:36 +09:00
```
2022-05-03 13:04:02 -04:00
### 3. Get & Configure MySQL
2022-05-03 00:01:20 -04:00
Install MariaDB from your OS package manager:
2019-07-22 17:46:36 +09:00
2019-09-08 13:37:07 -04:00
```bash
2022-05-03 13:04:02 -04:00
# Debian, Ubuntu, etc.
$ apt-get install mariadb-server mariadb-client
2019-09-08 13:37:07 -04:00
2022-05-03 13:04:02 -04:00
# macOS
$ brew install mariadb
$ mysql.server start
2019-07-22 17:46:36 +09:00
```
2022-05-03 00:52:16 -04:00
Create a database and grant privileges:
2022-05-03 00:01:20 -04:00
2019-09-08 13:37:07 -04:00
```bash
2022-05-03 13:04:02 -04:00
MariaDB [(none)]> drop database mempool;
Query OK, 0 rows affected (0.00 sec)
2019-07-22 17:46:36 +09:00
2022-05-03 13:04:02 -04:00
MariaDB [(none)]> create database mempool;
Query OK, 1 row affected (0.00 sec)
2019-07-22 17:46:36 +09:00
2022-05-03 13:04:02 -04:00
MariaDB [(none)]> grant all privileges on mempool.* to 'mempool'@'%' identified by 'mempool';
Query OK, 0 rows affected (0.00 sec)
2019-07-22 17:46:36 +09:00
```
2022-05-03 13:04:02 -04:00
### 4. Build Mempool Backend
2022-05-03 00:01:20 -04:00
2022-05-03 13:04:02 -04:00
Install Mempool dependencies with npm and build the backend:
2021-01-11 23:07:16 +09:00
```bash
2022-05-03 13:04:02 -04:00
$ cd backend
$ npm install --prod
$ npm run build
2021-01-11 23:07:16 +09:00
```
2022-05-03 00:52:16 -04:00
In the `backend` folder, make a copy of the sample config:
2019-07-22 17:46:36 +09:00
2021-01-11 23:07:16 +09:00
```bash
2022-05-03 13:04:02 -04:00
$ cp mempool-config.sample.json mempool-config.json
2021-01-11 23:07:16 +09:00
```
2019-09-08 13:37:07 -04:00
2022-05-03 00:01:20 -04:00
Edit `mempool-config.json` with your Bitcoin Core node RPC credentials:
2019-09-08 13:37:07 -04:00
```bash
2021-01-11 23:07:16 +09:00
{
"MEMPOOL": {
"NETWORK": "mainnet",
"BACKEND": "electrum",
2021-12-07 23:59:33 +09:00
"HTTP_PORT": 8999
2021-01-11 23:07:16 +09:00
},
"CORE_RPC": {
2021-12-07 23:59:33 +09:00
"HOST": "127.0.0.1",
"PORT": 8332,
2021-01-11 23:07:16 +09:00
"USERNAME": "mempool",
2021-12-07 23:59:33 +09:00
"PASSWORD": "mempool"
2021-01-11 23:07:16 +09:00
},
"ELECTRUM": {
"HOST": "127.0.0.1",
"PORT": 50002,
2021-12-07 23:59:33 +09:00
"TLS_ENABLED": true
2021-01-11 23:07:16 +09:00
},
"DATABASE": {
"ENABLED": true,
2021-01-30 18:43:58 +07:00
"HOST": "127.0.0.1",
2021-01-11 23:07:16 +09:00
"PORT": 3306,
"USERNAME": "mempool",
"PASSWORD": "mempool",
"DATABASE": "mempool"
}
}
2019-07-22 17:46:36 +09:00
```
2021-01-11 23:07:16 +09:00
Start the backend:
2019-07-22 17:46:36 +09:00
2019-09-08 13:37:07 -04:00
```bash
2022-05-03 13:04:02 -04:00
$ npm run start
2019-09-08 13:37:07 -04:00
```
2021-01-11 23:07:16 +09:00
2022-05-03 00:01:20 -04:00
When it's running, you should see output like this:
2019-07-22 17:46:36 +09:00
2019-09-08 13:37:07 -04:00
```bash
2022-05-03 13:04:02 -04:00
Mempool updated in 0.189 seconds
Updating mempool
Mempool updated in 0.096 seconds
Updating mempool
Mempool updated in 0.099 seconds
Updating mempool
Calculated fee for transaction 1 / 10
Calculated fee for transaction 2 / 10
Calculated fee for transaction 3 / 10
Calculated fee for transaction 4 / 10
Calculated fee for transaction 5 / 10
Calculated fee for transaction 6 / 10
Calculated fee for transaction 7 / 10
Calculated fee for transaction 8 / 10
Calculated fee for transaction 9 / 10
Calculated fee for transaction 10 / 10
Mempool updated in 0.243 seconds
Updating mempool
2019-09-08 13:37:07 -04:00
```
2022-05-03 13:04:02 -04:00
### 5. Build Mempool Frontend
2019-12-01 11:50:14 +09:00
2022-05-03 00:01:20 -04:00
Install the Mempool dependencies with npm and build the frontend:
2019-12-01 11:50:14 +09:00
2021-01-11 23:07:16 +09:00
```bash
2022-05-03 13:04:02 -04:00
$ cd frontend
$ npm install --prod
$ npm run build
2019-07-22 17:46:36 +09:00
```
2019-08-23 09:51:12 +09:00
2022-05-03 00:01:20 -04:00
Install the output into the nginx webroot folder:
2019-07-22 17:46:36 +09:00
2019-09-08 13:37:07 -04:00
```bash
2022-05-03 13:04:02 -04:00
$ sudo rsync -av --delete dist/ /var/www/
2019-07-22 17:46:36 +09:00
```
2022-05-03 13:04:02 -04:00
### 6. `nginx` + `certbot`
2021-01-11 23:07:16 +09:00
2022-05-03 00:01:20 -04:00
Install the supplied `nginx.conf` and `nginx-mempool.conf` in `/etc/nginx` :
2020-06-22 22:10:49 +07:00
```bash
2022-05-03 13:04:02 -04:00
# install nginx and certbot
$ apt-get install -y nginx python3-certbot-nginx
2021-01-11 23:07:16 +09:00
2022-05-03 13:04:02 -04:00
# install the mempool configuration for nginx
$ cp nginx.conf nginx-mempool.conf /etc/nginx/
2021-01-11 23:07:16 +09:00
2022-05-03 13:04:02 -04:00
# replace example.com with your domain name
$ certbot --nginx -d example.com
2021-01-11 23:07:16 +09:00
```
2019-08-23 09:51:12 +09:00
2022-05-03 00:01:20 -04:00
If everything went well, you should see the beautiful mempool :grin:
2019-07-22 17:46:36 +09:00
2022-05-03 00:01:20 -04:00
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.