Skip to content

Instantly share code, notes, and snippets.

@pacoccino
Last active January 27, 2021 13:43
Show Gist options
  • Save pacoccino/beac24fce5f292d5454559dfe279ac39 to your computer and use it in GitHub Desktop.
Save pacoccino/beac24fce5f292d5454559dfe279ac39 to your computer and use it in GitHub Desktop.
Dweb Guide FR

Dweb How-To

Ou comment déployer des sites statiques sur IPFS

Generer un site statique

Avec n’importe quel outil qui génère un dossier contenant un index.html et des liens relatifs

Envoyer sur IPFS

ipfs add -r web_build/

Pin

Pour que le contenu soit accessible à tout le monde, les fichiers doivent être pinés à un serveur

Self host

Il faut un serveur dédié en ligne tout le temps

ipfs pin add -r /ipfs/<content_hash>

Piñata/infura/fission

Service managé, gratuit à payant selon le volume stocké

Demande de pin via API, ou via ipfs-deploy

https://github.com/ipfs-shipyard/ipfs-deploy

IPFS cluster

TODO

Linking

IPNS

ipfs name publish <content_hash>

Retourne le peer_id accessible par ipns://<peer_id>

Pour publier sur différents peed_id, voir https://dweb-primer.ipfs.io/publishing-changes/generate-keypair

DNS

On veut que le site soit disponible sur sub.site.com

DNS classique

Definir le domaine afin que n'importe qui puisse acceder au site, sans avoir besoin de navigateur ou d'extension particulière

CNAME sub.site.com = cloudflare-ipfs.com

ou

CNAME sub.site.com = gateway.ipfs.io

Probablement pas de SSL

DNSLink

Cela peut etre fait à la main chez le provider DNS, ou automatiquement avec ipfs-deploy

Cloudflare semble être la solution la plus pertinente, qui propose une gateway et des certificats SSL

https://developers.cloudflare.com/distributed-web/ipfs-gateway

TXT _dnslink.sub.site.com = dnslink=/ipfs/<content_hash>

ou

TXT _dnslink.sub.site.com = dnslink=/ipns/<content_hash>

Il y a visiblement un probleme quand on utilise DNSLink+/ipns/ avec un navigateur traditionnel via https://sub.site.com: quand on met à jour l'IPNS, le browser garde l'ancienne addresse en cache. Sur un browser frais, ça fonctionne correctement.

Récuperer le contenu via ipns://sub.site.com fonctionne en revanche.

Il est visiblement recommandé de choisir la solution DNSLink + /ipfs/, le navigateur voit le changement très rapidement.

SSL

Uniquement dispo si le DNS est managé par cloudflare (je crois)

Une fois que les DNS sont prets, demander à cloudflaire de generer le certificat SSL

https://www.cloudflare.com/distributed-web-gateway/ (en bas de la page)

ENS

Dans l'ENS manager, définir la proprieté contentsur ipns://<peer_id>

https://docs.ipfs.io/how-to/websites-on-ipfs/link-a-domain/#ethereum-naming-service-ens

Success !

Le site est maintenant accessible via

CI/CD

Résumé des étapes pour le déploiement continu:

  • Build le website
  • Add to IPFS
  • Pin to IPFS
  • Publish IPNS
  • Set DNSLink TXT

Les trois dernières étapes peuvent etre executé avec ipfs-deploy avec des variables d'environnement

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment