Awning - Another Bitcoin node
# Un nodo Bitcoin + LND + BTCPay dockerizzato
Qualcosa come [Umbrel](https://umbrel.com) ma più leggero e portatile.
Qualcosa come [RaspiBolt](https://raspibolt.org/) ma più semplice e automatizzato. Orientato a Bitcoin/Network-Lightning senza fronzoli.
**Awning** non installa nulla sul tuo PC, rendendolo leggero, personalizzabile e portatile.
È una configurazione Docker semplice/vanilla. **Nessuno script viene mai eseguito nel tuo host.**
### Avvia il tuo nodo BTC/LN in 6 passaggi:
1. [Clona questo repository](#1)
2. [Crea un repository GitHub per memorizzare i Backup dei Canali Statici LND (SCB)](#2)
3. [Modifica e personalizza il file `.env`](#3)
4. [Avvia i container Docker](#4)
5. [Autorizza SCB a essere caricato su GitHub](#5)
6. [Crea o ripristina un portafoglio LND](#6)
Puoi anche [aggiungere eventualmente il tuo server BTCPay](#7).
<a name="1"></a>
# Prima di iniziare
Clona o scarica questo repository ed entra nella directory del progetto.
```sh
$ git clone https://github.com/giovantenne/awning.git
$ cd awning
```
## Preparazione dei backup dei canali LND
Il Backup dei Canali Statici (SCB) è una funzionalità di LND che consente il recupero on-chain dei saldi dei canali di lightning in caso di nodo danneggiato. Nonostante il nome, non consente il recupero dei tuoi canali LN ma aumenta la possibilità che tu recuperi tutti (o la maggior parte) dei tuoi saldi off-chain (locali).
**Awning** caricherà automaticamente una copia del tuo ‘channel.backup’ ogni volta che cambia su un repository GitHub di tua proprietà, quindi dovrai crearne uno e fornire le credenziali di upload più [tardi](#5).
<a name="2"></a>
#### Crea un repository GitHub
* Vai su [GitHub](https://github.com/), iscriviti per un nuovo account utente o accedi con uno esistente.
* Crea un nuovo repository: [https://github.com/new](https://github.com/new)
* Scegli un nome per il repository (es. `remote-lnd-backup`)
* Seleziona "Privato" (piuttosto che il predefinito "Pubblico")
* Clicca su "Crea repository"
* Annota il tuo indirizzo del repository SSH. Ne avrai bisogno [più tardi](#2).
<a name="3"></a>
## Modifica e comprendi il file .env
Il file `.env` contiene alcuni parametri di configurazione di **Awning** che puoi/devi personalizzare. Fai solo una copia del file di esempio e modificalo.
```
$ cp .env.sample .env
```
| Parametro | Descrizione |
| --- | --- |
| `UID` | L'uid (user id) del tuo utente attuale. Usa questo comando per recuperarlo: `id -u`. |
| `GID` | Il gid (group id) del tuo utente attuale. Usa questo comando per recuperarlo: `id -g`. |
| `BITCOIN_ARCH` | Qui devi scegliere l'architettura della CPU del tuo computer. Scrivi `aarch64` per ARM (Raspberry Pi, ecc.) o `x86_64` per Intel o AMD. |
| `LND_ARCH` | Scrivi `arm64` per ARM (Raspberry Pi, ecc.) o `amd64` per Intel o AMD. |
| `RTL_PASSWORD` | Scegli la password per accedere all'interfaccia web "Ride The Lightning". Puoi cambiarla in qualsiasi momento, ma non dimenticare di riavviare il container RTL dopo con `docker-compose restart rtl`. |
| `LND_PASSWORD` | Scegli la password per proteggere automaticamente e sbloccare il portafoglio LND (scrivi `moneyprintergobrrr` se stai migrando da **Umbrel**). Dovrai usare questa password [qui](#6). Cambiarla dopo la configurazione iniziale non avrà effetto. |
| `SCB_REPO` | Incolla qui l'indirizzo del tuo nuovo repository GitHub creato. Dovrebbe essere qualcosa come `[email protected]:giovantenne/remote-lnd-backup.git`. |
| `BITCOIN_CORE_VERSION` | Versione di Bitcoin Core [version](https://github.com/bitcoin/bitcoin/releases) |
| `LND_VERSION` | Versione di LND [version](https://github.com/lightningnetwork/lnd/releases) |
| `ELECRTS_VERSION` | Versione di Electrs [version](https://github.com/romanz/electrs/releases) |
<a name="4"></a>
# Come iniziare
Esegui il seguente comando:
````sh
$ docker-compose up -d --build
```
Questo avvierà i seguenti servizi/container in background:
- [Bitcoin Core](https://github.com/bitcoin/bitcoin)
- [Electrs](https://github.com/bitcoin/bitcoin)
- [LND](https://github.com/lightningnetwork/lnd)
- [RTL](https://github.com/Ride-The-Lightning/RTL) (Ride The Lightning)
- [TOR](https://www.torproject.org/)
- [Nginx](https://github.com/nginx) (used as reverse-proxy)
- [SCB](https://github.com/lightningnetwork/lnd/blob/master/docs/recovery.md) (Automatic static channel backups)
La prima volta ci vorrà del tempo per costruire tutte le immagini da zero (specialmente compilare il binario di Electrs può richiedere fino a un'ora).
Dopo che tutte le immagini sono state costruite, “bitcoind” dovrebbe iniziare, iniziare a sincronizzare e convalidare la blockchain di Bitcoin. Se hai già scaricato la blockchain altrove, puoi semplicemente copiare i dati nella directory `./data/bitcoin` prima del comando `docker-compose up -d --build` .
Controlla lo stato del demone bitcoin che è stato avviato con il seguente comando. Esci con Ctrl-C
```sh
$ docker logs -f bitcoin
```
Questi servizi aprono le seguenti porte TCP sul tuo
| Port | Service | SSL | Description |
| --- | --- | --- | --- |
| `50002` | Electrs | :white_check_mark: | Electrs |
| `8080` | LND | :white_check_mark: | Rest API for LND |
| `8081` | RTL | :white_check_mark: | RTL web interface|
| `8082` | RTL | :white_large_square: | RTL web interface |
| `8083` | BTCPay Server (optional)| :white_check_mark: | BTCPay server web interface|
| `8084` | BTCPay Server (optional)| :white_large_square: | BTCPay server web interface |
# Completa la configurazione
Una volta avviati i container, ci sono ancora un paio di passaggi da completare:
<a name="5"></a>
###Autorizza l'upload degli SCB su GitHub
Esegui questo comando:
```sh
$ docker logs scb 2> /dev/null | grep -o 'ssh-rsa.*' | head -1
```
* Torna alla pagina del repository di GitHub
* Clicca su "Settings", poi "Deploy keys", poi "Add deploy key"
* Digita un titolo (es., "SCB")
* Nella casella "Key", copia/incolla la stringa generata sopra (es. ssh-rsa 5678efgh... scb@28ba58e278da)
* Spunta la casella "Allow write access" per abilitare questa chiave a fare modifiche al repository
* Clicca su "Add key"
<a name="6"></a>
###Crea o ripristina il portafoglio LND
Se stai migrando da Umbrel o da un nodo LND esistente, copia semplicemente i tuoi dati nella directory ./data/lnd prima del comando docker-compose up -d --build e salta il resto di questo passaggio, altrimenti esegui questo comando:
```sh
$ docker exec -it lnd lncli create
```
Inserisci la tua password come password del portafoglio (deve essere esattamente quella che hai memorizzato nel file .env come LND_PASSWORD).
Per creare un nuovo portafoglio, seleziona n quando ti viene chiesto se hai un seed cifrato esistente. Premi solo invio se ti viene chiesto di un passphrase aggiuntivo per il seed, a meno che tu non sappia cosa stai facendo. Un nuovo seed cifrato composto da 24 parole verrà creato.
Queste 24 parole sono tutto ciò di cui hai bisogno per ripristinare il portafoglio Bitcoin on-chain. Lo stato attuale dei tuoi canali, tuttavia, non può essere ricreato da questo seed.
🚨 Queste informazioni devono essere mantenute segrete in ogni momento.
**Scrivi queste 24 parole manualmente su un pezzo di carta e conservale in un luogo sicuro.**
#Usa Elecrs (via TOR)
Esegui il seguente comando per recuperare l'indirizzo TOR di Electrs da usare nel tuo portafoglio:
```
$ echo `cat ./data/tor/hidden_service_electrs/hostname`:50001
```
#Accedere all'interfaccia web RTLRide (locale)
The Lightning è accessibile sia su http che https con un certificato SSL autofirmato (quindi aspettati un messaggio di avviso dal tuo browser) usando la password scelta nel file .env.
Se stai eseguendo **Awning** sul tuo PC puoi accedere all'interfaccia web attraverso questi
- [https://localhost:8081](https://localhost:8081)
- [http://localhost:8082](http://localhost:8082)
Sostituisci localhost con l'IP del tuo nodo se stai eseguendo Awning su un PC differente.
#Collega Zeus al tuo nodo (via TOR)
- Scarica l'app Zeus per il tuo telefono mobile.
- Apri Zeus e tocca su “GET STARTED”T
- Tocca su "Connect a node" e poi tocca il "+" in alto a destra per aggiungere il tuo nodo
- Inserisci un Nickname per il tuo nodo (es., AwningNode)
- Clicca su “SCAN LNDCONNECT CONFIG” e, se richiesto, permetti a Zeus di usare la fotocamera
- Scansiona il codice QR generato con il seguente comando. Sarà un grande codice QR, quindi massimizza la finestra del terminale e usa CTRL+- per ridurre ulteriormente il codice in modo che si adatti allo schermo
- Tocca su "Connect a node" e poi tocca il "+" in alto a destra per aggiungere il tuo nodo
- Inserisci un Nickname per il tuo nodo (es., AwningNode)
- Clicca su “SCAN LNDCONNECT CONFIG” e, se richiesto, permetti a Zeus di usare la fotocamera
- Scansiona il codice QR generato con il seguente comando. Sarà un grande codice QR, quindi massimizza la finestra del terminale e usa CTRL+- per ridurre ulteriormente il codice in modo che si adatti allo schermo
```
$ URI=`cat ./data/tor/hidden_service_lnd_rest/hostname` && docker exec lnd lndconnect --host $URI --port 8080
```
Clicca su “SAVE NODE CONFIG”. Zeus ora si sta collegando al tuo nodo, e potrebbe volerci un po' la prima volta.
# Comandi utili
| Comando | Descrizione |
| --- | --- |
| `docker ps` | Elenca i container che sono in esecuzione sul tuo host |
| `docker logs -f bitcoin` | Mostra in streaming i log per il container *bitcoin/lnd/electrs* |
| `docker exec -it lnd bash` | Connettiti al container *lnd* così puoi usare il comando `lncli` (es. `lncli getinfo`) |
| `docker-compose restart bitcoin` | Riavvia il container *bitcoin/lnd/electrs* |
| `docker-compose build --no-cache` | Ricostruisci tutti i container da zero (es. dopo aver cambiato la versione di bitcoin in `.env`)|
| `docker-compose down` | Ferma tutti i container |
| `docker-compose up -d ` | Avvia tutti i container |
| `docker-compose up -d --build` | Ricostruisci e avvia tutti i container |
# Struttura delle directory
```bash
├── configs
│ ├── bitcoin.conf
│ ├── electrs.toml
│ ├── lnd.conf
│ ├── nginx-reverse-proxy.conf
│ ├── rtl.json
│ └── torrc
├── data
│ ├── bitcoin
│ ├── btcpay
│ ├── electrs
│ ├── lnd
│ ├── nbx
│ ├── postgres
│ ├── rtl
│ ├── scb
│ └── tor
├── docker-compose.yml
├── Dockerfiles
│ ├── Dockerfile.bitcoin
│ ├── Dockerfile.electrs
│ ├── Dockerfile.lnd
│ ├── Dockerfile.nbx
│ ├── Dockerfile.nginx
│ ├── Dockerfile.rtl
│ ├── Dockerfile.scb
│ ├── Dockerfile.tor
│ ├── entrypoints
│ │ ├── lnd.sh
│ │ └── scb.sh
│ └── files
│ └── nginx.conf
├── LICENSE
└── README.md
```
Qui puoi trovare tutti i file di configurazione. Sentiti libero di modificarli come preferisci, ma fai attenzione a non sbagliare con il metodo di autenticazione: **Awning** attualmente usa l'autenticazione tramite cookie tra i servizi invece di RPC.data.
Qui sono memorizzati i | `dati` |
La Blockchain di Bitcoin, gli indici di Electrs, i canali di LND, ecc. sono tutti memorizzati qui.
| `Dockerfiles` |
Qui puoi trovare e ispezionare tutti i file usati per costruire le immagini. **Non fidarti, verifica!**
<a name="7"></a>
#BTCPay Server (opzionale)
Puoi facilmente eseguire la tua istanza auto-ospitata di [BTCPay Server](https://btcpayserver.org/)
Server con Awning con solo qualche leggera modifica a un paio di file forniti con questo repository:
| File | Modification |
| --- | --- |
| `docker-compose.yml` | <ul><li> Sostituisci la direttiva `depends_on` Sostituisci la direttiva</li><li>Decommenta la `porta` **8083** e **8084** sotto la `nginx` sezione. </li> <li>Decommenta il `btcpay`, `nbx` e `postgres` server.</li></ul>|
| `configs/nginx-reverse-proxy.conf` | Decommenta i `upstream` btcpay and **8083**, **8084** `server` blocks. |
Esegui `docker-compose down` e poi `docker-compose up -d` di nuovo.
Il server BTCPay eseguirà 3 container aggiuntivi (i file e le directory richiesti sono già presenti in questo repository):
- [Postgres](https://github.com/btcpayserver/dockerfile-deps/tree/master/Postgres/13.13)
- [NBXplorer](https://github.com/dgarage/NBXplorer)
- [BTCPay-server](https://btcpayserver.org/)
# Come aggiornare le versioni di Bitcoin/LND/Electrs
Se desideri aggiornare le versioni di Bitcoin/LND/Electrs modifica semplicemente il file `.env` ed esegui i seguenti comandi per fermare e ricostruire i container:
```
$ docker-compose down
$ docker-compose up -d
```
#Come aggiornare Awning
Se desideri aggiornare Awning all'ultima versione esegui semplicemente i seguenti comandi:
```
$ docker-compose down
$ git stash
$ git pull
$ git stash apply
```
#Supporto
Per qualsiasi domanda o problema puoi unirti al nostro [canale di supporto Telegram](https://t.me/awning_node) o aprire una [nuova issue su Github](https://github.com/giovantenne/awning/issues/new).
# Donazioni/Contributi al progetto
Se desideri contribuire e aiutare il team di sviluppo con questo progetto puoi inviare una donazione al seguente indirizzo LN ⚡`[email protected]`⚡ o on-chain `bc1qg2t8vnahzv5yy7e885l0a59ggagne9nxdvts4t`
Enjoy!
Last updated
Was this helpful?