Phoenixd + LNBits: Guida all’installazione di un nodo lightning cloud (non custodial)
Cos’è Phoenixd
Phoenixd è un demone che può essere eseguito sulla tua infrastruttura e ti fornisce un nodo non custodial (quindi abbiamo noi il possesso delle chiavi private), con gestione della liquidità integrata. Non devi preoccuparti quindi di apertura e/o chiusura canali ed ogni altra “cosa” inerente al nodo.
Trovi maggiori dettagli sul sito web di phoenixd https://phoenix.acinq.co/server/.
In questo tutorial andiamo ad installare il demone di phoenixd ed integreremo LNBits per poter operare direttamente da interfaccia web.
Requisiti:
> VPS;
> Dominio (opzionale per LN address);
> Più o meno 20 minuti del tuo tempo;
Procediamo eseguendo gli step di sicurezza che trovate in questo mio articolo 👉🏻 https://medium.com/@giuxfila/come-rendere-sicuro-il-proprio-server-vps-a3a99c9fb3db
Installazione di phoenixd
Prima di procedere con l’installazione del nodo dobbiamo scarichiamo i pacchetti di unzip e wget, lanciando il comando:
sudo apt-get install -y unzip wget
Procediamo adesso scaricando il demone di phoneixd lanciando il comando:
wget https://github.com/ACINQ/phoenixd/releases/download/v0.3.2/phoenix-0.3.2-linux-x64.zip
(ricordiamoci di scaricare sempre l’ultima versione che troviamo disponibile nella repository ufficiale di phoenixd 👉🏻https://github.com/ACINQ/phoenixd/releases/).
Una volta effettuato il download del file .zip di phoenixd scoppattiamolo con unzip:
unzip phoenix-0.3.2-linux-x64.zip && sudo rm -r phoenix-0.3.2-linux-x64.zip
(il nome del file cambia in base alla versione che avete scaricato).
Con il comando rm -r successivamente andiamo ad eliminare il file .zip;
Effettuati i passaggi di download ed unzip del file ci ritroveremo la directory “phoenix-0.3.1-linux-x64” (sempre specificando che i numeri sono relativi alla versione e quindi potrebbero cambiare nel Vs. caso), ci basterà entrare dentro questa directory:
cd phoenix-0.3.2-linux-x64
e successivamente lanciare il comando
./phoenixd
2024-07-27 10:26:12 datadir: /home/users/.phoenix
2024-07-27 10:26:12 chain: Mainnet
2024-07-27 10:26:12 autoLiquidity: 2000000 sat
2024-07-27 10:26:12 nodeid: STRINGHE_DI_NUMERI
2024-07-27 10:26:12 offer: STRINGHE_DI_NUMERI
2024-07-27 10:26:12 connecting to lightning peer...
2024-07-27 10:26:12 connected to lightning peer
2024-07-27 10:26:12 listening on http://127.0.0.1:9740
2024-07-27 10:26:12 fee credit: 0 sat
In questo momento abbiamo avviato correttamente il nostro demone.
Per accertarci che tutto funzioni correttamente apriamo un’altra shell ed avviamo nuovamente la connessione ssh con il nostro server, successivamente dirigiamoci nella cartella di phoenix
cd phoenix-0.3.1-linux-x64
./phoenix-cli getinfo
Riceverete una risposta così:
./phoenix-cli getinfo
{
"nodeId": "iltuonodoid",
"channels": [
],
"chain": "mainnet",
"blockHeight": 854479,
"version": "0.3.1-b735020"
Il nostro nodo è perfettamente funzionante e pronto all’uso.
Integrazione con systemd, per avvio automatico
Una volta chiuso, riavviato il nostro VPS dovremmo rilanciare il codice “./phoneixd” per avviare nuovamente il nodo ecc ecc.
Visto e considerato che vogliamo ricevere pagamento h24, senza avere seccature di ogni genere andiamo a creare un servizio che si avvia in AUTOMATICO.
Per prima cosa creiamo un file nella directory di systemd:
sudo nano /etc/systemd/system/phoenixd.service
copiamo questo codice cambiando le voci interessate
[Unit]
Description=phonenixd
After=network.target
[Service]
ExecStart=/home/giuseppe/phoenix-0.3.2-linux-x64/phoenixd --agree-to-terms-of-service
Restart=always
User=giuseppe #Cambiare con il proprio user
[Install]
WantedBy=multi-user.target
A questo punto salviamo il file, CTRL+X e “Y” per confermare, lanciamo questi due comandi per abilitare e far partire il server phoenixd
sudo systemctl enable phoenixd.service
sudo systemctl start phoenixd.service
RICORDA DI EFFETTUARE UN BACKUP DELLA SEED!
Per effettuare il backup delle nostre 12 (dodici) parole andiamo nella cartella nascosta ./phoenix e visualizziamo la seed.
cat .phoenix/seed.dat
Installazione ed integrazione con LNBits
Lo strumento messo a disposizione da ACINQ, phoenixd è veramente MOLTO potente, perché ci permette di far girare un nodo con 3 comandi, ed avere gestita tutta la parte dei bilanciamenti ed altre millemila “cose” che soprattutto per i newbie possono essere difficili e complesse.
Per rendere il tutto più semplice e gradevole con una WebUI andremo a collegare il nodo di phoenixd precedentemente settato con un’istanza di LNBits.
LNbits può essere definito come un sistema di account per il proprio nodo Lightning Network, con la possibilità di aggiungere moltissime estensioni. Normalmente un nodo Lightning Network può gestire un solo wallet Lightning.
Installazione di LNBits
Per installare LNBits in questa guida utilizzeremo (poetry), per farlo andiamo a scaricare e installare python
sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt install python3.9 python3.9-distutils
Una volta confermato ed installato python andiamo ad installare poetry
curl -sSL https://install.python-poetry.org | python3 -
Una volta completata l’installazione di poetry, utilizziamo il percorso di installazione stampato sul terminale e sostituiamolo nel seguente comando:
export PATH="/home/user/.local/bin:$PATH"
Andiamo a copiare il repository di lnbits, successivamente entriamo all’interno della cartella e successivamente cambiamo il contesto di lavoro corrente al branch “main”.
git clone https://github.com/lnbits/lnbits.git
cd lnbits
git checkout main
Adesso, dobbiamo verificare la nostra versione di python, lanciamo il comando:
python3 --version
segniamoci la nostra versione e successivamente passiamo al download delle librerie (nel mio caso la versione di python3 è la 3.10.12 cambia il comando in base alla tua versione), prima di procedere con questo comando effettuiamo un nuovo login:
poetry env use python3.10
poetry install --only main
Successivamente, creiamo una cartella “data” e creiamo un file con tutte le variabili con nome “.env”
mkdir data
Creazione del database con PostgreSQL
Scarichiamo ed installiamo postgresql
sudo apt-get -y install postgresql
Accediamo alla shell dell’utente postgresql e successivamente lanciamo il comando psql
sudo -i -u postgres
psql
In questa schermata andremo ad aggiungere un nuovo database con una password bella strong!!:
ALTER USER postgres PASSWORD '!UnaPasswordBellaStrong!';
Adesso usciamo
\q
Creiamo il database lnbits e successivamente usciamo
createdb lnbits
exit
Adesso assicuriamoci di trovarci nella cartella principale di lnbits e creiamo un file .env
nano .env
Copiamo queste configurazioni di base per LNBits:
LNBITS_ADMIN_UI=true
# Change theme
LNBITS_SITE_TITLE="LNbits"
LNBITS_SITE_TAGLINE="free and open-source lightning wallet"
LNBITS_SITE_DESCRIPTION="The world's most powerful suite of bitcoin tools. Run for yourself, for others, or as part of a stack."
# Choose from bitcoin, mint, flamingo, freedom, salvador, autumn, monochrome, classic, cyber
LNBITS_THEME_OPTIONS="classic, bitcoin, flamingo, freedom, mint, autumn, monochrome, salvador, cyber"
# LNBITS_CUSTOM_LOGO="https://lnbits.com/assets/images/logo/logo.svg"
HOST=127.0.0.1
PORT=5000
######################################
########## Funding Source ############
######################################
# which fundingsources are allowed in the admin ui
LNBITS_ALLOWED_FUNDING_SOURCES="PhoenixdWallet"
LNBITS_BACKEND_WALLET_CLASS=PhoenixdWallet
# PhoenixdWallet
PHOENIXD_API_ENDPOINT=http://127.0.0.1:9740/
PHOENIXD_API_PASSWORD=LAPASSWORDDIPHOENIXD
######################################
####### Auth Configurations ##########
######################################
# Secret Key: will default to the hash of the super user. It is strongly recommended that you set your own value.
AUTH_SECRET_KEY=""
AUTH_TOKEN_EXPIRE_MINUTES=525600
# Possible authorization methods: user-id-only, username-password, google-auth, github-auth, keycloak-auth
AUTH_ALLOWED_METHODS="user-id-only, username-password"
# Set this flag if HTTP is used for OAuth
# OAUTHLIB_INSECURE_TRANSPORT="1"
# Google OAuth Config
# Make sure that the authorized redirect URIs contain https://{domain}/api/v1/auth/google/token
GOOGLE_CLIENT_ID=""
GOOGLE_CLIENT_SECRET=""
# GitHub OAuth Config
# Make sure that the authorization callback URL is set to https://{domain}/api/v1/auth/github/token
GITHUB_CLIENT_ID=""
GITHUB_CLIENT_SECRET=""
# Keycloak OAuth Config
# Make sure that the valid redirect URIs contain https://{domain}/api/v1/auth/keycloak/token
KEYCLOAK_CLIENT_ID=""
KEYCLOAK_CLIENT_SECRET=""
KEYCLOAK_DISCOVERY_URL=""
######################################
# uvicorn variable, uncomment to allow https behind a proxy
# IMPORTANT: this also needs the webserver to be configured to forward the headers
# http://docs.lnbits.org/guide/installation.html#running-behind-an-apache2-reverse-proxy-over-https
# FORWARDED_ALLOW_IPS="*"
# Server security, rate limiting ips, blocked ips, allowed ips
LNBITS_RATE_LIMIT_NO="200"
LNBITS_RATE_LIMIT_UNIT="minute"
LNBITS_ALLOWED_IPS=""
LNBITS_BLOCKED_IPS=""
# Allow users and admins by user IDs (comma separated list)
# if set new users will not be able to create accounts
LNBITS_ALLOWED_USERS=""
LNBITS_ADMIN_USERS=""
# ID of the super user. The user ID must exist.
# SUPER_USER=""
# Extensions only admin can access
LNBITS_ADMIN_EXTENSIONS="ngrok, admin"
# Extensions enabled by default when a user is created
LNBITS_USER_DEFAULT_EXTENSIONS="lnurlp"
# Start LNbits core only. The extensions are not loaded.
# LNBITS_EXTENSIONS_DEACTIVATE_ALL=true
# Disable account creation for new users
# LNBITS_ALLOW_NEW_ACCOUNTS=false
# Enable Node Management without activating the LNBITS Admin GUI
# by setting the following variables to true.
LNBITS_NODE_UI=false
LNBITS_PUBLIC_NODE_UI=false
# Enabling the transactions tab can cause crashes on large Core Lightning nodes.
LNBITS_NODE_UI_TRANSACTIONS=false
LNBITS_DEFAULT_WALLET_NAME="LNbits wallet"
# Ad space description
# LNBITS_AD_SPACE_TITLE="Supported by"
# csv ad space, format "<url>;<img-light>;<img-dark>, <url>;<img-light>;<img-dark>", extensions can choose to honor
# LNBITS_AD_SPACE="https://shop.lnbits.com/;https://raw.githubusercontent.com/lnbits/lnbits/main/lnbits/static/images/lnbits-shop-light.png;https://raw.githubusercontent.com/lnbits/lnbits/main/lnbits/static/images/lnbits-shop-dark.png"
# LNBITS_SHOW_HOME_PAGE_ELEMENTS=true # if set to true, the ad space will be displayed on the home page
# LNBITS_CUSTOM_BADGE="USE WITH CAUTION - LNbits wallet is still in BETA"
# LNBITS_CUSTOM_BADGE_COLOR="warning"
# Hides wallet api, extensions can choose to honor
LNBITS_HIDE_API=false
# LNBITS_EXTENSIONS_MANIFESTS="https://raw.githubusercontent.com/lnbits/lnbits-extensions/main/extensions.json,https://raw.githubusercontent.com/lnbits/lnbits-extensions/main/extensions-trial.json"
# GitHub has rate-limits for its APIs. The limit can be increased specifying a GITHUB_TOKEN
# LNBITS_EXT_GITHUB_TOKEN=github_pat_xxxxxxxxxxxxxxxxxx
# Path where extensions will be installed (defaults to `./lnbits/`).
# Inside this directory the `extensions` and `upgrades` sub-directories will be created.
# LNBITS_EXTENSIONS_PATH="/path/to/some/dir"
# Extensions to be installed by default. If an extension from this list is uninstalled then it will be re-installed on the next restart.
# The extension must be removed from this list in order to not be re-installed.
LNBITS_EXTENSIONS_DEFAULT_INSTALL="tpos"
# Database: to use SQLite, specify LNBITS_DATA_FOLDER
# to use PostgreSQL, specify LNBITS_DATABASE_URL=postgres://...
# to use CockroachDB, specify LNBITS_DATABASE_URL=cockroachdb://...
# for both PostgreSQL and CockroachDB, you'll need to install
# psycopg2 as an additional dependency
LNBITS_DATA_FOLDER="./data"
LNBITS_DATABASE_URL="postgres://user:password@host:port/databasename"
# the service fee (in percent)
LNBITS_SERVICE_FEE=0.0
# the wallet where fees go to
# LNBITS_SERVICE_FEE_WALLET=
# the maximum fee per transaction (in satoshis)
# LNBITS_SERVICE_FEE_MAX=1000
# disable fees for internal transactions
# LNBITS_SERVICE_FEE_IGNORE_INTERNAL=true
# value in millisats
LNBITS_RESERVE_FEE_MIN=2000
# value in percent
LNBITS_RESERVE_FEE_PERCENT=1.0
# limit the maximum balance for each wallet
# throw an error if the wallet attempts to create a new invoice
# LNBITS_WALLET_LIMIT_MAX_BALANCE=1000000
# LNBITS_WALLET_LIMIT_DAILY_MAX_WITHDRAW=1000000
# LNBITS_WALLET_LIMIT_SECS_BETWEEN_TRANS=60
# Limit fiat currencies allowed to see in UI
# LNBITS_ALLOWED_CURRENCIES="EUR, USD"
######################################
###### Logging and Development #######
######################################
DEBUG=false
DEBUG_DATABASE=false
BUNDLE_ASSETS=true
# logging into LNBITS_DATA_FOLDER/logs/
ENABLE_LOG_TO_FILE=true
# https://loguru.readthedocs.io/en/stable/api/logger.html#file
LOG_ROTATION="100 MB"
LOG_RETENTION="3 months"
# for database cleanup commands
# CLEANUP_WALLETS_DAYS=90
I campi da modificare sono:
PHOENIXD_API_PASSWORD= inseriamo la password che ci ritroviamo nella cartella nascosta .phoenix nella directory principale, sotto la voce http-password:
LNBITS_DATABASE_URL= inseriamo il nome utente e la password del nostro database, seguendo l’esempio di questo tutorial è così, “postgres://postgres:!UnaPasswordBellaStrong!@localhost:5432/lnbits”
nano .phoenix/phoenix.conf
Eseguiamo il comando d’avvio di LNBits, al primo avvio avendo specificato la variabile LNBITS_ADMIN_UI=true dobbiamo creare l’account SuperUser, scegliete una password bella STRONG!
poetry run lnbits --port 5000 --host 0.0.0.0
Collegandoci adesso da INDIRIZZOIP:5000 avremo la nostra istanza LNBits collegata al nodo di phoenixd.
Integrazione con systemd, per avvio automatico
Anche per LNbits come Phoenixd per accedere alla Vs. istanza dovremmo lanciare ogni volta il comando sopra scritto. Quindi andiamo adesso a creare un servizio tramite systemd per avviare lnbits ad ogni avvio del server.
Andiamo a creare un nuovo servizio nella directory di systemd
sudo nano /etc/systemd/system/lnbits.service
copiamo il seguente codice cambiando le variabili:
ExecStart=/home/lnbits/.local/bin/poetry run (cambia la variabile con la directory dove hai scaricato la repo di lnbits)
User=lnbits (cambia la variabile con il tuo nome utente)
[Unit]
Description=LNbits
[Service]
WorkingDirectory=/home/lnbits/lnbits
ExecStart=/home/lnbits/.local/bin/poetry run lnbits --port 5000 --host 0.0.0.0
User=lnbits
Restart=always
TimeoutSec=120
RestartSec=30
Environment=PYTHONUNBUFFERED=1
[Install]
WantedBy=multi-user.target
A questo punto salviamo con CTRL+X e “y” per confermare, successivamente abilitiamo il servizio e avviamolo:
sudo systemctl enable lnbits.service
sudo systemctl start lnbits.service
A questo punto non ci resta che verificare che tutto funzioni, inviamoci qualche sats ed effettuiamo un pagamento!
Spero che l'articolo sia stato di tuo gradimento, se vuoi altri contenuti simili non esitare a farmelo sapere sul Gruppo Telegram.
Se ti piacciono i miei contenuti e vuoi supportarmi puoi iscriverti alla Newsletter, effettuare una donazione o acquistare attraverso il mio link referral di Amazon, trovi tutti i link qui.
Considera anche l'idea di iscriverti al mio canale delle offerte, lo trovi su WhatsApp e su Telegram.