Aplicació web

ThunderHub és un gestor de nodes LND de codi obert on pots gestionar i supervisar el teu node des de qualsevol dispositiu o navegador. Et permet prendre el control de la xarxa Lightning amb una interfície d’usuari simple i intuitiva i la tecnologia més puntera.

Pàgina d'inici de ThunderHub

Preparatius

Instal·leu dependències

  • Instal·leu Node.js mitjançant el gestor de paquets apk.

Aquestes són dependències de construcció (es pot eliminar després de la instal·lació, si voleu)

$SU apk add --virtual .build-deps git gnupg npm

Aquestes són dependències en temps d’execució

$SU apk add nodejs-current

Creeu l’usuari/grup thunderhub

$SU addgroup -S thunderhub
$SU adduser \
    -S \
    -D \
    -H \
    -h /dev/null \
    -s /sbin/nologin \
    -G thunderhub \
    -g thunderhub \
    thunderhub

Afegeix l’usuari thunderhub al grup lnd

$SU adduser thunderhub lnd

Afegiu també l’usuari satoshi al grup thunderhub

$SU adduser satoshi thunderhub

Servidor intermediari invers

A la secció de Seguretat, hem configurat un servidor intermediari invers. Ara podem afegir la configuració de ThunderHub.

  • Habilita el servidor intermediari invers per encaminar el trànsit HTTPS extern xifrat internament cap a ThunderHub
$SU $EDITOR /etc/caddy/sites/thunderhub.caddy
/etc/caddy/sites/thunderhub.caddy
:4002 {
        import tls
 
        handle_errors 497 {
                redir https://{host}:{port}{uri} 301
        }
 
        handle {
                reverse_proxy 127.0.0.1:3000
        }
}
  • Torna a carregar el Caddy
$SU rc-service caddy reload

Tallafoc

  • Configura el tallafoc per permetre les sol·licituds HTTPS entrants
$SU $EDITOR /etc/awall/optional/thunderhub.json
/etc/awall/optional/thunderhub.json
{
  "description": "Allow ThunderHub SSL",
 
  "filter": [
    {
      "in": "internet",
      "out": "_fw",
      "service": { "proto": "tcp", "port": 4002 },
      "action": "accept",
      "conn-limit": { "count": 10, "interval": 60 }
    }
  ]
}
  • Habilitar-ho
$SU awall enable thunderhub
$SU awall activate

Instal·lació

ThunderHub ofereix una interfície web lleugera i fàcil d’utilitzar per aconseguir una gran gestió del node.

Descarrega el codi font

Obtenim la darrera versió del codi font de ThunderHub i la instal·lem.

  • Descarrega el codi font de l’última versió de ThunderHub. Pots comprovar la pàgina de versions per veure si hi ha una versió més nova disponible. Tanmateix, altres versions podrien no haver estat provades adequadament amb la resta de la configuració de Microbolt.
cd /tmp
VERSION=0.13.31
git clone --branch v$VERSION https://github.com/apotdevin/thunderhub.git && cd thunderhub

Verificació de signatura

  • Per evitar l’ús de codi font incorrecte, comproveu que el desenvolupador principal Anthony Potdevin hagi signat correctament la versió.
wget -qO- https://github.com/apotdevin.gpg | gpg --import
git verify-commit v$VERSION

Instal·la i compila

  • Instal·leu totes les dependències mitjançant el Node Package Manager (NPM).
npm ci

La instal·lació pot trigar un temps. Pot ser que hi hagi moltes sortides confuses, però si veieu alguna cosa semblant a la següent, la instal·lació ha estat correcta:

⚠️

A data de 2024-09-01, hi ha com a mínim 26 vulnerabilitats que no es poden abordar sense fer canvis substancials que podrien afectar altres parts del programari

npm audit fix
output
26 vulnerabilities (1 low, 10 moderate, 15 high)

To address issues that do not require attention, run:
  npm audit fix

To address all issues (including breaking changes), run:
  npm audit fix --force

Run `npm audit` for details.

Millora la teva privadesa optant per sortir del telemetria de Next.js

npx next telemetry disable
  • Feu-ne una instal·lació permanent global
