Skip to content

Instantly share code, notes, and snippets.

@openoms
Last active March 21, 2024 19:09
Show Gist options
  • Star 7 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save openoms/8ba963915c786ce01892f2c9fa2707bc to your computer and use it in GitHub Desktop.
Save openoms/8ba963915c786ce01892f2c9fa2707bc to your computer and use it in GitHub Desktop.
ThunderHub Installation

example: https://www.thunderhub.io/
https://github.com/apotdevin/thunderhub
use lnd v0.10.0 for full compatibility

RaspiBlitz install script:

https://github.com/rootzoll/raspiblitz/blob/v1.6/home.admin/config.scripts/bonus.thunderhub.sh
usage:

# update NodeJS
wget https://raw.githubusercontent.com/rootzoll/raspiblitz/v1.6/home.admin/config.scripts/bonus.nodejs.sh
bash bonus.nodejs.sh off
bash bonus.nodejs.sh on
# download thunderhub install script
wget https://raw.githubusercontent.com/rootzoll/raspiblitz/v1.6/home.admin/config.scripts/bonus.thunderhub.sh
# run
bash bonus.thunderhub.sh on

Manual installation on a RaspiBlitz:

# Preparations
# check and install NodeJS
/home/admin/config.scripts/bonus.nodejs.sh

# open the firewall for the chosen port (here: 3010)
# set any free port (the default port: 3000 is reserved for RTL)
# fill in the approrpriate local subnet (here: 192.168.0.0/16)
sudo ufw allow from 192.168.0.0/16 to any port 3010 comment 'allow ThunderHub on LAN'

# create a dedicated Hidden Service (if Tor is on)):
/home/admin/config.scripts/internet.hiddenservice.sh thunderhub 80 3010

# create thunderhub user
sudo adduser --disabled-password --gecos "" thunderhub

# change to thunderhub user
sudo su - thunderhub

git clone https://github.com/apotdevin/thunderhub.git
cd thunderhub
npm install
npm run build

# run this in Tmux if you want to keep it running after closing the terminal
npm run start -- -p 3010

Connect to RASPIBLITZ_IP:3010 or to the TOR_HIDDEN_SERVICE.onion in the Tor Browser.

Copy the HEX macaroon and TLS.cert from the menu: LNDCREDS -> EXPORT -> HEX
Use localhost or the LAN_IP and the GRPC port 10009.

Afterwards use the command to run (in Tmux if you want to keep it running after closing the terminal):

sudo su - thunderhub
cd thunderhub
npm run start:compatible -- -p 3010

To uninstall ThunderHub:

sudo userdel -rf thunderhub

To update ThunderHub:

with the RaspiBlitz install script:

bash bonus.thunderhub.sh update

Manual:

sudo systemctl stop thunderhub
sudo su - thunderhub
cd thunderhub
git pull
npm install
npm run build
exit
sudo systemctl start thunderhub

.env file:

nano /home/thunderhub/thunderhub/.env

# -----------
# Server Configs
# -----------
LOG_LEVEL='debug'
# HODL_KEY='HODL_HODL_API_KEY'
# BASE_PATH='/basePath'

# -----------
# Interface Configs
# -----------
THEME='dark'
# CURRENCY='sat'
# FETCH_PRICES=false
# FETCH_FEES=false

# -----------
# Account Configs
# -----------
ACCOUNT_CONFIG_PATH='/home/thunderhub/thubConfig.yaml'
#COOKIE_PATH='/home/thunderhub/.cookie'
#SSO_SERVER_URL='127.0.0.1:10009'
#SSO_CERT_PATH='/home/thunderhub/.lnd/tls.cert'
#SSO_MACAROON_PATH='/home/thunderhub/.lnd/data/chain/bitcoin/mainnet/'

thubConfig.yaml:

nano /home/thunderhub/thubConfig.yaml

masterPassword: 'PASSWORD' # Default password unless defined in account
accounts:
  - name: 'blitz'
    serverUrl: '127.0.0.1:10009'
    macaroonPath: '/home/thunderhub/.lnd/data/chain/bitcoin/mainnet/admin.macaroon'
    certificatePath: '/home/thunderhub/.lnd/tls.cert'
   #password: 'accountpassword'

Systemd unit

(can copy-paste the whole script)

    # install service
    echo "*** Install ThundeHub systemd for ${network} on ${chain} ***"
    cat > /home/admin/thunderhub.service <<EOF
# Systemd unit for thunderhub
# /etc/systemd/system/thunderhub.service

[Unit]
Description=ThunderHub daemon
Wants=lnd.service
After=lnd.service

[Service]
WorkingDirectory=/home/thunderhub/thunderhub
ExecStart=/usr/bin/npm run start -- -p 3010
User=thunderhub
Restart=always
TimeoutSec=120
RestartSec=30
StandardOutput=null
StandardError=journal

[Install]
WantedBy=multi-user.target
EOF

    sudo mv /home/admin/thunderhub.service /etc/systemd/system/thunderhub.service 
    sudo chown root:root /etc/systemd/system/thunderhub.service
    sudo systemctl enable thunderhub
    echo "OK - the ThunderHub service is now enabled"
 
 sudo systemctl start thunderhub
@drunkenclam
Copy link

@openoms done, thanks

@drunkenclam
Copy link

@openoms is it correct that sometimes port 3001 is used and sometimes 3010?

@openoms
Copy link
Author

openoms commented May 26, 2020

thanks fixed, it needs to be consistent. Decided to use 3010 as it will be in RaspiBlitz.

@Jestopher-BTC
Copy link

When I dump the Systemd Unit into the command line, I get an error at the "fi" line.

@openoms
Copy link
Author

openoms commented May 28, 2020

@Jestopher-BTC sure, removed that

@hermanlim
Copy link

