[Introduzione] -- [Perché avere un nodo Bitcoin] -- [Preparativi] -- [Configurazione Iniziale da PC] -- [Preparazione Software Raspberry PI] -- [Assemblaggio Hardware Nodo] -- [Configurazione Software Nodo] -- [Bitcoin] -- [Lightning] -- [Mainnet] -- [Bonus]-- [FAQ] -- [TO DO]
Difficoltà: media
Ci vuole un po’ ad abituarsi al fatto che il portafoglio LND debba essere sbloccato manualmente ogni volta che il demone LND viene riavviato, qualsivoglia sia il motive. Questo ha molto senso da un punto di vista di sicurezza, dato che il portafoglio è crittato e la chiave di sicurezza non è archiviata sulla medesima macchina. Per un’operatività affidabile, ad ogni modo, non è ottimale, dato che potete riavviare LND dopo un riavvio del raspi (dovuto magari ad un crash o ad una mancanza di corrente), ma poi questo resterà inattivo a causa del portafoglio bloccato e non potrà quindi operare.
Per questo può tornare untile uno script che sblocchi automaticamente il portafoglio. La password è archiviata nella directory root in formato testo, quindi non è chiaramente sicura, ma per un ammontare allocato ragionevole (:warning: mettete in un nodo LND solo quello che siete ragionevolmente disposti a perdere :warning:) è una buona via di mezzo. Potete sempre decidere di restare sullo sbloccaggio manuale, o implementare una soluzione che sblocchi il portafoglio da una macchina remota.
$ systemd --version
-
Come utente admin, create una nuova directory e salvate la vostra password [C] in un file di testo
$ sudo mkdir /etc/lnd
$ sudo nano /etc/lnd/pwd
-
Lo script che segue sblocca il portafoglio LND tramite il servizio web (interfaccia REST - REpresentational State Transfer). Qualche informazione in più:
- Prima di tutto lo script verifica se il RasPi si sia appena avviato o se si sia riavviato solo il servizio A seconda del risultato di questo check aspetta o 3 minuti (180 secondi) o 10 secondi in modo che LND sia pronto. Questi settaggi sono adatti nella maggior parte dei casi, ma sono comunque configurabili a piacere nel caso si verificassero degli errori di time-out nella vostra implementazione
- Successivamente lo script verifica se stiate operando sulla rete Bitcoin di Test o di produzione.
- L’output della chiamata API è scritto in coda al file
debug.log
. Controllate qui per capire cosa stia succedendo nel caso che il portafoglio non si sblocchi (non si vedranno ulteriori errori). - Tutte le volte che un portafoglio è sbloccato viene registrato nel file
audit.log
.
-
Copiate lo script seguente in un nuovo file.
$ sudo nano /etc/lnd/unlock
#!/bin/sh
# LND wallet auto-unlock script (Updated for LND 0.5 and above)
# 2018 by meeDamian, robclark56 (Updated by zwarbo, martinatime, CodingMuziekwijk)
LN_ROOT="/home/bitcoin/.lnd"
BITCOIN_DIR="/home/bitcoin/.bitcoin"
upSeconds="$(cat /proc/uptime | grep -o '^[0-9]\+')"
upMins=$((${upSeconds} / 60))
if [ "${upMins}" -lt "5" ]
then
/bin/sleep 180s
else
/bin/sleep 10s
fi
chain="$(bitcoin-cli -datadir=${BITCOIN_DIR} getblockchaininfo | jq -r '.chain')"
curl -s \
-H "Grpc-Metadata-macaroon: $(xxd -ps -u -c 1000 ${LN_ROOT}/data/chain/bitcoin/${chain}net/admin.macaroon))" \
--cacert ${LN_ROOT}/tls.cert \
-X POST -d "{\"wallet_password\": \"$(cat /etc/lnd/pwd | tr -d '\n' | base64 -w0)\"}" \
https://localhost:8080/v1/unlockwallet >> /etc/lnd/debug.log 2>&1
echo "$? $(date)" >> /etc/lnd/audit.log
exit 0
-
Create la directory e rendete la direcoty medesima e tutto il contenuto accessibile solo all’utente root.
$ sudo chmod 400 /etc/lnd/pwd $ sudo chmod 100 /etc/lnd/unlock $ sudo chown root:root /etc/lnd/*
-
Modificate la configurazione di lnd.systemd. In modo da avviare lo script appena dopo che LND sia stato avviato
$ sudo nano /etc/systemd/system/lnd.service
# Eliminate questa linea, se presente:
# PIDFile=/home/bitcoin/.lnd/lnd.pid
# Aggiungete questa linea immediatamente sotto la sezione ExecStart:
ExecStartPost=+/etc/lnd/unlock
# Assicuratevi che iltempo di timeout sia maggiore tel tempo di esecuzione dello script aspresso in secondi , es. 240s
TimeoutSec=240
-
Modificate il file di configurazione di LND per abilitare l’interfaccia REST sulla porta 8080
$ sudo nano /home/bitcoin/.lnd/lnd.conf
# Aggiungete la linea seguente nella sezione [Application Options]: restlisten=localhost:8080
-
Riavviate il demone systemd, riavviate LND ed osservate il processo di avvio per monitorare se il portafoglio sia automaticamente sbloccato
$ sudo systemctl daemon-reload $ sudo systemctl restart lnd
-
Potete osservare come LND si avvi ed il portafoglio venga sbloccacato collegandovi in una seconda sessione ed analizzando il file di log:
$ sudo journalctl -u lnd -f
Avanti: 10.Bonus