Dweb How-To
Ou comment déployer des sites statiques sur IPFS
Avec n’importe quel outil qui génère un dossier contenant un index.html et des liens relatifs
ipfs add -r web_build/
Pour que le contenu soit accessible à tout le monde, les fichiers doivent être pinés à un serveur
Il faut un serveur dédié en ligne tout le temps
ipfs pin add -r /ipfs/<content_hash>
Service managé, gratuit à payant selon le volume stocké
Demande de pin via API, ou via ipfs-deploy
https://github.com/ipfs-shipyard/ipfs-deploy
TODO
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
On veut que le site soit disponible sur sub.site.com
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
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.
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)
Dans l'ENS manager, définir la proprieté content
sur ipns://<peer_id>
https://docs.ipfs.io/how-to/websites-on-ipfs/link-a-domain/#ethereum-naming-service-ens
Le site est maintenant accessible via
- https://sub.site.com
- ipns://sub.site.com
- ipns://<peer_id>
- ipfs://<content_hash>
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