Hi, can anyone confirm whether the 'Chats' is working on Raspiblitz 1.6 RC3 with Thunder Hub fully updated? I keep getting a "Cannot read property 'messages' of undefined" error.

@grnqrtr
Copy link

grnqrtr commented Jul 25, 2020

@hermanlim Yes, I just checked, seems to be working fine for me on Raspiblitz 1.6 RC3 with ThunderHub fully updated.

@apotdevin
Copy link

Hey @ hermanlim, when are you getting this error?

@hermanlim
Copy link

hermanlim commented Jul 25, 2020

@apotdevin, I'm getting it everytime I click on the chat bubble, on the top right of the screen.
This has never worked properly, although the rest of the app works well and without issue.

@grnqrtr, thanks for checking.

Screenshot_20200725_204614

@apotdevin
Copy link

@hermanlim thanks! Will look into it

@Jestopher-BTC
Copy link

Jestopher-BTC commented Aug 13, 2020

After trying the automated scripts, I attempted the manual install on my raspi 3B+. It appears to be maxing out the memory. Any suggestions?

thunderhub@raspberrypi:~/thunderhub $ npm run build

thunderhub@0.9.3 build /home/thunderhub/thunderhub
next build

info - Loaded env from /home/thunderhub/thunderhub/.env
info - Using external babel configuration from /home/thunderhub/thunderhub/.babelrc
Creating an optimized production build .
<--- Last few GCs --->

[25147:0x28e49d8] 250310 ms: Scavenge 228.7 (231.6) -> 228.3 (231.8) MB, 5.3 / 0.0 ms (average mu = 0.187, current mu = 0.027) allocation failure
[25147:0x28e49d8] 251037 ms: Mark-sweep 228.7 (232.1) -> 227.5 (231.6) MB, 691.9 / 0.1 ms (average mu = 0.359, current mu = 0.525) allocation failure scavenge might not succeed
[25147:0x28e49d8] 251066 ms: Scavenge 227.9 (231.6) -> 227.5 (231.6) MB, 7.7 / 0.0 ms (average mu = 0.359, current mu = 0.525) allocation failure

<--- JS stacktrace --->

==== JS stack trace =========================================

0: ExitFrame [pc: 0xe1edbc]

Security context: 0x5514e3ad
1: toString [0x29a08d41] [buffer.js:~771] [pc=0x5d0a0b14](this=0x4e585f51 ,0x23540279 ,0x23540279 ,0x23540279 )
2: arguments adaptor frame: 0->3
3: InternalFrame [pc: 0xe1ae54]
4: EntryFrame [pc: 0xe1ab54]
5: builtin exit frame: parse(this=0x55145f35 ,0x4e585f51 ...

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
Aborted
npm ERR! code ELIFECYCLE
npm ERR! errno 134
npm ERR! thunderhub@0.9.3 build: next build
npm ERR! Exit status 134
npm ERR!
npm ERR! Failed at the thunderhub@0.9.3 build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR! /home/thunderhub/.npm/_logs/2020-08-13T17_17_27_738Z-debug.log

Log output:

0 info it worked if it ends with ok
1 verbose cli [
1 verbose cli '/usr/local/lib/nodejs/node-v12.16.3-linux-armv7l/bin/node',
1 verbose cli '/usr/bin/npm',
1 verbose cli 'run',
1 verbose cli 'build'
1 verbose cli ]
2 info using npm@6.14.4
3 info using node@v12.16.3
4 verbose run-script [ 'prebuild', 'build', 'postbuild' ]
5 info lifecycle thunderhub@0.9.3prebuild: thunderhub@0.9.3
6 info lifecycle thunderhub@0.9.3
build: thunderhub@0.9.3
7 verbose lifecycle thunderhub@0.9.3build: unsafe-perm in lifecycle true
8 verbose lifecycle thunderhub@0.9.3
build: PATH: /usr/local/lib/nodejs/node-v12.16.3-linux-armv7l/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/home/thunderhub/thunderhub/node_modules/.bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games:/sbin:/usr/local/lib/nodejs/node--/bin/
9 verbose lifecycle thunderhub@0.9.3build: CWD: /home/thunderhub/thunderhub
10 silly lifecycle thunderhub@0.9.3
build: Args: [ '-c', 'next build' ]
11 silly lifecycle thunderhub@0.9.3build: Returned: code: 134 signal: null
12 info lifecycle thunderhub@0.9.3
build: Failed to exec build script
13 verbose stack Error: thunderhub@0.9.3 build: next build
13 verbose stack Exit status 134
13 verbose stack at EventEmitter. (/usr/local/lib/nodejs/node-v12.16.3-linux-armv7l/lib/node_modules/npm/node_modules/npm-lifecycle/index.js:332:16)
13 verbose stack at EventEmitter.emit (events.js:310:20)
13 verbose stack at ChildProcess. (/usr/local/lib/nodejs/node-v12.16.3-linux-armv7l/lib/node_modules/npm/node_modules/npm-lifecycle/lib/spawn.js:55:14)
13 verbose stack at ChildProcess.emit (events.js:310:20)
13 verbose stack at maybeClose (internal/child_process.js:1021:16)
13 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:286:5)
14 verbose pkgid thunderhub@0.9.3
15 verbose cwd /home/thunderhub/thunderhub
16 verbose Linux 4.19.118-v7+
17 verbose argv "/usr/local/lib/nodejs/node-v12.16.3-linux-armv7l/bin/node" "/usr/bin/npm" "run" "build"
18 verbose node v12.16.3
19 verbose npm v6.14.4
20 error code ELIFECYCLE
21 error errno 134
22 error thunderhub@0.9.3 build: next build
22 error Exit status 134
23 error Failed at the thunderhub@0.9.3 build script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 134, true ]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment