对于希望了解IPFS的用户而言,最好的办法就是创建一个最简单的网站,它仅仅只包含一个网页,然后把这个网站托管在IPFS上,下面所有的操作都在Linux操作系统中,大家可以选择常用的Ubuntu系统。
假设您在目录中有一个静态网站mysite。
为了将其发布为站点,请安装IPFS并确保IPFS守护程序正在运行:
然后在目录中添加您的网站:
文件夹名称旁边的最后一个哈希mysite/是要记住的哈希,请立即调用$SITE_CID。
然后您可以通过http://localhost:8080/ipfs/$SITE_CID在浏览器中打开或使用wget或curl从命令行中进行本地测试。
要从另一个ipfs节点查看它,可以在浏览器http://gateway.ipfs.io/ipfs/$SITE_CID中尝试。您可以在添加了站点文件的网络内部或外部的另一台设备上的浏览器中进行。
这些哈希值很难记住。让我们看一些摆脱它们的方法。
编辑您的DNS记录
假设您拥有域名your.domain并且可以访问注册商的控制面板来管理它的DNS条目。
您可以创建一个DNS TXT记录(DNSLink),使用键your.domain.和上一节中的值dnslink=/ipfs/$SITE_CIDwhere $SITE_CID。
创建该记录并传播之后,您应该可以找到它。
现在,您可以访问您的网站http://localhost:8080/ipns/your.domain
您也可以在网关上尝试此操作:http://gateway.ipfs.io/ipns/your.domain
有关DNSLink的其他问题请访问DNSLink网站以获取教程,示例和常见问题解答。
使用IPNS
每次更改网站时,都将不得不重新发布它,使用新值更新DNS TXT记录,$SITE_CID然后等待其传播。
您可以使用IPNS(星际命名系统)来解决该限制。
您可能已经注意到,/ipns/而不是上一部分/ipfs/中的更新链接。
IPNS用于IPFS网络中的可变内容。它相对易于使用,可以让您更改网站而无需每次都更新dns记录。
要为您的内容启用IPNS,请运行以下命令,其中$SITE_CID第一步中的哈希值是。
您将需要记下并保存该值以$PEER_ID用于后续步骤。
加载网址http://localhost:8080/ipns/$PEER_ID并在http://gateway.ipfs.io/ipns/$PEER_ID确认此步骤。
返回到注册商的控制面板,使用your.domainto 键更改DNS TXT记录,dnslink=/ipns/$PEER_ID,等待该记录传播,然后尝试使用URL
http://localhost:8080/ipns/your.domain
和http://gateway.ipfs.io/ipns/your.domain。
注意:使用IPNS更新网站时,在传播更新时,可能会从两个不同的已解决的哈希加载资产。在更新完全传播之前,这可能会导致URL过期或资产丢失。
将您的域指向IPFS
您现在在ipfs / ipns上拥有一个网站,但是您的访问者无法通过访问该网站:http://your.domain。
我们所能做的就是请求http://your.domain由IPFS网关守护程序解决。
返回到您的注册商的控制面板,并添加一个A记录,其键为
your.domainipfs,守护程序的IP地址和键值,该守护程序在端口80上侦听HTTP请求(例如gateway.ipfs.io)。如果您不知道计划使用的守护程序的IP地址,则可以使用以下命令找到它:
记下返回的IP地址。
为每个IPv4地址创建一个A记录(例如209.94.90.1ipfs.io)。
为每个IPv6地址创建AAAA记录(例如,2602:fea2:2::1用于ipfs.io)。
注意:ipfs.io网关IP地址不会更改,因此您可以设置它们或忘记它们。如果您在不控制IP地址的情况下使用自定义网关,那么它们可能会更改,则可能需要定期重新检查它们并更新DNS记录(如果存在)。
访客的浏览器将发送your.domain其请求的Host标头。ipfs网关将识别并your.domain查找您所在域的DNS TXT的值,然后在其中提供文件
/ipns/your.domain/。
如果将your.domainA和AAAA记录指向IP地址gateway.ipfs.io,然后等待DNS传播,那么任何人都应该可以访问ipfs托管的站点,而无需进行任何其他配置http://your.domain。
使用CNAME
您还可以使用CNAME记录来指向网关的DNS记录。这样,网关的IP地址将自动更新。
但是,您需要将TXT记录的密钥从your.domain更改为_dnslink.your.domain。
因此,通过创建CNAME your.domain到gateway.ipfs.io并添加
_dnslink.your.domain记录与dnslink=/ipns/<your peer id>您可以承载网关的IP地址。