mirror of
https://github.com/apotdevin/thunderhub.git
synced 2025-02-22 14:22:33 +01:00
280 lines
8.1 KiB
Markdown
280 lines
8.1 KiB
Markdown
# **ThunderHub - Lightning Node Manager**
|
|
|
|

|
|
[](https://github.com/DAVFoundation/captain-n3m0/blob/master/LICENSE)
|
|
|
|
## Table Of Contents
|
|
|
|
- [Introduction](#introduction)
|
|
- [Integrations](#integrations)
|
|
- [Features](#features)
|
|
- [Installation](#installation)
|
|
- [Updating](#updating)
|
|
- [Development](#development)
|
|
- [Docker deployment](#docker)
|
|
|
|
## Introduction
|
|
|
|
ThunderHub is an **open-source** LND node manager where you can manage and monitor your node on any device or browser. It allows you to take control of the lightning network with a simple and intuitive UX and the most up-to-date tech stack.
|
|
|
|
### Integrations
|
|
|
|
**BTCPay Server**
|
|
ThunderHub is currently integrated into BTCPay for easier deployment. If you already have a BTCPay server and want to add ThunderHub or even want to start a BTCPay server from zero, be sure to check out this [tutorial](https://apotdevin.com/blog/thunderhub-btcpay)
|
|
|
|
**Raspiblitz**
|
|
For Raspiblitz users you can also get ThunderHub running by following this [gist](https://gist.github.com/openoms/8ba963915c786ce01892f2c9fa2707bc)
|
|
|
|
### Tech Stack
|
|
|
|
This repository consists of a **NextJS** server that handles both the backend **Graphql Server** and the frontend **React App**. ThunderHub connects to your Lightning Network node by using the gRPC ports.
|
|
|
|
- NextJS
|
|
- ReactJS
|
|
- Typescript
|
|
- Styled-Components
|
|
- Apollo
|
|
- Apollo-Server
|
|
- GraphQL
|
|
- Ln-Service
|
|
|
|
## Features
|
|
|
|
### Monitoring
|
|
|
|
- Overview of current and pending balance for the Lightning and Bitcoin wallets.
|
|
- URI strings for the node (Onion public uri also if available)
|
|
- Invoice and Payment graph.
|
|
- Liquidity report with total remote and local lightning balance.
|
|
- Forwarded payments graph and the routes used for these payments.
|
|
- Complete network info.
|
|
- View open/pending/closed channels and how balanced they are.
|
|
- View channel base and rate fees.
|
|
- View all transactions.
|
|
- View all forwarded payments.
|
|
- View all chain transactions.
|
|
- View all unspent UTXOS.
|
|
|
|
### Management
|
|
|
|
- Send and Receive Lightning payments.
|
|
- Send and Receive Bitcoin payments.
|
|
- Decode lightning payment requests.
|
|
- Open and close channels.
|
|
- Balance your channels through circular payments. ([Check out the Tutorial](https://apotdevin.com/blog/thunderhub-balancing))
|
|
- Update your all your channels fees or individual ones.
|
|
- Backup, verify and recover all your channels.
|
|
- Sign and verify messages.
|
|
|
|
### Visual
|
|
|
|
- Responsive UI for any device. Mobile, Tablet or Desktop.
|
|
- Light and Dark mode.
|
|
- Check values in Bitcoin, Satoshis or Fiat.
|
|
|
|
### Accounts
|
|
|
|
- Many ways to connect to your node: **HEX/Base64 strings**, **LNDConnect Url**, **BTCPayServer Info** or **QR codes**.
|
|
- Have view-only and/or admin accounts.
|
|
- Manage however many accounts your browser storage can hold.
|
|
- Quickly sync your accounts between devices. No need to copy/paste macaroons and certificates.
|
|
|
|
### Deployment
|
|
|
|
- Docker images for easier deployment
|
|
|
|
### Future Features
|
|
|
|
- Channel health/recommendations view
|
|
- Loop In and Out to provide liquidity or remove it from your channels.
|
|
- Storefront interface
|
|
|
|
## **Requirements**
|
|
|
|
- Yarn/npm installed
|
|
- Node installed (Version 12.16.0 or higher)
|
|
|
|
**Older Versions of Node**
|
|
Earlier versions of Node can be used if you replace the following commands:
|
|
|
|
```js
|
|
//Yarn
|
|
yarn start -> yarn start:compatible
|
|
yarn dev -> yarn dev:compatible
|
|
|
|
//NPM
|
|
npm start -> npm start:compatible
|
|
npm run dev -> npm run dev:compatible
|
|
```
|
|
|
|
**HodlHodl integration will not work with older versions of Node!**
|
|
|
|
## Config
|
|
|
|
You can define some environment variables that ThunderHub can start with. To do this create a `.env` file in the root directory with the following parameters:
|
|
|
|
```js
|
|
LOG_LEVEL = 'error' | 'warn' | 'info' | 'http' | 'verbose' | 'debug' | 'silly' //Default: 'info'
|
|
THEME = 'dark' | 'light'; // Default: 'dark'
|
|
CURRENCY = 'sat' | 'btc' | 'eur' | 'usd'; // Default: 'sat'
|
|
FETCH_PRICES = true | false // Default: true
|
|
FETCH_FEES = true | false // Default: true
|
|
HODL_KEY = '[Key provided by HodlHodl]' //Default: ''
|
|
BASE_PATH = '[Base path where you want to have thunderhub running i.e. '/btcpay']' //Default: '/'
|
|
```
|
|
|
|
### SSO Account
|
|
|
|
You can define an account to work with SSO cookie authentication by adding the following parameters in the `.env` file:
|
|
|
|
```js
|
|
COOKIE_PATH = '/path/to/cookie/file/.cookie'; // i.e. '/data/.cookie'
|
|
SSO_SERVER_URL = 'url and port to node'; // i.e. '127.0.0.1:10009'
|
|
SSO_CERT_PATH = '/path/to/tls/certificate'; // i.e. '\lnd\alice\tls.cert'
|
|
SSO_MACAROON_PATH = '/path/to/macaroon/folder'; //i.e. '\lnd\alice\data\chain\bitcoin\regtest\'
|
|
```
|
|
|
|
To login to this account you must add the cookie file content to the end of your ThunderHub url. For example:
|
|
|
|
```
|
|
http://localhost:3000?token=[COOKIE]
|
|
```
|
|
|
|
Replace `[COOKIE]` with the contents of the `.cookie` file.
|
|
|
|
### Server Accounts
|
|
|
|
You can add accounts on the server by adding this parameter to the `.env` file:
|
|
|
|
```js
|
|
ACCOUNT_CONFIG_PATH = '/path/to/config/file.yaml'; // i.e. '/data/thubConfig.yaml'
|
|
```
|
|
|
|
You must also add a YAML file at that location with the following format:
|
|
|
|
```yaml
|
|
masterPassword: 'password' # Default password unless defined in account
|
|
accounts:
|
|
- name: 'Account 1'
|
|
serverUrl: 'url:port'
|
|
macaroonPath: '/path/to/admin.macaroon'
|
|
certificatePath: '/path/to/tls.cert'
|
|
password: 'password for account 1'
|
|
- name: 'Account 2'
|
|
serverUrl: 'url:port'
|
|
macaroonPath: '/path/to/admin.macaroon'
|
|
certificatePath: '/path/to/tls.cert'
|
|
# password: Leave without password and it will use the master password
|
|
```
|
|
|
|
### Fetching prices and fees
|
|
|
|
ThunderHub fetches fiat prices from [Blockchain.com](https://blockchain.info/ticker)'s api and bitcoin on chain fees from [Earn.com](https://bitcoinfees.earn.com/api/v1/fees/recommended)'s api.
|
|
|
|
If you want to deactivate these requests you can set `FETCH_PRICES=false` and `FETCH_FEES=false` in your `.env` file or manually change them inside the settings view of ThunderHub.
|
|
|
|
### Running on different base path
|
|
|
|
Adding a BASE_PATH will run the ThunderHub server on a different base path.
|
|
For example:
|
|
|
|
- default base path of `/` runs ThunderHub on `http://localhost:3000`
|
|
- base path of `/thub` runs ThunderHub on `http://localhost:3000/thub`
|
|
|
|
To run on a base path, ThunderHub needs to be behind a proxy with the following configuration (NGINX example):
|
|
|
|
```nginx
|
|
location /thub/ {
|
|
rewrite ^/thub(.*)$ $1 break;
|
|
proxy_pass http://localhost:3000/;
|
|
}
|
|
```
|
|
|
|
## Installation
|
|
|
|
To run ThunderHub you first need to clone this repository.
|
|
|
|
```js
|
|
git clone https://github.com/apotdevin/thunderhub.git
|
|
```
|
|
|
|
After cloning the repository run `yarn` or `npm install` to get all the necessary modules installed.
|
|
|
|
After all the dependencies have finished installing, you can proceed to build and run the app with the following commands.
|
|
|
|
```javascript
|
|
// Yarn
|
|
yarn build
|
|
yarn start
|
|
|
|
// NPM
|
|
npm run build
|
|
npm start
|
|
```
|
|
|
|
This will start the server on port 3000, so just go to `localhost:3000` to see the app running.
|
|
|
|
If you want to specify a different port (for example port `4000`) run with:
|
|
|
|
```js
|
|
// Yarn
|
|
yarn start -p 4000
|
|
|
|
// NPM
|
|
npm start -- -p 4000
|
|
```
|
|
|
|
## Updating
|
|
|
|
To update ThunderHub to the latest version follow these commands.
|
|
|
|
_Commands have to be called inside the thunderhub repository folder._
|
|
|
|
```js
|
|
// Yarn
|
|
git pull
|
|
yarn
|
|
yarn build
|
|
yarn start
|
|
|
|
// NPM
|
|
git pull
|
|
npm install
|
|
npm run build
|
|
npm run start
|
|
```
|
|
|
|
## Development
|
|
|
|
If you want to develop on ThunderHub and want hot reloading when you do changes, use the following commands:
|
|
|
|
```js
|
|
//Yarn
|
|
yarn dev
|
|
|
|
//NPM
|
|
npm run dev
|
|
```
|
|
|
|
#### Storybook
|
|
|
|
You can also get storybook running for quicker component development.
|
|
|
|
```js
|
|
//Yarn
|
|
yarn storybook
|
|
|
|
//NPM
|
|
npm run storybook
|
|
```
|
|
|
|
## Docker
|
|
|
|
ThunderHub also provides docker images for easier deployment. [Docker Hub](https://hub.docker.com/repository/docker/apotdevin/thunderhub)
|
|
|
|
To get ThunderHub running with docker follow these steps:
|
|
|
|
1. `docker pull apotdevin/thunderhub:v0.5.5` (Or the latest version you find)
|
|
2. `docker run --rm -it -p 3000:3000/tcp apotdevin/thunderhub:v0.5.5`
|
|
|
|
You can now go to `localhost:3000` to see your running instance of ThunderHub
|