【IPFS相关】手把手教你部署自己的静态网站到IPFS
本文由IPFS原力区收集译制,版权所属原作者
这将是最快的教程。
您不需要了解任何关于IPFS的知识,也不需要了解任何分布式内容,甚至不需要了解静态站点生成器。
(静态的火)
准备好了吗?Ok,第一步是打开你的终端,输入以下内容:
mkdir -p dwebsite/publiccd dwebsiteecho '<h1>Hello, worlds!< / h1 > > >public/ index . htmlyarn global add @agentofuser/ipfs-deploy# or: npm install -g @agentofuser/ipfs-deployIpd
跟得上吗?好的,还有什么?什么都没有。
什么?是的。你在这儿完成它。
现在你坐下来,看着胜利的游行队伍走过
就是这样。您自己的l33t#dwebsite 在哈希链的Merkleverse上了。查出来。与你的朋友分享。
Sweet,嗯?
慢点,到底发生了什么?
好吧,这有点让人难以接受。让我们倒回去一点,看看它的慢镜头,与后台评论:
1. 东西在哪里?
说实话,我可以调用ipd ./public,显式传递要部署的目录(public)。
但是,你不会看到作为常用的许多构建目的地之一的ipfs-deploy为静态站点生成器部署“深思熟虑”的表情符号探测器,这些目的地通常没有文档记录。
是的,我浏览了staticgen.com,安装了一些静态站点生成器,并构建了一些小型测试站点,这样我标题就可以宣称“zero-config”。这都是小事,你懂的。
这就是ipfs-deploy在我们懒得输入时所寻找的:
从这个博客的域名可以看出,我是Gatsby的粉丝,ipfs-deploy可以满足所有需要。我们会在它上面安装一个interplanetary jetpack,并带上你自己的SSG,让它“起飞”。
2. 上传
这就是我们在这里的目的,也就是说,把网站放到太空中(比喻地说,就目前而言)。几秒钟后,ipfs-deploy提供:
那一点点散漫分布的哈希是整个dweb的关键。请求你的网站连底层,不关心它在哪里,只关心它是什么。
内容寻址,不受位置或路由的限制。
欢迎<grave pause>到分布式的未来。
等等,我好像听到你说"分布式"
哦,你这个敏锐的读者。
你是对的:IPFS应该是一个点对点协议,那么我们为什么还要上传呢?到服务器! ?
难道我们不应该直接向网络声明我们有这个散列,然后等待其他对等点请求它时自己将它提供给它们吗?
是的,你能做到。然后你关掉你的笔记本电脑,关闭wifi,
这就像torrents:您需要至少一个播放器来提供可访问的内容。如果您的网站有大量运行自己的IPFS节点的人访问它并将其重新提供给其他人,那么平均运行时间将相当高。
但是现在还没有那么多这样的访问者(希望Brave能帮我们解决这个问题),而且,这是一个全新的网站!
如果有一个像#asyncUX的浏览器,并且访问者可以很容易地告诉他们排队下载,等待某个对等点可用,然后通知它什么时候准备好了(就像无缝的“稍后阅读”流程),那么情况就完全不同了。
但就目前的情况来看,如果在提出请求的那一刻没有人在线,事情就只是挂着,然后暂停。肯定不是 space-ready.。
所以我们这边需要一个高运行时间的播种机。或者,用IPFS术语来说,是“pinner”。
使用Infura.io进行零配置固定
IPFS -deploy的一个重要设计目标是让您第一次愉快地体验到在IPFS上创建的东西。
一种方法是运行一个本地IPFS守护进程,并让您自己提供内容。
但正如我们在上面看到的,这可能有点噱头,因为它并不代表您可以与朋友共享的实际部署。一定要有一个稳定的pinner。
不过,用正常运行时间来固定东西是要花钱的,所以大多数固定服务都要求你至少注册一个自由层,然后他们才会同意托管你的网站,这是可以理解的。
不是Infura.io!
通过小心翼翼的限速、聪明的滥用预防、增长资本或鲁莽的放弃,他们让你在未经认证的情况下,就可以随意上传东西,而且他们会无限期地为你提供服务。(即使违背你的意愿,目前也没有明确的方法来解开这些东西。)
所以我们要感谢他们的慷慨:感谢Infura的所有人,请继续保持!
此外,如果您自己拥有一个固定服务,并且希望成为zero-config欢迎包的一部分,请考虑添加一个“更自由”的层,不需要注册。
新创建的静态网站占用的空间不大,流量很少,是进一步使用IPFS的一个很好的途径。
你做到了!
如果你走到这一步,恭喜你。嗨起来!
您不仅部署了自己的第一个IPFS网站,现在还可以夸耀自己真正理解IPFS的工作原理,只需挥挥手说:“哦,它很像git + bittorrent,您知道,这很简单!”
如果你很认真地按照指示去做,结果却不合理,事情就发生在你的脸上,那是我的责任,不是你的。这是我的承诺:你的第一次快乐体验!
所以请告诉我出了什么问题,我会帮你解决的。
我们要消除这里的摩擦
如果你还没有足够的钱,留下一些额外的学分。
如果你对我们目前所取得的成绩感到满意,请将你的感受与他人分享,并广泛地为本指南投票。
“奖金”
免费冗余与Pinata.cloud
拥有一个稳定的pinner是很酷的,但是和普通的web主机没什么不同。(这是在“分配”的意义上。而在“内容寻址性”的意义上,它是不分昼夜的)
了解IPFS分布式特性的一种方法是添加第二个pinner,而“IPFS -deploy”使它更加容易。
我们要把它们都部署到Infura.io和Pinata.cloud。这样,访客就可以同时从两个站点下载,或者在另一个失败时从其中一个站点下载。
它允许您删除pins并添加元数据,稍后您可以使用这些元数据来过滤和管理您的部署。
有一个1GB的自由层,对于开发博客、登录页面、文档和#YangGang fanpage来说已经足够了。它确实需要注册,但它非常简单,不需要信用卡或个人信息。
注册并获得你的API密钥后,进入你的网站目录,将你的密钥复制到.env文件中,如下所示:
你不想公开这些信息,不过当你这样做你的主机的存储库将公开,所以确保.env文件添加到你的.gitignore:
echo .env >> .gitignore
最后一个配置:要部署到Pinata,需要将路由器上的端口4002转发到机器上。
为什么?因为部署到Pinata是这样工作的:
1.我们首先启动一个临时本地IPFS节点;
2.把网站固定在本地;
3.并将散列发送到Pinata;
4.然后Pinata作为对等点连接到我们的本地节点;
5.请求我们发送的散列;
6.然后下载并自己托管它;
因为第4步,我们需要能够监听外部连接。
我知道,手动转发端口是一件痛苦的事,但在本季度将支持NAT遍历将到js-ipfs,所以这是少了一个环,我们需要很快跳转。
相比之下,Infura公开了IPFS节点的HTTP API,因此我们可以直接作为HTTP客户机上传到它,而无需运行本地节点或侦听连接。
Pinata的自定义API在灵活性-零可配置性范围内找到了一个不同的点。
值得庆幸的是,我们可以用ipfs-deploy
现在Pinata已经准备好了,让我们回到文中,下面是运行部署后这两个固定服务的代码:
ipd -p infura -p pinata
你得到的是:
到目前为止没有什么新东西。现在轮到Pinata(以新的表情符号为特色!)
这就是:相同的哈希,不同的位置。
通过替换“ipfs.infura.io”,您可以在任何网关上看到相同的内容”:
l gateway.pinata.cloud
l ipfs.io
l cloudflare-ipfs.com
或者这里列出的任何一个:https://ipfs.github.io/publicgateway-checker
我以前说过,但我觉得这句话很酷,值得重复:
内容寻址,不受位置或路由的限制。
或者:根据数据的内容调用数据,而不是根据数据的位置调用数据。
这就是加密哈希
告诉朋友
好了,我们做完了,对吧?感觉很好。现在去打电话告诉你的朋友吧
-嘿杰西,你猜怎么着?
——什么?
我在dweb上建立了我的网站!!
-耶,朋友,真酷!我打赌那一定很难。
-不,这是npm包,你懂的…
-是的,让我看看网站,在哪里?
——哦,这是在i-p-f-s-dot-i-o-slash-i-p-f-s-slash……呃……
——怎么?
-你有笔吗?大写的Q,小写的m,大写的Q,大写的T…呃…我给你发个网址怎么样?
-好吧,当然,但如果我只是一个随便在广告牌上看到你网址的人呢?那你就不能给我发短信了,是吗?
-嗯,不能。
-你知道吗,如果你有什么值得记住的东西我可以在浏览器里输入,打电话给我怎么样?
?哇,严厉。
好吧,这段栩栩如生的对话很快就结束了。
事实证明,内容寻址本身并不能很好地与有限的人类内存缓冲区相协调。
此外,朋友可能很难相处。
然后呢?
一个漂亮的URL
IPFS网站的可读命名显然是一个需要平滑处理的人性化领域。
但是,如果(这是一个很大的假设)您目前仍在使用免费Cloudflare IPFS网关的限制之内,那么IPFS -deploy将以一种非常简洁的方式将其打包在一起。
下面是我部署interplanetarygatsby.com的真实视频:
ipd -p infura -p pinata -d cloudflare
这是我上传完后看到的:
每次看到它毫不费力的样子,我都会微笑
不过,要达到这个目标,你需要采取一些一次性的步骤:
1.购买一个域名;
2.注册Cloudflare帐户;
3.将您的域名DNS区域移动到Cloudflare;
4.将您的域连接到他们的IPFS网关;
5.获取API密钥;
从实际执行这些配置步骤到等待DNS信息传播,整个过程可能需要几个小时。
这就是为什么我把这部分放在这个额外的章节,而基本指令零配置。随着时间的推移,我们会消除越来越多的摩擦,让第一次快乐的经历变得更加快乐
因此,在完成步骤1-5之后,您需要做的最后一件事是将您的域和Cloudflare API凭据添加到您的网站的.env文件中:
# dwebsite / .env
IPFS_DEPLOY_SITE_DOMAIN = example.com
IPFS_DEPLOY_CLOUDFLARE__API_KEY = paste-your-cloudflare-api-key-here
IPFS_DEPLOY_CLOUDFLARE__API_EMAIL = the-email-you-used-to-sign-up
现在开始吧,继续使用ipd -d cloudflare,并告诉大家所有关于它的广告!

IPFS原力区
Slogan:让存储更安全、更高效、更开放、更经济
价值观:价值 共建 共享 荣耀
总部位于上海,聚集基于分布式网络&存储的众多技术大咖和爱好者,深耕基于IPFS的商业生态建设和社区发展。
每周二举办“分布式存储网络”主题沙龙,聚集了众多技术大咖和IPFS爱好者,通过持续输出全面、精细、优质的IPFS咨询和技术支持,将生态中的爱好者转化为IPFS支持者和参与者,共建IPFS生态的健康发展。
