Adrián Arroyo Calle

Generando el contenido estático

Subir a IPFS

ipfs add -r adrianistan.eu/

IPFS tiene direccionamiento por contenido

IPNS, gestión de nombres para IPFS

ipfs name publish HASH

ipfs name resolve QmYDVeoadAzk9ZW6zwJK3E3KHrA1LWLveEdqUv4XAcCjKa

DNSLink

dnslink=/ipns/HASH

IPFS Companion

Servicio systemd

[Unit]

Description=IPFS daemon



[Service]

ExecStart=/snap/bin/ipfs daemon

Restart=on-failure



[Install]

WantedBy=default.target

sudo cp ipfs.service /etc/systemd/user/

sudo systemctl --user start ipfs.service

sudo systemctl --user enable ipfs.service

En el primer post vimos como interactuar con IPFS de forma sencilla. Ahora vamos a dar un paso más y vamos a alojar una web en IPFS, aprovechando todas las ventajas de escalabilidad y disponibilidad que nos ofrece la red. Para ello usaremos además otro protocolo llamado IPNS, que sería similar a DNS pero en la red IPFS.Las páginas ideales para IPFS actualmente son las que siguen el JAMstack , es decir, uso extensivo de JavaScript en el cliente, que podrá conectarse a APIs para obtener/actualizar información. Las APIs no tienen por qué ser centralizadas, ya que JavaScript con WebRTC puede buscar peers, posibilitando APIs descentralizadas.El primer paso será generar el contenido estático de la web. Para ello existen herramientas muy conocidas como Jekyll No nos vamos a alargar más en esto, ya que cada herramienta tiene sus pasos. El resultado final será una carpeta con ficheros HTML, CSS, fuentes, imágenes y JavaScript.Teniendo el nodo IPFS en funcionamiento, subimos la carpeta del modo habitual, en mi caso, voy a subir la página que está en http://adrianistan.eu Y anotamos el último hash.Comprobamos que la web es accesible, tanto desde la gateway del nodo, como una externa: Tanto en el nodo local como en uno externo, la web carga perfectamente con el hashEn el post anterior mencionamos que IPFS direcciona por contenido gracias a los hashes. Esto tiene unas consecuencias interesantes. Por ejemplo, si se añade un archivo duplicado a IPFS, este tiene exactamente la misma dirección, ya que comparten hash. Por otro lado, los documentos no se pueden actualizar, porque entonces su hash cambia. Sin embargo en una web queremos cambiar contenido, ahí entra en acción IPNS.IPNS es un protocolo parecido en intenciones a DNS que redirige un ID única al hash correspondiente en ese momento. Registramos el hash de la web actual en IPNS. Ahora sí, el hash IPNS puede publicarse por la red, ya que siempre apuntará a la última versión de la web.Para acceder a recursos a través de IPNS tenemos que cambiar de protocolo, en vez de /ipfs/HASH, tenemos que poner. Vale tanto para comandos como para las gateways HTTP.En cualquier momento podemos comprobar a que dirección IPFS apunta el hash IPNS: Para actualizar el contenido simplemente se vuelve a repetir el paso de ipfs name publish. IPFS automáticamente modificará la redirección de IPNS.Los contenidos antiguos no desaparecen, pero pueden no ser accesibles ya que ningún nodo tenga copia de ellos.Aún así, ir dándole a la gente un hash IPNS es demasiado complicado. Afortunadamente, podemos usar el DNS tradicional para indicar una ruta IPNS y así, como veremos, facilitar bastante las cosas.Para ello añadimos un campo TXT en los DNS de nuestro dominio. El contenido es el siguiente:Con esto podremos usaren la red IPFS. Pero todavía hace falta un cliente IPFS.Afortunadamente, podemos redirigir mediante CNAME a una gateway HTTP de confianza y ¡la web funcionará correctamente! Para ello hay que crear un campo TXT en el subdominiocon el mismo contenido que el anterior.Todas las gateways de IPFS soportan DNSLink para que la transición a IPFS sea lo más transparente posible. Así, finalmente la página carga con un dominio normal y corriente en un navegador normal y corriente. Fijaos en la URLDe hecho, vosotros mismos podéis acceder:Si usamos mucho IPFS, puede que nos interese una extensión que maneje el protocolo. Tanto en Firefox como en Chrome existe IPFS Companion, una extensión que nos permite acceder a contenido IPFS de forma sencilla.Por último, quiero dejar el servicio de systemd necesario para tener el nodo IPFS funcionando constantemente en nuestro ordenador. En este caso, IPFS lo instalé vía Snap.Y con esto ya tendríamos suficiente como para jugar con IPFS un buen rato.