npm run build
mkdir ./dist/bin
printf "%s\n" \
    "#!/bin/sh" \
    "npm_package_version='$VERSION' \\" \
    "node \$@ /var/lib/thunderhub/main" \
    > ./dist/bin/cli.sh
chmod +x ./dist/bin/cli.sh
  • Instal·la el backend i les dependències
$SU mv -f /tmp/thunderhub/dist /var/lib/thunderhub
$SU cp -R node_modules /var/lib/thunderhub
  • Instal·la el frontend
$SU mkdir -p /var/lib/thunderhub/src/client
$SU cp -R /tmp/thunderhub/src/client/public         /var/lib/thunderhub/src/client/public
$SU cp    /tmp/thunderhub/src/client/next.config.js /var/lib/thunderhub/src/client/next.config.js
$SU mv -f /tmp/thunderhub/src/client/.next          /var/lib/thunderhub/src/client/.next
$SU chown -R thunderhub:thunderhub /var/lib/thunderhub
$SU ln -s /var/lib/thunderhub /usr/lib/node_modules/thunderhub
$SU ln -s ../lib/node_modules/thunderhub/bin/cli.sh /usr/bin/thunderhub

Neteja

cd
rm -rf /tmp/thunderhub
$SU apk del .build-deps

Configuració

  • Edita el fitxer de configuració
$SU $EDITOR /etc/thunderhub/thubConfig.yaml
/etc/thunderhub/thubConfig.yaml
masterPassword: 'PASSWORD' # Default password unless defined in account
accounts:
  - name: 'Microbolt'
    serverUrl: '127.0.0.1:10009'
    macaroonPath: '/var/lib/lnd/data/chain/bitcoin/mainnet/admin.macaroon'
    certificatePath: '/var/lib/lnd/tls.cert'
    password: '[E] ThunderHub password'
💡

Substitueix [E] ThunderHub password per la teva

Habilita les comprovacions de salut automàtiques
/etc/thunderhub/thubConfig.yaml
masterPassword: 'PASSWORD' # Default password unless defined in account
accounts:
  - name: 'Microbolt'
    serverUrl: '127.0.0.1:10009'
    macaroonPath: '/var/lib/lnd/data/chain/bitcoin/mainnet/admin.macaroon'
    certificatePath: '/var/lib/lnd/tls.cert'
    password: '[E] ThunderHub password'
healthCheckPingEnabled: true
Còpies de seguretat automàtiques a Amboss

Tingues en compte que si atures ThunderHub, Amboss interpretarà que el teu node està fora de línia, ja que la connexió s’estableix entre ThunderHub <-> Amboss per enviar pings de comprovació d’estat

/etc/thunderhub/thubConfig.yaml
masterPassword: 'PASSWORD' # Default password unless defined in account
accounts:
  - name: 'Microbolt'
    serverUrl: '127.0.0.1:10009'
    macaroonPath: '/var/lib/lnd/data/chain/bitcoin/mainnet/admin.macaroon'
    certificatePath: '/var/lib/lnd/tls.cert'
    password: '[E] ThunderHub password'
backupsEnabled: true

Aquestes últimes característiques opcionals no estan disponibles per a un node de testnet

Accés remot per Tor
  • Afegiu les línies següents a la secció de “location-hidden services” al fitxer torrc.
$SU $EDITOR /etc/tor/torrc
/etc/tor/torrc
# Hidden Service Thunderhub
HiddenServiceDir /var/lib/tor/thunderhub/
HiddenServiceVersion 3
HiddenServicePoWDefensesEnabled 1
HiddenServicePort 443 127.0.0.1:3000
  • Torneu a carregar la configuració de Tor i obteniu la vostra adreça de connexió.
$SU rc-service tor reload
$SU cat /var/lib/tor/thunderhub/hostname
output
abcdefg..............xyz.onion
  • Ara hauries de poder connectar-te de forma remota al teu Public Pool a través de Tor utilitzant el teu nom d’amfitrió

Inici automàtic a l’arrencada

Ara ens assegurarem que el nostre gestor de nodes Lightning s’iniciï com a servei a l’ordinador perquè estigui sempre en execució.

  • Creeu la unitat init.d de ThunderHub i copieu/enganxeu la configuració següent. Guardar i sortir.
