lunedì 25 gennaio 2021

Installare IPFS (InterPlanetaryFileSystem)

post originale di Augusto Scatolini


 

Dopo aver introdotto il protocollo IPFS qui (https://campagnano-rap.blogspot.com/2021/01/come-funziona-il-web-permanente-dellipfs.html) e qui (https://campagnano-rap.blogspot.com/2021/01/filesystem-decentralizzato-ipfs.html)

passiamo all'installazione di un nodo di questa rete sul proprio computer (in questo caso con Windows 10)

1) La prima operazione è scaricare il file binario ipfs.exe che è contenuto nel file zip 

go-ipfs_vxxxxx.zip recuperabile all'indirizzo https://dist.ipfs.io/#go-ipfs

2) una volta scaricato il file compresso, si decomprime in una cartella qualunque
 

 
3) si copia il file ipfs.exe e si copia dentro la cartella 
 
C:\User\tuonomeutente\AppData\Local\Microsoft\Windowsapp\
 

4) analogamente si copia nella stessa cartella il file cmd.exe (il prompt dei comandi)
 

5) aprire la finestra del DOS e digitare ipfs, appariranno i seguenti messaggi

c:\Users\ascat\AppData\Local\Microsoft\WindowsApps>ipfs
USAGE
  ipfs  - Global p2p merkle-dag filesystem.

  ipfs [--config=<config> | -c] [--debug | -D] [--help] [-h] [--api=<api>] [--offline] [--cid-base=<base>] [--upgrade-cidv0-in-output] [--encoding=<encoding> | --enc] [--timeout=<timeout>] <command> ...

SUBCOMMANDS
  BASIC COMMANDS
    init          Initialize ipfs local configuration
    add <path>    Add a file to IPFS
    cat <ref>     Show IPFS object data
    get <ref>     Download IPFS objects
    ls <ref>      List links from an object
    refs <ref>    List hashes of links from an object

  DATA STRUCTURE COMMANDS
    block         Interact with raw blocks in the datastore
    object        Interact with raw dag nodes
    files         Interact with objects as if they were a unix filesystem
    dag           Interact with IPLD documents (experimental)

  ADVANCED COMMANDS
    daemon        Start a long-running daemon process
    mount         Mount an IPFS read-only mount point
    resolve       Resolve any type of name
    name          Publish and resolve IPNS names
    key           Create and list IPNS name keypairs
    dns           Resolve DNS links
    pin           Pin objects to local storage
    repo          Manipulate the IPFS repository
    stats         Various operational stats
    p2p           Libp2p stream mounting
    filestore     Manage the filestore (experimental)

  NETWORK COMMANDS
    id            Show info about IPFS peers
    bootstrap     Add or remove bootstrap peers
    swarm         Manage connections to the p2p network
    dht           Query the DHT for values or peers
    ping          Measure the latency of a connection
    diag          Print diagnostics

  TOOL COMMANDS
    config        Manage configuration
    version       Show ipfs version information
    update        Download and apply go-ipfs updates
    commands      List all available commands
    cid           Convert and discover properties of CIDs
    log           Manage and show logs of running daemon

  Use 'ipfs <command> --help' to learn more about each command.

  ipfs uses a repository in the local file system. By default, the repo is
  located at ~/.ipfs. To change the repo location, set the $IPFS_PATH
  environment variable:

    export IPFS_PATH=/path/to/ipfsrepo

  EXIT STATUS

  The CLI will exit with one of the following values:

  0     Successful execution.
  1     Failed executions.


c:\Users\ascat\AppData\Local\Microsoft\WindowsApps>

6) poi digitare il comando ipfs init, appariranno i seguenti messaggi

c:\Users\ascat\AppData\Local\Microsoft\WindowsApps>ipfs init
generating ED25519 keypair...done
peer identity: 12D3KooWHFj2SDWJZyaAKDKbz8HKPPisxmYqs7WY8PVzaEJSGE1G
initializing IPFS node at C:\Users\ascat\.ipfs
to get started, enter:

        ipfs cat /ipfs/QmQPeNsJPyVWPFDVHb77w8G42Fvo15z4bG2X8D2GhfbSXc/readme


c:\Users\ascat\AppData\Local\Microsoft\WindowsApps> 
 

7) poi si digita quanto viene suggerito alla fine del precedente comando

c:\Users\ascat\AppData\Local\Microsoft\WindowsApps>ipfs cat /ipfs/QmQPeNsJPyVWPFDVHb77w8G42Fvo15z4bG2X8D2GhfbSXc/readme
 

apparirà quanto segue

Hello and Welcome to IPFS!


