在IPFS上如何部署个人网站

2020-04-23 17:33:45

我想学习IPFS和Web 3.0,所以我开始探索它,并尝试将我的网站上传到那里。这是对我在学习过程中所学概念以及最终如何将网站托管在tbking.eth上的解释。我将简要介绍一下IPFS,以及为什么在那里托管静态内容才有意义。如果您已经熟悉IPFS,则可以跳到主机部分。

  我想学习IPFS和Web 3.0,所以我开始探索它,并尝试将我的网站上传到那里。这是对我在学习过程中所学概念以及最终如何将网站托管在tbking.eth上的解释。我将简要介绍一下IPFS,以及为什么在那里托管静态内容才有意义。如果您已经熟悉IPFS,则可以跳到主机部分。


1.jpg


  什么是IPFS

  行星际文件系统是共享内容的分散网络。它具有非常简单但有趣的设计理念:

  建立一个在行星间工作的网络,这也是一个更好的跨地球通信网络。

  IPFS是一个分散的网络,在该网络中,通过BitTorrent等多种方式连接对等方并共享文件。基本原理是,与传统的Web不同,IPFS中的文件是根据文件的位置提供服务,而传统的Web是根据文件的位置提供服务。考虑一下此比较:

  Google的隐私权政策被标识为托管在地址为https://policies.google.com/privacy的 Google服务器上的文件。政策内容无关紧要。这称为location-addressing

  另一方面,IPFS使用文件的哈希值通过文件的内容来标识文件。假设您要阅读“ XKCD#327-妈妈的漏洞 ”。其IPFS地址为https://ipfs.io/ipfs/QmZVjV5jFV7Jo4Hfj6WPyRnHCxf8kbadkqtQBco2gef64x/。该地址不依赖于服务器的位置,而是散列。这称为content-addressing。关心XKCD的人都可以托管它。这使得断开的链接不太可能,这也是IPFS的目标之一。

  IPFS文档很好地解释了这些概念。我将它们推荐给任何想深入研究的人。


  在IPFS上托管

  在IPFS上部署静态内容(例如个人网站)很容易。我在下面列出的步骤可用于任何文件,例如纯HTML文件,由静态网站生成器(如Jekyll,Hugo,Hexo和Gatsby)生成的网站,甚至是媒体文件。因此,让我们开始吧。


  添加文件

  IPFS桌面

  如果已安装并正在运行IPFS Desktop,则可以使用常规文件选择器添加文件。只需导入包含您静态网站内容的目录即可。

2.jpg


  右键单击新添加的内容,然后选择Copy CID。打开https://ipfs.io/ipfs/以在网上查看我们的文件!

  容易吧?


  IPFS CLI

  IPFS CLI允许使用add子命令添加文件和目录。


3.jpg


  最后一行打印的哈希是整个目录的CID,因此也是我们网站的CID。我们可以看到托管在https://ipfs.io/ipfs/QmeUG2oZvyx4NzfpP9rruKbmV5UNDmTQ8MoxuhTJGVZVTW/上的示例网站

  提示:在您的网站中使用相对链接非常重要,因为IPFS网关的URL类似于/ipfs//file.ext。

  固定

  在最后一节中,我们添加的文件到我们的 IPFS节点网络找到。这就是IPFS网关能够解析它并将其显示在浏览器中的原因。但是,一旦关闭IPFS守护程序,该站点很可能将无法访问。即使在IPFS上请求了某些内容之后,接收节点也成为该内容的主机,但是在12小时后将对这些内容进行垃圾收集。如何在没有服务器的分散式网站中全天候服务您的网站?

  欢迎,钉!

  在IPFS上固定一些内容的节点将永远托管它(直到取消固定它)。有诸如Pinata之类的固定服务,可将文件固定在其IPFS节点上。这样,网站将始终可用。

  在Pinata中,如果内容已经上传到IPFS,则可以上传文件或仅提供其哈希值。这是我固定我们上面上传的示例网站的方式。

4.jpg


  提示:最好使用多种固定服务固定您的站点,以实现冗余。


  自动化部署

  您可能已经注意到,使用IPFS非常容易。我要说的是,这比处理我们使用的传统网络要容易。但是,每次您要更改文件时都必须重复此过程,这不是很理想。有像Fleek这样的工具,可以帮助自动完成上面列出的所有步骤。

  Fleek就像Travis或CircleCi一样用于IPFS部署。您可以将其Github帐户与其关联,并使用Github挂钩,Fleek将在每次推送至Github存储库时触发部署。他们还固定部署的所有内容。

  因此,我使用Hexo生成了此博客,并且能够在Fleek仪表板本身中添加一个构建步骤,因此无需生成HTML并将其推送到我的存储库。这是我使用的构建命令:

  是的,我需要自己安装子模块。默认情况下,他们还没有这样做。检查一下,这非常容易。


  链接到域

  因此,现在我们可以启动并运行我们的网站,但是IPFS上的内容不像传统网络上那样容易查找。我的网站可以在https://tarunbatra.com上找到。但是在IPFS上,可以通过https://ipfs.io/ipfs/QmTPTa1ddoSkuakaW56SaL9dicbC71BbwfjRbVjasshCXs/访问当前版本。您看到问题了。这不是人类可读的。每次更新后,CID都会更改。有两种解决方案:


  DNS链接

  使用DNSLink,您可以将普通域指向IPFS内容。它可以很容易地在Fleek上设置。我已经指出ipfs.tarunbatra.com使用Fleek到IPFS版本,你就可以打开这个网站。

  IPNS(行星际名称服务)也存在,与DNSLink相似,但现在要慢得多。


  以太坊名称服务

  ENS是一个以太坊区块链上的命名服务,它使用智能合约购买域名并为其设置解析器记录。由于涉及以太坊,因此您需要使用MetaMask来使用它。


5.jpg


  我购买了该域,tbking.eth并将其指向该站点的IPFS内容。每当我更改网站内容时,仍需要对其进行更新。我不确定是否有任何自动化的方法。但是,截至目前,Fleek正在致力于ENS域集成。出来后,我会在这里更新。如果您知道另一种方法,请在评论中让我知道。

  就是这样 IPFS非常适合作为的存储层Web 3.0。自己尝试,如果您喜欢此博客,请共享它,也可以固定它!


最新推荐