$SU $EDITOR /etc/init.d/thunderhub
/etc/init.d/thunderhub
#!/sbin/openrc-run
 
: ${THUNDERHUB_CONFIGFILE:=/etc/thunderhub/thubConfig.yaml}
: ${THUNDERHUB_DATADIR:=/var/lib/thunderhub}
: ${THUNDERHUB_LOGDIR:=/var/log/thunderhub}
: ${THUNDERHUB_USER:=thunderhub}
: ${THUNDERHUB_GROUP:=thunderhub}
: ${THUNDERHUB_BIN:=/usr/bin/thunderhub}
: ${THUNDERHUB_OPTS=${THUNDERHUB_OPTS}}
: ${THUNDERHUB_SIGTERM_TIMEOUT:=600}
 
THUNDERHUB_PIDDIR="/run/thunderhub"
 
name="ThunderHub"
description="Monitor and manage your node from any browser and any device"
 
directory="${THUNDERHUB_DATADIR}"
required_files="${THUNDERHUB_CONFIGFILE}"
pidfile="${THUNDERHUB_PIDDIR}/${SVCNAME}.pid"
retry="${THUNDERHUB_SIGTERM_TIMEOUT}"
 
command="${THUNDERHUB_BIN}"
command_args="${THUNDERHUB_OPTS}"
command_user="${THUNDERHUB_USER}:${THUNDERHUB_GROUP}"
command_background="true"
 
start_stop_daemon_args="--env BASE_PATH=''
                        --env COOKIE_PATH=''
                        --env ACCOUNT_CONFIG_PATH='${THUNDERHUB_CONFIGFILE}'
                        --env NODE_ENV='production'
                        --env NEXT_TELEMETRY_DISABLED=1
                        --stdout ${THUNDERHUB_LOGDIR}/debug.log
                        --stderr ${THUNDERHUB_LOGDIR}/debug.log"
 
depend() {
    need lnd tor
}
 
start_pre() {
    checkpath --file      --mode 0660 --owner "${command_user}" "${THUNDERHUB_CONFIGFILE}"
    checkpath --directory --mode 0750 --owner "${command_user}" "${THUNDERHUB_DATADIR}"
    checkpath --directory --mode 0755 --owner "${command_user}" "${THUNDERHUB_LOGDIR}"
    checkpath --directory --mode 0755 --owner "${command_user}" "${THUNDERHUB_PIDDIR}"
    checkconfig
}
 
checkconfig() {
    if ! grep -qs '^    macaroonPath: ' "${THUNDERHUB_CONFIGFILE}"
    then
        eerror ""
        eerror "ERROR: You must set a macaroonPath path to run ThunderHub"
        eerror "The setting must appear in ${THUNDERHUB_CONFIGFILE}"
        eerror ""
        return 1
    fi
}
 
stop() {
    ebegin "Stopping ${SVCNAME}"
    pkill -TERM -P "$(cat ${pidfile})"
    start-stop-daemon \
        --stop \
        --pidfile="${pidfile}" \
        --retry="${THUNDERHUB_SIGTERM_TIMEOUT}" \
        --exec="${THUNDERHUB_BIN}"
    eend $?
}
  • Habilita el permís d’execució
$SU chmod +x /etc/init.d/thunderhub

Habilita logrotate

  • Introduïu la configuració següent completa. Guardar i sortir
