Décentraliser son site Web avec IPFS, Pinata, Infura et Cloudflare

Image for post
Image for post

IPFS, InterPlanetary File System (ou système de fichier inter-planétaire) est un système distribué de fichiers pair à pair qui ne dépend pas de serveurs centralisés. Son but est de connecter un ensemble d’équipements informatiques avec le même système de fichiers. D’une certaine manière IPFS est similaire au World Wide Web, à la différence qu’il peut être vu comme un essaim BitTorrent (Swarm) unique, qui échange des objets au sein d’un dépôt Git.

Image for post
Image for post

En d’autres termes, IPFS fournit un modèle de stockage par blocs adressable par contenu de haute capacité, utilisant des hyperliens pour l’accès. Ceci forme un graphe orienté acyclique de Merkle généralisé. IPFS combine une table de hachage, un échange de blocs encouragé et un espace de noms auto-certifié. IPFS n’a pas de point unique de défaillance et les nœuds n’ont pas besoin de se faire mutuellement confiance …

Pour cette expérience, je pars d’un template Next.js fourni par Cosmic JS =>

que je charge avec ses dépendances dans une petite instance Ubuntu 18.04 LTS qui tourne dans Hetzner Cloud :

Image for post
Image for post
Image for post
Image for post

Je peux tester que ce template fonctionne bien localement :

Image for post
Image for post

et c’est le cas :

Image for post
Image for post

Je crée un fichier next.config.js pour profiter de la génération de contenu statique avec le module export :

Image for post
Image for post

et je modifie le fichier package.json en conséquence :

Image for post
Image for post

Je peux alors générer du contenu statique à partir de ce template :

Image for post
Image for post
Image for post
Image for post

Je peux le tester pour vérifier que mon site web est opérationnel :

Image for post
Image for post
Image for post
Image for post

Je récupère le binaire go-ipfs depuis son dépôt sur GitHub :

Image for post
Image for post

que je charge sur mon instance :

Image for post
Image for post

Petite configuration pour une exposition globale des endpoints :

Image for post
Image for post

Et je lance le démon IPFS :

Image for post
Image for post
Image for post
Image for post

Je peux charger mon contenu statique dans IPFS :

Image for post
Image for post

Et je vérifie dans le dashboard proposé par IPFS que c’est le cas :

Image for post
Image for post
Image for post
Image for post

Le site web apparait localement à partir du Hash du répertoire chargé sur le port TCP 8080 :

Image for post
Image for post

mais également sur l’IPFS Gateway :

Image for post
Image for post

Ou également à partir de ce Hash sur la passerelle Cloudflare :

Image for post
Image for post
Image for post
Image for post

J’utilise ipfs-deploy maintenant :

Image for post
Image for post

que j’installe sur mon instance :

Image for post
Image for post

Je vais avec cet utilitaire charger ce site web sur Infura qui fournit un accès API instantané et évolutif aux réseaux Ethereum et IPFS pour y connecter son application gratuitement !

Image for post
Image for post
Image for post
Image for post

C’est le cas avec le contenu statique du template :

Image for post
Image for post

Je peux également le déployer sur Pinata qui fournit également un stockage décentralisé :

https://pinata.cloud

Image for post
Image for post

J’utilise encore une fois ipfs-deploy avec le provider Pinata après inscription et récupération des identifiants à charger dans .env :

Image for post
Image for post

Le contenu statique est chargé :

Image for post
Image for post

et exposé :

Image for post
Image for post

Quelques liens complémentaires :

Image for post
Image for post

À suivre !

Image for post
Image for post

Sore eyes?

dev.to now has dark mode.

Select night theme in the “misc” section of your settings ❤️

Originally published at https://dev.to on April 5, 2020.

Above the clouds, the sky is always blue ...

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store