ipfs - InterPlanetary File System
Overview
Hoy en día, el almacenamiento y el compartir ficheros son actividades comunes en todo el mundo.

En la mayoría de los casos, podemos realizarlo con sistemas locales, almacenando localmente en nuestra casa u oficina o haciendo uso de servicios en la nube como Google Drive, One Drive, WeTransfer, etc. Estos sistemas son una excelente opción para la mayoría de los usuarios, ya que cubren la mayoría de nuestras necesidades en cuanto a almacenar y compartir archivos.
Por otro lado, sabemos que estos servicios utilizan los datos que almacenamos en ellos con fines comerciales, lo cual no se si es lícito, aunque sea parte del acuerdo utilizarlos. A cambio de ofrecernos un servicio, renunciamos a parte de nuestra privacidad. Pero existe una alternativa, InterPlanetary File System.
IPFS
IPFS IPFS (InterPlanetary File System) o traducido al castellano, Sistema de ficheros interplanetario, es un sistema que permite almacenar y compartir ficheros mediante el protocolo P2P (peer to peer).
Es un sistema libre que permite a los usuarios almacenar y acceder a datos, aplicaciones y sitios web de forma distribuida y descentralizada. Cuando se sube un archivo a IPFS, la red lo divide en pequeñas partes y las distribuye a través de los nodos. Estas porciones se pueden rescatar gracias al hash asociado al archivo. Esta etiqueta permite a la red identificar los nodos donde se alojan los paquetes de datos.
Un punto a tener en cuenta es que, por defecto, tanto el tráfico como los archivos no se cifran, así que, si por la naturaleza del archivo queremos agregar una capa de seguridad tendremos que cifrar nosotros mismos tanto el fichero como el tráfico. En la página de IPFS encontraremos distintas opciones para ello y veremos un ejemplo cuando veamos el uso de IPFS.
La descentralización significa que los datos están distribuidos entre nodos, lo cual en si mismo es una medida de seguridad que proporciona resiliencia y disponibilidad de los datos. Si un nodo fuera atacado o quedara fuera de servicio por cuestiones técnicas, los datos seguirían estando disponibles en otros nodos. Insertando imagen…

Además, IPFS cuenta con dos mecanismos de seguridad que evitan la acción de agentes maliciosos sobre los datos o la propia red gracias a la inmutabilidad y asignación de un hash. Cada archivo cuenta con una huella digital única, lo que permite también que no se suban ficheros duplicados optimizando la red.
Otro punto muy importante que, como veremos en los siguientes puntos, podemos ejecutar un nodo de forma muy simple en nuestro ordenador y de este modo colaborar con el proyecto ampliando el espacio global disponible.
Al estar distribuido en nodos por todo el mundo y emplear un protocolo P2P, que comparte la información de los distintos nodos sin usar un servidor central, de forma descentralizada, lo convierte en un sistema ideal para evitar la censura y publicar documentos protegiendo el anonimato.
Uso de IPFS
Para acceder a los ficheros almacenados en IPFS no es necesario ningún software adicional, desde el explorador web los podremos ver o descargarlos.
Para almacenar nuestros ficheros en IPFS, lo más sencillo es instalar IPFS Desktop o su versión en línea de comandos si así lo preferimos.
Una vez instalado, podremos almacenar y compartir nuestros ficheros.

Cuando subimos un nuevo fichero o carpeta se nos proporciona un hash con el que podremos recuperarlos desde cualquier otro dispositivo.
Los ficheros son interpretados por el explorador web, por lo que, si almacenamos ficheros HTML, estos pueden ser consumidos como una página web, ofreciendo un hosting anónimo y gratuito.
Cifrado de ficheros
Para otorgar una capa de seguridad y proteger los datos que subimos a IPFS lo podemos realizar cifrando los ficheros.
1 | openssl enc -aes-256-cbc -salt -in archivo.txt -out archivo_cifrado.txt |
También lo podríamos realizar con herramientas como 7zip, entre otras muchas opciones, desde su interfaz gráfica o por comandos.
Web hosting
Para publicar una página web en IPFS lo único que necesitas es crear una carpeta y poner allí todos los documentos html, imágenes, css, etc. Verificando que los vínculos son relativos, no absolutos.
Hay que tener en cuenta que, dado que el hash es calculado según el contenido de los archivos, cada vez que modifiquemos la página el hash de la carpeta cambiará y con ello la dirección web pública.
Si disponemos de un dominio lo podemos usar añadiendo un par de registros en nuestro DNS.
Primero añadiremos el registro A, en este caso estoy creando el subdominio ipfs. Como se puede observar en la imagen lo estoy realizando desde cloudflare para disfrutar también de sus cualidades.

A continuación, crearemos un registro TXT con el valor _dlink.subdomain y como content dnslink=/ipfs/SITE_CID donde el SITE_CID es el hash de la carpeta donde tenemos almacenada la web.

Como veréis la velocidad de carga es rápida y para páginas web estáticas una buena solución.
Dejo también la documentación oficial de IPFS en el siguiente link.
Creando tu nodo
Crear tu propio nodo de IPFS es muy fácil, lo puedes realizar mediante Docker usando la imagen de kubo, a continuación, un docker-compose de ejemplo.
version: "3.8"
services:
ipfs:
image: ipfs/kubo:latest
container_name: ipfs
environment:
- IPFS_PROFILE=server
- IPFS_PATH=/data/ipfs
volumes:
- ./ipfs_staring:/export
- ./ipfs_data:/data/ipfs
ports:
- 4001:4001/tcp
- 4001:4001/udp
- 0.0.0.0:5001:5001
- 0.0.0.0:8080:8080
restart: always
Algo importante es que el puerto 5001 no esté expuesto a Internet, desde este puerto es posible conectarse al nodo y administrar todos sus ficheros y carpetas, solo tú tienes que tener acceso a él.
Implementacines de IPFS
Si no deseamos crear nuestro propio nodo siempre puedes hacer uso de servicios que se basan en la tecnología IPFS como OpenBazaar, Textile, Qri, Dtube, Peegos, Pinata, TemporalX.
De hecho, con algunos de ellos podrás conectar tu nodo de IPFS para disponer de réplicas de tus ficheros en sus nodos.
Conclusiones
Existen alternativas a los sistemas comerciales para el almacenamiento de ficheros y a los sistemas para compartirlos. Esta alternativa en concreto, nos proporciona también anonimato y resiliencia gracias a su sistema distribuido. Si queremos además añadir una capa de seguridad para proteger también el dato lo podemos realizar cifrando los ficheros antes de subirlos al sistema.
Hasta aquí el post de hoy. Espero haya sido de vuestro interés.
No dudéis en contactar mediante el formulario para hacerme llegar vuestros comentarios.