IPFS: Docker

3 minuto(s) de lectura

Docker

IPFS es un protocolo P2P diseñado para hacer que la Web sea más rápida, segura y abierta.

Las siglas IPFS proviene de InterPlanetary File System, el cual es un nuevo protocolo de internet que renueva los demás protocolos ofreciendo una respuesta a todo, como alternativa sobre HTTP.

Este nuevo protocolo aún se encuentra en su etapa prematura de desarrollo (Alpha), y no brinda demasiadas posibilidades a nivel técnico, a pesar de ello, el protocolo funciona y facilita un seriado de guias y casos prácticos para así tener una toma de contacto con él.

El protocolo surge en el año 2014, inicialmente basando su desarrollo en el Blockchain de Bitcoin.

Las diferencias fundamentales entre el protocolo actualmente más extendido (HTTP) y el IPFS se puede ver en la siguiente comparativa, especialmente cuando lanzamos una consulta:

IPFS

IPFS proporciona distribución de datos de alto rendimiento y baja latencia. También es descentralizado y seguro. Se puede utilizar para enviar contenido a sitios web, almacenar archivos a nivel mundial con versiones y copias de seguridad automáticas, facilitar el intercambio seguro de archivos y la comunicación cifrada.

Algunos proyectos interesantes que se están construyendo bajo esta iniciativa son:

  • Akasha - Una red social de próxima generación
  • BlockFreight - Una red abierta para el transporte mundial de mercancías
  • Digix - Una plataforma para tokenizar oro físico
  • Infura - Un proveedor de infraestructura para DApps
  • Livepeer - Una plataforma descentralizada de transmisión de video en vivo
  • Origen - Un mercado peer-to-peer para la economía colaborativa
  • uPort - Un sistema de identidad auto-soberano

A pesar del impresionante rendimiento de IPFS, algunos problemas aún no se han resuelto por completo. En primer lugar, el direccionamiento de contenido en IPFS actualmente no es muy fácil de recordar. Un enlace IPFS típico se ve así:

https://ipfs.fleek.co/ipfs/QmbKsfZSFNLdnxtPwHcZPWtWJLte413gHJWsx2vmbi8cq8

Pero también surgen alternativas de redirección, por ejemplo del enlace previo, una ruta más sencilla de recordar sería:

https://lordpedal.on.fleek.co

Si te apetece investigar sobre esta red, una forma sencilla es mediante Docker, para ello vamos a realizar unos pasos previos para preparar el entorno. En primer lugar creamos las carpetas donde alojar el proyecto:

mkdir -p $HOME/docker/ipfs/config && \
cd $HOME/docker/ipfs

Ahora vamos a crear el fichero de configuración docker-compose.yml lanzando el siguiente comando:

cat << EOF > $HOME/docker/ipfs/docker-compose.yml
version: "2.1"
services:
  ipfs:
    image: ghcr.io/linuxserver/ipfs
    container_name: IPFS
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Madrid
    volumes:
      - '~/docker/ipfs/config:/config'
    ports:
      - 1080:80
      - 4001:4001
      - 5001:5001
      - 2080:8080
    restart: always
EOF

Vamos a repasar los principales parámetros a modificar para adaptarlos a nuestro sistema y configuración especifica:

Parámetro Función
PUID=1000 UID de nuestro usuario. Para saber nuestro ID ejecutar en terminal: id
PGID=1000 GID de nuestro usuario. Para saber nuestro ID ejecutar en terminal: id
TZ=Europe/Madrid Zona horaria Europa/Madrid
~/docker/ipfs/config:/config Ruta donde se almacena la configuración
1080:80 Puerto de gestión intefaz Web
4001:4001 Puerto para compartir contenido P2P
5001:5001 Puerto comunicación API: Web UI + IPFS
2080:8080 Puerto de puerta enlace para servir contenido IPFS
restart: always Habilitamos que tras reiniciar la maquina anfitrion vuelva a cargar el servicio

Una vez configurado, lo levantamos para ser creado y ejecutado:

docker-compose up -d

Tras ello, podremos configurar el servicio, que en mi caso estaría disponible en la dirección web http://192.168.1.90:1080.

Durante el primer acceso veremos un error de comunicación en la interfaz:

Definimos la IP del Servidor (Ejemplo: 192.168.1.90) y el puerto API (5001) en nuestro servidor y hacemos clic sobre enviar:

Nos saldra un emergente informando que ya estamos conectados a la red IPFS:

En la pestaña de Estado podremos evaluar el rendimiento y consumo del servicio:

En la pestaña Archivos añadimos el contenido a compartir mediante la red:

En la pestaña Explorar podremos analizar como se estructuran los datos relacionando cada nodo:

En la pestaña Pares descubrimos usuarios que estan interconectados a la red:

En la pestaña Configuración podremos personalizar nuestra interacción:

Como comentamos cuando analizamos el docker-compose vimos que para poder usar plenamente la red debiamos de abrir el puerto 4001 en nuestro sistema para exteriorizar el servicio:

NOTA: Recomiendo encarecidamente revisar la documentación del proyecto se encuentra muy bien detallada en esta guía, para poder completar la experiencia de esta red.

Y listo!