██╗██████╗   ███████╗███████╗
██║██╔══██╗██╔════╝██╔════╝
██║██████╔╝█████╗      ███████╗
██║██╔═══╝   ██╔══╝      ╚════██║
██║██║              ██║               ███████║
╚═╝╚═╝              ╚═╝               ╚══════╝

If you're seeing this, you have successfully installed
IPFS and are now interfacing with the ipfs merkledag!

 -------------------------------------------------------
| Warning:                                              |
|   This is alpha software. Use at your own discretion! |
|   Much is missing or lacking polish. There are bugs.  |
|   Not yet secure. Read the security notes for more.   |
 -------------------------------------------------------

Check out some of the other files in this directory:

  ./about
  ./help
  ./quick-start     <-- usage examples
  ./readme          <-- this file
  ./security-notes

c:\Users\ascat\AppData\Local\Microsoft\WindowsApps> 

9) infine si digita ipfs daemon, appariranno i seguenti messaggi

c:\Users\ascat\AppData\Local\Microsoft\WindowsApps>ipfs daemon
Initializing daemon...
go-ipfs version: 0.7.0
Repo version: 10
System version: amd64/windows
Golang version: go1.14.4
Swarm listening on /ip4/127.0.0.1/tcp/4001
Swarm listening on /ip4/127.0.0.1/udp/4001/quic
Swarm listening on /ip4/169.254.65.148/tcp/4001
Swarm listening on /ip4/169.254.65.148/udp/4001/quic
Swarm listening on /ip4/192.168.1.2/tcp/4001
Swarm listening on /ip4/192.168.1.2/udp/4001/quic
Swarm listening on /ip4/192.168.102.1/tcp/4001
Swarm listening on /ip4/192.168.102.1/udp/4001/quic
Swarm listening on /ip4/192.168.220.1/tcp/4001
Swarm listening on /ip4/192.168.220.1/udp/4001/quic
Swarm listening on /ip4/192.168.56.1/tcp/4001
Swarm listening on /ip4/192.168.56.1/udp/4001/quic
Swarm listening on /ip6/::1/tcp/4001
Swarm listening on /ip6/::1/udp/4001/quic
Swarm listening on /p2p-circuit
Swarm announcing /ip4/127.0.0.1/tcp/4001
Swarm announcing /ip4/127.0.0.1/udp/4001/quic
Swarm announcing /ip4/192.168.1.2/tcp/4001
Swarm announcing /ip4/192.168.1.2/udp/4001/quic
Swarm announcing /ip6/::1/tcp/4001
Swarm announcing /ip6/::1/udp/4001/quic
API server listening on /ip4/127.0.0.1/tcp/5001
WebUI: http://127.0.0.1:5001/webui
Gateway (readonly) server listening on /ip4/127.0.0.1/tcp/8080
Daemon is ready

10) a questo punto digitando su un browser il seguente indirizzo http://127.0.0.1:5001/webui potremo aprire un'interfaccia grafica web

Questo è il pannello STATUS
 


Questo è il pannello PEER (NODI)



