文件托管IPFS网络经验分享; 前车之鉴后车之师,精细操作指南→

本文由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,开始
首先,打开config toml 确保这些线在里面:
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 credentialsIPFS_DEPLOY_PINATA__API_KEY=<key>IPFS_DEPLOY_PINATA__SECRET_API_KEY=<secret key># cloudflare credentialsIPFS_DEPLOY_CLOUDFLARE__API_EMAIL=<cloudflare login e-mail>IPFS_DEPLOY_CLOUDFLARE__API_KEY=<cloudflare global api key># cloudflare dns infoIPFS_DEPLOY_CLOUDFLARE__ZONE=<domain name> IPFS_DEPLOY_CLOUDFLARE__RECORD=<domain name
(注意,pinata条目是可选的,当你第一次开始时,infura pinner现在可能很好)
让我们运行这个
:
(视频播放,阅读原文)
它似乎已经把我的网站发布到IPFS哈希
QmVEnhXTRcKHjkQXBVPiDnwCeYS48UZnz9bib5s3sFihEe。
现在我们可以做一些奇特的事了。
还记得我们将CloudFlare API密钥放入了.env-file吗?让我们确保地球上的其他地方不需要记住那个那可怕的的哈希值。
登录你的Cloudflare面板(你可能已经登录),然后转到你域的DNS设置。现在你需要执行以下步骤:
删除指向主域的A和AAAA记录。不要删除你的子域名,仅针对主要主机条目。
为“@”(域本身)创建一个新的CNAME记录,该记录指向cloudflare-ipfs.com
好的,但你的域名现在处于不确定状态。我们来解决这个问题:

(视频播放,阅读原文)
仔细查看生成的IPFS哈希值......
他们是一样的,你知道为什么吗?数据没有改变,这就是原因。你可以随意跑ipfs-deploy。在进行更改之前,什么都不会改变。
好的,现在DNS已全部设置完毕,现在让我们告诉Cloudflare的IPFS网关。
请访问:https://www.cloudflare.com/distributed-web-gateway/
该页面的底部是一个表单。在那里输入你的域名并点击“提交”。
就是这样。可能需要几个月的时间来对齐,但现在你的域名和你的网站都连接上了IPFS。留意本网站:
elrond:img:% host -t TXT coolvibe.org | grep dnslink <master ✗>ccoolvibe.org descriptive text "dnslink=/ipfs/QmVEnhXTRcKHjkQXBVPiDnwCeYS48UZnz9bib5s3sFihEe"
现在,在我发布之后,它会有所不同,但你仍然可以访问此站点的先前版本,直到我取消它。
更新你的网站
你的域名现在存在于IPFS中,并且你想要在你的hugo博客中添加新帖子。你必须再次经历整个rigamarole?
不,如果不是小菜一碟,我不会这样做。
当你想要更新时,只需创建一个新帖子并重新生成站点。更新站点,就是从你的hugo root 运行ipfs-deploy -p pinata -d cloudflare,它将会更新。它将通过IPFS网络快速传播,并且几乎可以立即生效。
结论
我一直在慢慢地把我的网站从wordpress转移到Hugo和IPFS上。这不是一件容易的事。但这是值得的。它节省了成本,而且非常快。我希望你能从中得到启发和帮助。我希望看到更多人查看IPFS。
—全文完—
本文由IPFS原力区编译,
原文链接:https://coolvibe.org/posts/my-ipfs-hosting-setup-hugo/
【IPFS原力区】
价值观:价值 共建 共享 荣耀
总部位于上海,聚集基于分布式网络&存储的众多技术大咖和爱好者,深耕基于 IPFS的商业生态建设和社区发展。
每周二举办“分布式存储网络”主题沙龙,聚集了众多技术大咖和 IPFS 爱好者,通过持续输出全面、精细、优质的IPFS咨询和技术支持,将生态中的爱好者转化为IPFS支持者和参与者,共建IPFS生态的健康发展。