什么是 IPFS?#
IPFS,是点到点的超媒体协议,它让网络更快、更安全、更开放。说简单一点,它就是一个去中心化互联网。说技术一点,它是一个基于分布式哈希表 DHT 进行内容寻址的,基于 git 模型版本管理的,基于默克尔对象关联的,基于点对点技术的,基于全球化命名空间 IPNS 的,基于各种技术的,一种分布式文件系统。
用人话说,你可以把它看成一个共享网盘,你可以尝试下载IPFS - Desktop(适用于有图形界面的系统)或kubo - ipfs(适用于 CLI)。然后启动 IPFS,你的设备将成为 IPFS 网络中的一个节点
使用 IPFS 能做什么?#
当你连接到 IPFS 网络后,IPFS 会自动将你的设备作为一个本地 IPFS 节点并且寻找其他 IPFS 节点,你将能够帮助其他用户建立连接、提供文件。同时你也可以将你的文件上传到你的 IPFS 节点,等待分发,让网络上的其他用户可以访问你的文件。在 IPFS 网络中,访问文件通过 IPFS 网关,如:https://ipfs.io/ipfs/
+ CID(文件哈希)
实现访问。比如: https://ipfs.crossbell.io/ipfs/bafybeifbn36zmdb37ov6id3toy6bve47264hjk2yob6rm4bhw7ooawncf4
(这里使用 ipfs.crossbell.io
这个 CrossBell 托管的 IPFS 网关来规避 GFW 封禁)
这项技术真的有这么理想吗?#
这项技术确实很理想,但是实际应用下来会遇到以下问题
-
通过本地 IPFS 节点上传的文件迟迟无法通过 IPFS 网关 + CID 实现访问
-
发现的节点太少
-
可能会大量占用你的带宽
这些问题大部分原因都是因为这个网络太过于庞大,而单个 IPFS 节点的权重很低,尽管 IPFS 的分发一般在几小时内可以完成。但对于个人来说,我们应当寻找一些服务商帮我们完成这些需求,它们往往在 IPFS 网络中的权重更大,进行文件更新的效率也很高,同时也提供一些扩展服务,比如自动化 Git 部署。而这篇文章使用的则是Fleek
关于 Fleek#
你可以简单理解为它权重很大,有很多的 IPFS 节点,经由 Fleek 上传到 IPFS 网络上的文件可以在几秒内完成广播,并且支持连接 Git 存储库部署项目和绑定你的域名
Fleek 是否值得信赖?#
本人仅接触此服务 2 天。观察到 Fleek 在成功部署网站后提供了三类访问方式
-
xxx-xxx.fleek.app
:这个域名使用了 Cloudflare CDN,实测解析 IP 的数量为 2,不建议使用
:这种方法是原生的 IPFS 访问方式。通过 IPFS 网关 + CID 来访问。但由于 CID 为哈希值,当你的网站改动后你的 CID 会发生变化
- 绑定自定义域名来访问,这将会使用亚马逊的 CDN 并且自动映射 CID,实测解析 IP 数量超过 30,并且速度很快
Warning
注意,任何使用 HTTP 协议的类 ipfs 技术都需要一个中心化服务器代理访问 IPFS 网络。只有当访问者连接上 IPFS 网络后才会使用去中心化的连接方式)
- 尽管显示了 IPFS 的文件浏览界面,但实际上这个页面是由 HTTP 请求到亚马逊 CDN 反代 IPFS 网络实现的,实际上仍为中心化网络
- 当你的设备已经连上 IPFS 网络后,所有流量将使用 P2P(去中心化),所以你看到的访问地址实际上是本机地址
梳理一下思路,我们可以用 Fleek 做到什么#
让 Fleek 连接你的 Git 存储库,通过构建命令构建静态网站,并发布到 IPFS,同时兼容 HTTP 访问
正式开始#
-
前往 fleek.xyz,通过 MetaMask 登录
-
连接你的 Git 存储库,输入构建命令等相关信息
-
部署网站
-
绑定域名
-
最终访问
效果图:
拓展一下,我们还可以通过 IPFS 技术做什么?(😭目前已弃用)#
-
创建一个巨大的图床,已经投入使用,参见: https://pic.onani.cn (原理:请求 https://ipfs-pic.onani.cn ,获取图片列表,随机选择使用 JS 展示)
-
无需再自托管任何图片,已经投入使用,本博客所有图片都使用 IPFS 存储
-
理论上,你可以将任何占用存储的服务上传到 IPFS,实现存算分离