$SU $EDITOR /etc/logrotate.d/thunderhub
/etc/logrotate.d/thunderhub
/var/log/thunderhub/*.log {
    weekly
    missingok
    rotate 104
    compress
    delaycompress
    notifempty
    create 0640 thunderhub thunderhub
    sharedscripts
    postrotate
        killall -HUP `cat /run/thunderhub/thunderhub.pid`
    endscript
}
  • Prova
$SU logrotate /etc/logrotate.d/thunderhub --debug

Activa i inicia ThunderHub

$SU rc-update add thunderhub
$SU rc-service thunderhub start
🎉

Felicitats! Ara tens el Thunderhub funcionant.

  • Comproveu el registre per veure la sortida de Thunderhub. Sortiu amb Ctrl-C
tail -f /var/log/thunderhub/debug.log

Ara pots accedir a ThunderHub des de la teva xarxa local navegant a https://nakamoto01:4002, https://nakamoto01.local:4002 (o la teva adreça IP equivalent).

Accés al teu compte de node Amboss
  • A la pantalla “Home” - secció “Quick Actions”, feu clic a l’icona d’Amboss “Login”, espereu que la notificació a la part superior dreta us mostri “Logged in” i feu clic de nou a l’icona d’Amboss “Go to”. Això obrirà una pestanya secundària al vostre navegador per accedir al vostre compte de node Amboss
⚠️

Si no podeu fer “Login”, potser la causa és que encara no teniu un canal públic obert. Necessitareu com a mínim un canal públic obert durant uns dies. Planifiqueu obrir un canal de petita mida per estar connectat amb alguns iguals de la Xarxa Lightning o directament al node d’Amboss. Més informació a la documentació d’Amboss

  • Assegureu-vos que esteu connectats al compte d’Amboss, ara tornem a Thunderhub per als següents passos
Activar còpies de seguretat automàtiques i notificacions de comprovació d'estat al compte d'Amboss
  1. Obriu “Settings” prement la roda dentada a la cantonada superior dreta del Thunderhub
  2. Canvieu a “Yes” -> Amboss: “Auto backups” i “Healthcheck Pings”
  3. Proveu d’enviar una còpia de seguretat a Amboss introduint-vos a la secció “Tools”, al menú principal de l’esquerra
  4. Premeu el botó “Push” per provar el funcionament correcte
  5. Torneu al lloc web d’Amboss i accediu a “Account” al menú principal
  6. Accediu a “Backup” i assegureu-vos que la data de la darrera còpia de seguretat sigui la mateixa que la feta anteriorment. Es recomana descarregar el fitxer de còpia de seguretat i emmagatzemar-lo en un lloc segur per a futures recuperacions. El fitxer de còpia de seguretat s’actualitzarà automàticament a Amboss per a cada obertura i tancament de canal. També podeu fer-ho a la secció “Tools” del Thunderhub, “Backups” -> “Backup all channels” -> botó “Download”
  7. A Amboss, accediu a “Monitoring” per configurar “Healthcheck Settings”

No dubteu a enllaçar a les notificacions bot de Telegram, activar les diferents notificacions, completar el vostre perfil de node públic a Amboss i altres coses a les diferents seccions del vostre compte.

Recuperar canals utilitzant el mètode de ThunderHub

Després d’una possible corrupció de dades del teu node LND, assegura’t que aquest node antic estigui completament apagat abans de començar la recuperació. Una vegada hàgiu sincronitzat el nou node, recuperat a la cadena amb les llavors, completat la reexploració completa de la cadena, i instal·lat i engegat el Thunderhub, aneu al tauler de control de Thunderhub.

  1. Des de la barra lateral esquerra, feu clic a “Tools”, i aneu a la secció “Backups” -> “Recover Funds from Channels” -> feu clic al botó “Recover”.
  2. Introduïu el text complet del fitxer de còpia de seguretat dels vostres canals descarregat anteriorment en el pas anterior i feu clic al botó “Recover”. Tots els canals que hàgiu obert al vostre node antic es tancaran forçosament i apareixeran a la pestanya “Pending” a la secció “Channels” fins que es confirmi el tancament
⚠️

Utilitzeu aquesta guia com a últim recurs si heu perdut l’accés al vostre node o no podeu iniciar LND a causa d’un error fatal. Aquesta guia tancarà tots els vostres canals. Els vostres fons estaran disponibles a la cadena a diferents velocitats.

Per al futur: actualització de ThunderHub

Torneu a seguir la pàgina Aplicació web substituint el valor de la variable d’entorn VERSION=x.xx per l’últim si encara no s’ha modificat en aquesta guia.

  • Actualitzeu la configuració de ThunderHub si cal (vegeu les notes de la versió)
$SU $EDITOR /etc/thunderhub/thubConfig.yaml
  • Reinicieu el servei per aplicar els canvis
$SU rc-service thunderhub restart