Creazione di una rete privata IPFS

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