Questo è il pannello FILE (che ovviamente è vuoto)

 
Carichiamo ad esempio il file ipfs6.png e condividiamolo sulla rete, verrà creato un collegamento contenete l'impronta HASH del file. 

 
Se ora sul browser inseriamo il collegamnto precedentemente creato (o lo inviamo ad un utente), il browser ci restituirà il file da noi caricato (in questo caso l'immagine ipfs6.png

PERCHE' INSTALLRE UN NODO IPFS?

Tutti, con qualsiasi browser, possono accedere ai file della rete IPFS, per esempio per scaricare l'ebook "Il mondo nuovo di Huxley" dal sito libgen si può cliccare su GET e si otterrà il file tramite protocollo HTTP

oppure si può cliccare su IPFS.io che rimanda all'indirizzo IPFS
https://ipfs.io/ipfs/bafykbzacebb75vbfvuvfpxgzkcf6zxn2me3vju3ozgigffesyttgsai6friow?filename=Huxley%2C%20Aldous%20-%20Il%20mondo%20nuovo.mobi
e potremo scaricare direttamente il file dalla rete IPFS 

ma se vogliamo permettere a qualcuno di scaricare i nostri file messi in condivisione dobbiamo installare un nodo IPFS con tutti i vantaggi di questo protocollo come:

- il file rimane sul nostro computer e non dve essere caricato su un server

- quindi non dobbiamo avere neanche un web server o un file server o un ftp server

- l'indirizzo è sostanzialmente anonimo

- non ultimo, l'operazione non è censurabile

COME SI RIVVIA IL SERVIZIO IPFS?

Una volta spento e riacceso il computer il servizio IPFS deve essere riavviato con il comando 

ipfs daemon (sul terminale del DOS)

UN SITO WEB SU IPFS

Avere un sito web, per esemepio su ARUBA, significa realizzare un sito web sulla propria macchina e poi, quando pronto, pubblicarlo sui server di ARUBA tramite il protocollo FTP.

Questo, per esempio, è lo screenshot di una parte della pagina principale (index.html) del sito web http://www.centroyogailsorbo.it


notare l'indirizzo IP della pagina

Ora se io aggiungo la cartella centroyogailsorbo.it sul pannello FILE di IPFS


e condivido la cartella otterrò il seguente link

https://ipfs.io/ipfs/QmSbCh6yXUQ5CBJPXx5EJsSP69eSG1hLsF5jhosMecNDjp

se ora incollo questo indirizzo IPFS su un browser potrò accedere (via internet) al sito web che ho
sulla macchina che è identico a quello pubblicato su ARUBA


Questo avviene perché il collegamento è alla cartella, contenitore del sito, ma dato che all'interno di
questa cartella esiste il file index.html che se presente è la prima pagina che si avvia automaticamente.

FILE SERVER DISTRIBUITO

Se, nell'esempio precedente, non ci fosse stato il file index.html nella cartella condivisa, cosa si
vedrebbe?
Ho condiviso su IPFS la cartella "Prova IPFS". Dentro questa cartella ci sono 10 documenti, 9 ebook con
estensione epub e 1 con estensione azw3. Condivido la cartella e ottengo il seguente link
https://ipfs.io/ipfs/QmSbCh6yXUQ5CBJPXx5EJsSP69eSG1hLsF5jhosMecNDjp
se ora incollo questo indirizzo IPFS su un browser potrò accedere al contenuto della cartella


cliccando su un file




In sostanza tutti quelli che conoscono il collegamento (indirizzo IPFS possono accedere ai file che ho
messo nella cartella condivisa. Questo è possibile perché non esiste nella cartella il file index.html

INSTALLARE L'APP IPFS DESKTOP

Oltre alla pagina web http://127.0.0.1:5001/webui che serve per gestire IPFS tramite interfaccia grafica, è anche disponibile un app "desktop" per tutti i
sistemi operativi. Il programma è scaricabile all'indirizzo
https://github.com/ipfs-shipyard/ipfs-desktop/releases



Una volta scaricato, installato e avviato, si posizionerà sulla barra di Window e cliccando con il tasto
destro apparirà il menu:

 
I GATEWAY IPFS

Prendiamo ad esempio il file 01 - La forma dell'acqua di Andrea Camilleri su libgen.rs

Per scaricare questo file abbiamo 4 link
 
GET  
http://31.42.184.140/fiction/1591000/6f432e5d03652680c49e764d09bda2e4.epub/%28Montalbano%201%29%20Camilleri%2C%20Andrea%20-%2001%20-%20La%20Forma%20Dell%E2%80%99acqua.epub 
che è un indirizzo diretto al file su una risorsa specifica http://31.42.184.140/fiction/
 
Cloudflare 
https://cloudflare-ipfs.com/ipfs/bafk2bzaceakkbpose4goor7sfybys7buuh6pp3ncihiw7gttmto6qslazwm24?filename=%28Montalbano%201%29%20Camilleri%2C%20Andrea%20-%2001%20-%20La%20Forma%20Dell%E2%80%99acqua.epub
 
IPFS.io 
https://ipfs.io/ipfs/bafk2bzaceakkbpose4goor7sfybys7buuh6pp3ncihiw7gttmto6qslazwm24?filename=%28Montalbano%201%29%20Camilleri%2C%20Andrea%20-%2001%20-%20La%20Forma%20Dell%E2%80%99acqua.epub
 
INFURA 
https://ipfs.infura.io/ipfs/bafk2bzaceakkbpose4goor7sfybys7buuh6pp3ncihiw7gttmto6qslazwm24?filename=%28Montalbano%201%29%20Camilleri%2C%20Andrea%20-%2001%20-%20La%20Forma%20Dell%E2%80%99acqua.epub

Gli ultimi tre link invece sono dei servizi che puntano tutti all'HASH del stesso file nella rete IPFS: sono GATEWAY

Quindi, grazie a questi gateway anche nella nostra gestione IPFS privata, lo stesso hash di un nostro file/cartella condiviso può essere ricercato ed ottenuto utilizzando uno, due o tre gateway.


IPFS SU ANDROID

Ovviamente esistono APP per Android per gestire IPFS


Sweet IPFS 

https://play.google.com/store/apps/details?id=fr.rhaz.ipfs.sweet 



IPFSDroid

https://apkpure.com/it/ipfsdroid/org.ligi.ipfsdroid 



IPFS Lite

https://play.google.com/store/apps/details?id=threads.server 


FINE

(per ora)

(in continuo aggiornamento)


Nessun commento:

Posta un commento