本文由IPFS原力区收集译制,版权所属原作者
Emiel Kollof:随我做一些IPFS托管操作,easy…
介绍
我的个人网站现在完全托管在IPFS上,本文将向你展示我如何操作的,以及我如何通过IPFS发布它。请注意,这些还是手动的步骤,我正在研究如何实现这些操作的自动化,这样我就可以编辑、提交和推送这些内容,并且可以在不进行思考的情况下自动完成所有这些操作。
我之前的设置使用了brilliant forestry.io,但缺点是它不能与Gitea兼容,我现在用Gitea代替GitHub。
所以,现在我仅手动操作,并没有太多工作量。继续看看是怎么做的。
但首先,让我们讨论一下我正在使用的工具。
会使用的工具
Hugo
我使用hugo渲染站点。Hugo是一个静态站点生成器。它将把标记页面转换成漂亮的HTML。此外,所有页面都是静态的,因此你不必担心跨站点脚本、数据库注入攻击或任何其他代码的问题,一切都是静态的。
另外,静态站点的另一个好处是速度快。不需要处理页面,不需要等待数据库查询,也没有什么会妨碍性能。所有需要做的就是为你的页面服务。不多也不少。而且,它可以放在potato上,而且速度仍然很快,这是一个双赢。
唯一的缺点是Hugo需要专门研究一下,如果你想制作自己的东西,你需要学习Hugo的预处理语言,而且有许多主题可供选择和修改。但你要准备好在相当长的一段时间内修修补补,
当然也有其他站点生成器,比如Jekyll,但是Hugo的速度更快,也更容易设置(Hugo只有一个二进制文件,Jekyll有一个Ruby deps)。
CloudFlare IPFS网关
我在CloudFlare上托管这个网站,这样做的好处是,可以免费使用CloudFlare的基础设施,它又好又快。它还处理DNS到IPFS网关,所以没有IPFS的人仍然可以访问你的内容。
用我的方法,你的域名也应该托管在Cloudflare上,因为我们将在更新网站时使用Cloudflare的API对DNS进行更改。
Pinata 和/或 Infura
Pinata和/或Infura是将你的站点固定在IPFS上的服务,Pinning是确保数据不会从IPFS中删除,并且它将保持数据的活动性,以便人们可以访问它,即使你自己的IPFS节点处于脱机状态。
你可以在自己的IPFS节点上托管你的网站,但这只能在你的IPFS节点上进行。像Pinata或Infura这样的固定服务可以确保它始终处于活动状态,即使你离线。
Pinata最多免费1GB的固定数据,infura是完全免费的,但有100MB空间的限制。当你的网站刚刚起步的时候,infura是一个很好的选择,但是当你成长的时候,你应该谨慎的选择pinata。不过,它是便宜的。
IPFS问题部署
在呈现静态站点之后,可以让ipfs-deploy将站点上传到infura和/或pinata以固定它,它将更新cloudflare DNS以使你的_dnslink记录指向网络上正确的IPFS哈希。
把这些组合起来…
Cloudflare设置
首先,确保你的域名DNS托管在cloudflare上,将你的DNS迁移到Cloudflare非常简单,根据你的注册商的不同,这不会花费你几个小时的时间。大部分时间都是等待DNS的处理,所以在开始之前要确保TTLs较低,完全转移之后你可以再增加它们。最坏的情况是,将域名服务器切换到Cloudflare可能需要一天的时间,所以准备是值得的。
如果你已经在Cloudflare上,那么你已经设置好了。获取Cloudflare API密钥并将其保存到某个地方,你需要它的时候。你可以在你的帐户设置中找到它。
获取Pinata帐户(可选)
如果你打算使用Pinata,去建立帐户。你需要这个来获取另一个API密钥,我们将使用它来固定我们的站点。
确保你的网站是兼容的
好的,让我们假设你已经准备好了一个hugo网站(那里有很多教程),你花了一些时间使它变得非常漂亮,并且你想要摆脱你的web服务器。
Ok,开始
首先,打开configtoml确保这些线在里面:
canonifyurls = true
relativeurls = true
这将确保静态站点中的所有链接都是相对的,并且不会指向其中有https://的链接,这可能会破坏内容。
另外,现在是将站点提交/推送到git存储库的时候了,现在假设你已经完成了此操作(而且,配置git超出了本文的范围)。
配置ipfs-deploy
我们在设置DNS之前首先执行此操作,因为我希望在使用Cloudflare IPFS网关指向它之前在IPFS中托管内容。
在hugo项目的根目录中,需要一个.env-file。此文件包含我们需要能够一次性完成这一事情的所有密钥和凭据。
重要
在将站点提交/推送到Git repo之前,请确保该文件位于.Gitignore中。你不希望你的Cloudflare API密钥遍布github,所以:
$ echo".env">> .gitignore
$ git add .gitignore
$ git commit .gitignore
$ git push
你的.env文件应该是这样的:
(注意,pinata条目是可选的,当你第一次开始时,infura pinner现在可能很好)
让我们运行这个:
领取专属 10元无门槛券
私享最新 技术干货