Sitio estático sin servidor utilizando IPFS

TL; DR : IPFS le permite alojar sitios estáticos de forma distribuida, a los que se puede acceder a través de puertas de almacenamiento en caché públicas (servidores proxy transparentes) en Internet, sin la necesidad de instalar el programa para el visitante. Dichos sitios se pueden entregar sin una dirección IP estática enrutable ("blanca") (funcionará para NAT), permanecen operativos si no hay sitios de distribución por un corto tiempo (varias horas), debido a la caché en las puertas. Puede vincular su dominio a puertas a voluntad, y puede agregar registros DNS a varias puertas al mismo tiempo, para aumentar la confiabilidad y el equilibrio de carga. Otros usuarios de IPFS pueden descargar el sitio y ayudar con la distribución.
IPFS es ideal para blogs estáticos, sitios simples, archivos de archivos (como reemplazo de Bittorrent), y también solo para la transferencia simultánea de archivos grandes sin descargarlos primero a ningún servicio.

¿Qué es el IPFS?

IPFS es un sistema descentralizado de transferencia de archivos punto a punto similar en principio a BitTorrent, pero con la capacidad de acceder a través de HTTP para la Web. Todos los archivos descargados por el usuario son almacenados temporalmente en caché por el demonio IPFS y distribuidos a otros usuarios que lo soliciten. Los archivos importantes se pueden "adjuntar" (pin) al demonio IPFS, luego no desaparecerán del caché.
Los archivos agregados a IPFS reciben hashes globales que no cambian cuando el archivo se agrega nuevamente. El direccionamiento en la red se realiza mediante identificadores de contenido (CID) , dentro de los cuales hay un hash múltiple . En el contexto de IPFS, apuntan a un archivo, directorio, metadatos o enlace simbólico que no cambia o cambia.

En el momento actual de desarrollo, el proyecto funciona completamente solo con datos estáticos, pero ya existe soporte experimental para un protocolo como suscriptor de publicación (publicación / suscripción), así como una implementación de IPFS en Javascript que funciona en un navegador, que en el futuro le permitirá crear sitios dinámicos (por ejemplo, comentarios de blogs) con interacción en tiempo real (por ejemplo, chats).

Una de las principales ventajas de IPFS en comparación con otras tecnologías similares es el acceso a recursos de Internet a través de las puertas, que son instaladas por empresas y entusiastas de la tecnología. Le permiten explorar sitios y descargar archivos sin instalar IPFS en su computadora. La puerta más grande es de Cloudflare , también le permite emitir un certificado HTTPS gratuito para el dominio.

¿Por qué se necesita IPFS y dónde usarlo?

La red le permite distribuir y descargar datos de manera eficiente, distribuida y descentralizada, incluso desde un navegador. Veo las siguientes aplicaciones reales para el proyecto:

  1. Alojamiento gratuito para personas sin hogar de sitios web estáticos en la computadora de su hogar, sin una dirección IP dedicada (para NAT), sin un dominio o con un dominio;
  2. Alojamiento no controlado por censura de sitios de alto riesgo que pueden ser bloqueados por el gobierno o por compañías de terceros dentro de la DMCA;
  3. Distribución de datos que cambian o agregan periódicamente que no se pueden distribuir de manera efectiva a través de Bittorrent (deberá recrear constantemente el archivo torrent y solicitar a todos los distribuidores que lo descarguen nuevamente, lo que conduce a la fragmentación de las semillas);
  4. Una alternativa a CDN que no requiere configuraciones en el lado del "proveedor de CDN".

¿Cómo crear un sitio en IPFS?

¡Esto es más fácil que con el alojamiento regular! Considere la posibilidad de alojar un sitio estático simple.

La opción más fácil es usar la utilidad gráfica Siderus Orion .
Instale la utilidad, iníciela, haga clic en Archivo → Agregar directorio, seleccione el directorio con los archivos del sitio.

Después de un tiempo, aparece una ventana con información sobre el contenido importado:
imagen

Vaya a la pestaña "Archivos", haga clic derecho en el hash → Abrir en el navegador:
imagen

Si todo se hizo correctamente, el sitio se abrirá a través de la puerta de siderus.com:
https://siderus.io/ipfs/QmU8rJjkXbfkPqEE3Dr8GiUMKF1vPnnNUKWdaB5DsZDfJ7/

Eso es todo, su sitio estático es accesible para otros usuarios mientras mantiene el programa en ejecución o mientras permanece en la caché de la puerta.

Una opción de consola alternativa : descargue el cliente oficial go-ipfs , descomprímalo, inicialícelo y ejecútelo tal como está escrito en el sitio :
ipfs init ipfs daemon 

