- Jordi Torrens
Infraestructura WEB3: obteniu el vostre propi node IPFS.
En articles anteriors hem explorat IPFS i les seves capacitats, i com s’ha convertit en un dels pilars de WEB3 com el sistema d’emmagatzematge d’actius digitals per excel·lència.
IPFS o InterPlanetary File System és una xarxa peer-to-peer i la seva finalitat és publicar dades (fitxers, directoris, llocs web, etc.) de manera descentralitzada. D’aquesta manera podem publicar dades de manera segura dins de la xarxa i recuperar-les des de qualsevol lloc d’Internet.
En aquest article explorarem com fer la nostra pròpia instal·lació d’un node de servidor IPFS ( kubo ) i què ens aporta tenir el nostre propi node IPFS.
Instal·lació d'un node IPFS de Linux
IPFS és multiplataforma, essent possible instal·lar-lo en els diferents SO actuals com Windows, Mac i Linux. En aquest article ens centrem en la instal·lació basada en Ubuntu Linux amb l’IPFS Kubo precompilat per a Golang. També podem descarregar el codi binari o font precompilat des del repositori oficial de GIT.
GIT: https://github.com/ipfs/kubo
Binari: https://dist.ipfs.tech/#kubo
Kubo s’executa a la majoria de sistemes Windows, MacOS, Linux, FreeBSD i OpenBSD que compleixen els requisits següents. Una instal·lació base utilitza uns 12 MB d’espai en disc.
6 GiB de memòria
2 nuclis de CPU ( kubo és molt paral·lel)
Baixeu el binari des del lloc web oficial de kubo
Kubo s’executa a la majoria de sistemes Windows, MacOS, Linux, FreeBSD i OpenBSD que compleixen els requisits següents. Una instal·lació base utilitza al voltant de 12 MB d’ espai en disc .
- 6 GiB de memòria
- 2 nuclis de CPU ( kubo és molt paral·lel)
Baixeu el binari des del lloc web oficial de kubo
# wget https://dist.ipfs.tech/kubo/v0.20.0/kubo_v0.20.0_linux-amd64.tar.gz
Descomprimiu el fitxer tar.gz
# tar -xzvf kubo_v0.20.0_linux-amd64.tar.gz
Executar la instal·lació del fitxer
# install.sh
Moved ./ipfs to /usr/local/bin
A partir d’aquest moment tenim el binari instal·lat al nostre host com a executable i procedirem a configurar el nostre node en mode servidor assumint que l’amfitrió es troba en un centre de dades; també podem realitzar la mateixa instal·lació a la nostra màquina local.
IPFS emmagatzema totes les seves configuracions i dades internes al directori /$HOME/ ipfs /. Abans d’utilitzar Kubo per primera vegada, heu d’inicialitzar el dipòsit.
(NOTA: la inicialització no requereix privilegis de root).
# ipfs init --profile server (datacenter) evita que ipfs busque otros nodos en la red local
# ipfs init (local machine)
Això generarà el fitxer de configuració que conté l’identificador únic del node i l’estructura del directori.
En aquest punt, crearem un servei per iniciar i perquè IPFS iniciï el servei automàticament a l’inici de l’amfitrió
Crearem un fitxer anomenat ipfs.service al directori / etc / systemd /system/.
[Unit]
Description=IPFS daemon
Wants=network.target
After=network.target
[Service]
User=ipfs
Environment=”IPFS_PATH=/home/user/ipfs/home/”
ExecStart=/usr/local/bin/ipfs daemon
Restart=on-failure
User=user
Group=user
[Install]
WantedBy=multiuser.target
Un cop creats executarem les ordres següents:
# systemctl enable ipfs
# systemctl daemon-reload
# systemctl start ipfs
# systemctl status ipfs
Estructura del node
Inici /$HOME/ ipfs /home/
Configuració de fitxers /$HOME/ ipfs /home/config
FS Blocks /$HOME/ ipfs /home/blocks
FS Datastore /$HOME/ ipfs /home/datastore
[Unit]
Description=IPFS daemon
Wants=network.target
After=network.target
[Service]
User=ipfs
Environment=”IPFS_PATH=/home/user/ipfs/home/”
ExecStart=/usr/local/bin/ipfs daemon
Restart=on-failure
User=user
Group=user
[Install]
WantedBy=multiuser.targetService ports
4001 swarm (IPFS network port)
5001 webUI (it is advisable to secure this port in case you are in a datacenter)
80 gateway (ipfs endpoint, it is advisable to create a DNS and add an SSL layer)
Ara tenim un node IPFS totalment funcional.
Com pujar un fitxer a través del node del node IPFS
Per pujar fitxers a la xarxa IPFS a través del node tenim dues opcions, des del propi shell de l’amfitrió o a través de l’ API del node
API:
# curl -vk “https://nuestro_host:5001/api/v0/add” -F file=@”<file.png>”
{“Name”:”archivo.png”,”Hash”:”QmawvemLB8kPK5t9adkln87E9fHtt1d2ct487Rb1uvc85m7v7″,”Size”:”19″}
# ipfs pin ls QmawvemLB8kPK5t9adkln87E9fHtt1d2ct487Rb1uvc85m7v7
QmawvemLB8kPK5t9adkln87E9fHtt1d2ct487Rb1uvc85m7v7 recursive
Shell:
# ipfs add file.png
Fixat o no fixat? Aquesta és la pregunta
Per defecte, quan pugem un fitxer a la xarxa IPFS, es pentinarà, però què vol dir fixar? Cada servidor de xarxa IPFS emmagatzema localment els seus fitxers que poden ser sol·licitats per un altre node, quan un altre node sol·liciti un fitxer que tenim a la part del nostre servidor o tots els blocs del fitxer es replicaran en el node que l’ha sol·licitat per ser replicat en dos o diversos nodes però sempre tindrem al nostre servidor el fitxer ja que per defecte està fixat al servidor des d’on s’ha pujat.
# curl -v “http://localhost:5001/api/v0/add?pin=false” -F file=@”archivo.png”
# ipfs add –pin=false archivo.png
Aleshores, en quin cas no ens interessa no fixar el fitxer?
Si utilitzem IPFS quan estem desenvolupant, potser no ens interessa omplir el node amb fitxers de prova permanents si no estan fixats, els podem eliminar fàcilment fent un “GC” per purgar el node dels blocs que no som. interessats, així com els fitxers que no estan fixats.
¿GC, Recollidor d'escombraries a IPFS?
Per la naturalesa de les xarxes P2P, els nodes IPFS comparteixen blocs d’altres servidors dins de la xarxa IPFS, de tant en tant és saludable tant purgar el nostre node com reiniciar el procés IPFS periòdicament per esborrar la memòria i realitzar un “ipfs repo gc ” per tal de eviteu un emmagatzematge excessiu de blocs al nostre node.
Conclusions
En aquest article aprenem com instal·lar un servidor IPFS en una distribució Linux, com pujar un fitxer a la xarxa IPFS ja sigui des de l’intèrpret d’ordres o des de l’API del node, per què fixar o no un fitxer que pengem a IPFS i com purgar el nostre servidor IPFS dels fitxers no desitjats.
En propers articles aprofundirem en els casos d’ús del node IPFS com IPNS, el CID v0 o v1 i com protegir de manera fàcil i eficient el nostre node IPFS.