In questo articolo spiegheremo come creare una rete privata a partire da dei nodi IPFS. Useremo 5 nodi, ma cambiando il file compose si può scegliere il numero di nodi desiderato.
Dipendenze
- docker
- docker-compose
COS’È IPFS
IPFS è un sistema distribuito per salvare ed accedere a files, siti web, applicazioni e dati. Ci sono svariati vantaggi nell’usare un file system decentralizzato:
- Le varie parti che compongono il file possono essere scaricate da diversi nodi allo stesso momento, risparmiando banda.
- Usando il content addressing il versionamento dei file salvati usando IPFS è automatico.
CREAZIONE DEI CONTAINERS
Per prima cosa creiamo dei container che funzioneranno da nodi, usando l’immagine ipfs/go-ipfs
.
Di default i nodi IPFS sono tutti connessi alla reta pubblica, rendendo i file disponibili a tutti. Siccome vogliamo che la nostra rete sia privata, sarà necessario settare la variabile d’ambiente LIBP2P_FORCE_PNET
a 1.
SWARM KEY
Usare LIBP2P_FORCE_PNET
non è abbastanza: dobbiamo fornire ai nostri nodi una chiave segreta (swarm key) per consentirgli di scoprirsi sulla rete. Per farlo inseriamo il nostro file swarm.key
nella cartella ~/.ipfs
dei nostri IPFS daemons.
IMPOSTAZIONE DEL NODO DI BOOTSTRAP
Una volta che i nostri IPFS daemons sono attivi, andremo a cambiare la loro lista di bootstrap. Un nodo di bootstrap è ciò che ci permette di trovare i peers nella rete: mantiene un mapping tra gli hash dei dati che stiamo richiedendo ed i peers che ne sono in possesso. Impostare un nostro nodo di bootstrap non è necessario dato che i peers possono essere scoperti con i nodi di default ma potrebbe essere più sicuro avere un proprio nodo di bootstrap in una rete privata.
AGGIORNAMENTO DELLA LISTA DI BOOTSTRAP
Di default è impostato un set di nodi di bootstrap pubblici. Per cambiare questa lista e inserire il nostro nodo per prima cosa andremo a rimuovere i nodi di default e successivamente aggiungeremo l’indirizzo del nostro nodo di bootstrap usando i comandi ipfs bootstrap rm
e ipfs bootstrap add
.
CONCLUSIONI
Ora la nostra rete è pronta, possiamo usare ipfs bootstrap ls
per vedere la lista dei nodi di bootstrap (che conterrà l’indirizzo del nodo che abbiamo scelto) e ipfs swarm peers
per vedere i peers connessi al nodo.
SCRIPT AUTOMATICI
Sul nostro profilo github puoi trovare degli script che eseguono quanto scritto in questo articolo https://github.com/ExcentioSRL
Authors: Filippo Piscitelli, Luca Peano