A continuación, agregue nuestro directorio con los archivos del sitio:
 ipfs add -r ./www.uncleoutrage.com … added QmXdaairbPoSGV98sQ3GsEuevVTE1EBUzZ4PhbLfKVh1nX www.uncleoutrage.com/images/fanart added QmdFbHdzzB4qBBkn8UsyHnjg1BKEtm9d5LaTyv5aZd8bbE www.uncleoutrage.com/images/gigs/thumbs added QmVPJ3Mr8gZL5x15A9XARC1uHASqb2JMsKTT7mWs37UmBo www.uncleoutrage.com/images/gigs added Qmd3AbVwMVE9W6ZSEuax96Xnymbnic4XVCdNEKBPZcWi5c www.uncleoutrage.com/images/live/thumbs added QmebUfmT2wmZMbJcAmSMS4cZJr4guTqV67xNJ3hiQGsLYx www.uncleoutrage.com/images/live added QmaEVaRiUUXfDnjjuXHGGsg7jDaFrCaxS7wi6q83q4N1uu www.uncleoutrage.com/images/misc/thumbs added QmW2ZivQF5eh5LHSLet298AhKCHiQsFV6rvUFvMcCkLopo www.uncleoutrage.com/images/misc added QmZXXn7abBvj7SvYJoYMAXUeajP6A1UABKENrNwuhKqofk www.uncleoutrage.com/images/promo/thumbs added Qmcx6bMKur4Anzh91bJC6o5vMPftzocSMmd7iYxoGwQrNX www.uncleoutrage.com/images/promo added QmW8P3ZnvKUytCWJF6y6wvBD8XAkk4bvJoVK8j3apokzLS www.uncleoutrage.com/images added QmXG1QjfpCjErQBGZvF6VWBryXe9WFLPqhrsGWtikACVwR www.uncleoutrage.com/js added QmYGXwLJBnqXwWYGKVtjZtmwncgwNoqNmnYqo1NTinTGBp www.uncleoutrage.com/theband/misc/pages added QmWg4JyZ4ox9hcHt6JGBfzUm5CqWsb6DixUksamFvbirH4 www.uncleoutrage.com/theband/misc added QmPtn9XBhWqe7A1z3ikktWExSPSM27LTzUL3US9N5xcAPB www.uncleoutrage.com/theband/redsaug21/pages added QmaGV6kfLdL1bKGBBHYJLDVstiejAANayBZt16NMF9g9j9 www.uncleoutrage.com/theband/redsaug21 added QmScmcUAdC5pinMxaoLuXSy3FDUAX5E68dADnGjYZbPUiY www.uncleoutrage.com/theband added QmU8rJjkXbfkPqEE3Dr8GiUMKF1vPnnNUKWdaB5DsZDfJ7 www.uncleoutrage.com 

El último hash es el hash del directorio, y lo necesitamos.

Compilamos un enlace para abrir el directorio a través de la puerta manualmente, de la forma:
 https:///ipfs/ 

Por ejemplo:
https://cloudflare-ipfs.com/ipfs/QmU8rJjkXbfkPqEE3Dr8GiUMKF1vPnnNUKWdaB5DsZDfJ7

¿Cómo vincular un hash IPFS a un dominio?

Para hacer que un sitio web sea accesible por el dominio https://uncleoutrage.com/ , y no por un enlace largo y feo, debe agregar varios registros DNS:

  1. Registros A y AAAA que apuntan a la dirección IP de la puerta, o registro CNAME que apunta al nombre de dominio de la puerta;
  2. Registro TXT "_dnslink", con contenido como "dnslink = / ipfs / HASH".

En mi caso, agregué entradas A y AAAA que apuntan a las direcciones IP de cloudflare-ipfs.com, y el registro TXT "_dnslink.uncleoutrage.com":
 uncleoutrage.com. IN A 104.18.252.167 uncleoutrage.com. IN A 104.18.255.167 uncleoutrage.com. IN AAAA 2400:cb00:2048:1::6812:fda7 uncleoutrage.com. IN AAAA 2400:cb00:2048:1::6812:40a8 _dnslink.uncleoutrage.com. IN TXT "dnslink=/ipfs/QmU8rJjkXbfkPqEE3Dr8GiUMKF1vPnnNUKWdaB5DsZDfJ7" 

Puede obtener un certificado HTTPS de Cloudflare para el dominio vinculado, debe solicitarlo en la página de recibo de certificado especial .
Si no necesita soporte HTTPS, puede agregar varios registros A / AAAA a diferentes puertas a la vez, la lista actual de puertas de trabajo está disponible en el foro del proyecto .
En caso de actualizar el sitio, deberá actualizar el registro TXT del dominio.

¿Cómo no actualizar un registro TXT con actualizaciones del sitio?

IPFS le permite generar un identificador hash estático especial que apunta a un hash cambiante - IP N S. En el cliente gráfico, simplemente haga clic en Archivo → Publicar en IPNS, y especifique su ID de igual en el enlace o en el registro TXT del dominio, y no el hash obtenido al agregar el directorio. Por ejemplo:
 https://cloudflare-ipfs.com/ipns/QmV97DGqaaTVn54RH9CLTi9hxXfr57gJQ4zGtyHcVbtfH6 

Sin embargo, el registro IPNS debe actualizarse (publicarse) cada pocas horas manualmente, y se resuelven mucho más lento / ipfs /.

Por cierto, IPNS puede resolver no solo los CID, sino también los registros dnslink para un dominio: se puede abrir un sitio usando un enlace como https://cloudflare-ipfs.com/ipns/uncleoutrage.com .

Conclusión

Si desea saber más sobre IPFS, lea la serie de excelentes artículos de ivan386 . Son geek, y casi nunca dicen por qué una persona común podría necesitar IPFS (de lo contrario, este artículo no lo habría sido).

¿Desea ayudar a distribuir sitios IPFS o ser informado de que el dominio está vinculado a una puerta IPFS? Instale un complemento de navegador (para Firefox , para Chrome ) que redirija los sitios IPFS a su nodo local.

Desde hace varios meses, Anti-Ban ha estado distribuyendo terabytes de archivos PAC por día a través de IPFS utilizando la puerta Cloudflare. Funciona de manera estable, ahorra significativamente el tráfico del servidor.

Source: https://habr.com/ru/post/es430172/


All Articles