ThunderHub LND Lightning Node Manager in your Browser
Go to file
Anthony Potdevin 009195c86f
feat: stats view (#54)
* feat:  channel stats

* chore: 🔧 add node resolver

* chore: 🔧 add monitored time

* chore: 🔧 and queries to front

* fix: 🐛 floats to ints

* chore: 🔧 add progress bars

* chore: 🔧 add channel resolver

* chore: 🔧 refactor forwards frontend

* refactor: ♻️ channel resolvers

* chore: 🔧 refactor channel queries

* refactor: ♻️ peer resolver

* refactor: ♻️ peer query

* fix: 🐛 small changes

* fix: 🐛 typo

* chore: 🔧 stats view wip

* chore: 🔧 add update script

* chore: 🔧 improve ui

* chore: 🔧 move buttons

* fix: 🐛 home path

* chore: 🔧 add public key to node resolver

* refactor: ♻️ resume resolver

* chore: 🔧 remove test account

* chore: 🔧 change logger for lnpay

* feat:  github version

Co-authored-by: apotdevin <apotdevincab@gmail.com>
2020-06-05 18:50:10 +02:00
.circleci ci: 👷 formatting 2020-05-20 07:23:14 +02:00
.github/ISSUE_TEMPLATE Create feature_request.md 2020-04-01 15:22:26 +02:00
.vscode feat: privacy settings (#37) 2020-05-11 06:21:16 +02:00
@types Feat/nextjs (#25) 2020-04-12 18:27:01 +02:00
config feat: stats view (#54) 2020-06-05 18:50:10 +02:00
docs Feat/nextjs (#25) 2020-04-12 18:27:01 +02:00
pages feat: stats view (#54) 2020-06-05 18:50:10 +02:00
public chore: styling small bugs and refactors 2020-04-16 22:36:09 +02:00
scripts feat: stats view (#54) 2020-06-05 18:50:10 +02:00
server feat: stats view (#54) 2020-06-05 18:50:10 +02:00
src feat: stats view (#54) 2020-06-05 18:50:10 +02:00
.babelrc Feat/nextjs (#25) 2020-04-12 18:27:01 +02:00
.commitlintrc.json Feat/nextjs (#25) 2020-04-12 18:27:01 +02:00
.dockerignore chore: 🔧 remove storybook and update deps 2020-05-26 09:04:00 +02:00
.env chore: 🔧 add example env file 2020-05-20 07:02:40 +02:00
.eslintignore fix: 🐛 eslint plugins 2020-05-07 13:51:39 +02:00
.eslintrc.js feat: support button and fixes (#51) 2020-05-31 08:59:49 +02:00
.gitignore ci: 👷 filter changes 2020-05-20 07:21:24 +02:00
.prettierignore Feat/nextjs (#25) 2020-04-12 18:27:01 +02:00
.prettierrc Feat/nextjs (#25) 2020-04-12 18:27:01 +02:00
.versionrc build: add config for standard version 2020-04-14 17:33:22 +02:00
arm32v7.Dockerfile ci: 👷 add package lock to docker file 2020-05-26 09:08:48 +02:00
arm64v8.Dockerfile ci: 👷 add package lock to docker file 2020-05-26 09:08:48 +02:00
CHANGELOG.md chore(release): 🚀 0.6.13 2020-05-31 12:40:48 +02:00
codegen.yml feat: stats view (#54) 2020-06-05 18:50:10 +02:00
Dockerfile ci: 👷 add package lock to docker file 2020-05-26 09:08:48 +02:00
jest.config.js feat: chat integration (#34) 2020-05-01 14:08:30 +02:00
LICENSE chore: update readme and license 2020-02-27 09:06:53 +01:00
next-env.d.ts Feat/nextjs (#25) 2020-04-12 18:27:01 +02:00
next.config.js chore: 🔧 change fetch default 2020-05-31 12:56:02 +02:00
package-lock.json feat: stats view (#54) 2020-06-05 18:50:10 +02:00
package.json feat: stats view (#54) 2020-06-05 18:50:10 +02:00
README.md feat: stats view (#54) 2020-06-05 18:50:10 +02:00
setupTests.js feat: chat integration (#34) 2020-05-01 14:08:30 +02:00
tsconfig.json chore: 🔧 update deps 2020-05-12 06:19:12 +02:00

ThunderHub - Lightning Node Manager

Home Screenshot license

Table Of Contents


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

Raspiblitz For Raspiblitz users you can also get ThunderHub running by following this gist


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)
  • 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:

//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:

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:

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:

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:

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's api and bitcoin on chain fees from Earn.com'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):

location /thub/ {
  rewrite ^/thub(.*)$ $1 break;
  proxy_pass http://localhost:3000/;
}

Installation

To run ThunderHub you first need to clone this repository.

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.

// 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:

// Yarn
yarn start -p 4000

// NPM
npm start -- -p 4000

Updating

There are multiple ways to update ThunderHub to it's latest version.

Commands have to be called inside the thunderhub repository folder.

1. Script Shortcut

// Yarn
yarn update

// NPM
npm run update

2. Script

sh ./scripts/updateToLatest.sh

3. Step by Step

// Yarn
git pull
yarn
yarn build

// NPM
git pull
npm install
npm run build

Then you can start your server:

// Yarn
yarn start

// NPM
npm run start

Development

If you want to develop on ThunderHub and want hot reloading when you do changes, use the following commands:

//Yarn
yarn dev

//NPM
npm run dev

Docker

ThunderHub also provides docker images for easier deployment. Docker Hub

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