Note: 如果你对于如何运行 IPFS 节点不感兴趣,只是想要快速使用 IPFS 存储服务的话,可以忽略其他部分,下拉查看 固定服务,或者查看文档了解更多关于固定服务的信息: https://docs.ipfs.io/how-to/websites-on-ipfs/single-page-website/#pinning-files。
什么是 IPFS
星际文件系统(InterPlanetary File System,缩写为 IPFS)是一个旨在实现文件的分布式存储、共享和持久话的网络传输协议。它是一个内容可寻址的点对点超媒体分发协议。在IPFS网络中的节点构成一个分布式文件系统。
使用 IPFS Destop
IPFS Desktop 是一个易于使用的桌面程序,集成了IPFS 节点、文件管理器、peer manager 和内容浏览器等服务,方便不熟悉 IPFS 操作的使用者快速了解 IPFS。
安装
如果当前计算机上已有 IPFS 节点,IPFS Desktop 将充当该节点的控制面板和文件浏览器。如果您没有节点,它会为您安装一个。无论哪种方式,IPFS Desktop 都会自动检查更新。
具体安装过程详见官方文档: https://docs.ipfs.io/install/ipfs-desktop
安装完成,点击启动进入状态页,如下图:
可以看到一个 IPFS 节点已经在本地运行,并分配了一个节点 ID,其他节点可以根据这个 ID 来连接你的节点。在状态页还可以看到通过此节点托管的文件大小,以及在 IPFS 网络上发现的其他节点的数量。
托管文件
要使用 IPFS Desktop 将文件存储在 IPFS 网络,需要按照如下步骤操作:
-
进入文件页,点击右上方“导入”,选择“文件”
-
导航到要托管的文件,打开
-
查看导入进度,导入完成可在文件页下方看到如下提示:
-
选择刚刚导入的文件,选择“分享链接”
-
在弹出框中选择 “复制”,将文件 URL 复制到剪贴板。默认的 URL 使用 https://ipfs.io 网关,可以在配置页修改。
6.打开你的浏览器,粘贴刚才复制的 URL 并访问。
注意事项:
- 上传的文件被保存在你的本地 IPFS 节点,可以被其他节点访问。通过 URL 访问需要提供公共网关服务的节点在整个 IPFS 网络中搜索文件直到发现你的节点,这个时间可能会很长,并且需要你的 IPFS 节点始终保持在线。
- IPFS Desktop 不支持显示通过 API 上传的文件,如果选择调用 API 上传文件,建议保存上传的结果。
从 IPFS 网络中获取文件
想要从其他人的 IPFS 节点中获取特定文件,首先要知道这个文件的 CID (content identifier),CID 是基于上传到 IPFS 节点的内容的加密哈希。
-
在文件页选择“导入”,选择“来自 IPFS 路径”
-
在弹出框中将他人分享给你的 CID 复制到输入框,选择导入即可
通过 CID 分享文件
在文件页,点击想要分享的文件右边的三点,选择“复制CID”
固定文件
IPFS 节点将它们存储的数据视为缓存,这意味着你上传的文件可能会被执行垃圾回收,而不会被永久存储。固定文件 (pinning files) 告诉 IPFS 节点将数据视为必要,而不是将其丢弃。在 IPFS 桌面上,进入“文件”页,选择要固定的文件,然后点击“设置固定”:
上述操作将文件“永久”保存在了你的本地 IPFS 节点,然而,如果想要保证在本地节点离线的情况下依然可以访问你的文件,可以选择使用 IPFS collaborative clusters 或 固定服务。
固定服务
使用 IPFS 保存重要数据的一个简单方法是使用固定服务(pingning service)。这些服务运行大量 IPFS 节点,通过这些服务固定的文件很容易被其他节点搜索到,并被用户通过公共网关访问。使用固定服务的好处是不必运行和维护自己的 IPFS 节点,但某些固定服务可能需要科学上网,或有较高的使用门槛。官方维护了一个固定服务提供商(pinning service providers) 列表。在本教程中,我们将使用 Pinata (需要科学上网)。它为新用户提供 1GB 的免费存储空间,并且十分容易上手:
-
进入 Pinata 首页,选择 “Try for free” 注册
-
注册完成后,登陆进入个人主页。选择“Upload -> File -> Select a file”,选择你希望托管到 IPFS 网络的文件
-
选择 “Upload”,等待文件被上传到 Pinata 维护的节点
-
上传完成后,可以在主页的文件列表看到被固定的文件以及文件的 CID
-
点击文件名,就可以通过 Pinnata 网关在浏览器中查看你上传的文件
注意事项: Pinata 有 1GB 的免费额度,超出部分需要付费支持。可以考虑使用 NFT.Storage,使用方法和 Pinata 很相似。这是一项免费的去中心化存储服务,由 IPFS 协议的开发团队 Protocol Labs 维护。详见 Introducing NFT.Storage: Free Decentralized Storage for NFTs: https://filecoin.io/blog/posts/introducing-nft.storage-free-decentralized-storage-for-nfts/
在服务器上维护自己的 IPFS 节点和公共网关
在本地运行的 IPFS 节点,保存在其中的文件难以通过公共网关访问,并且一旦节点离线就无法访问;使用固定服务商可能会遇到网站无法在大陆直接访问,或者服务商停止提供服务的问题。
如果有保存大量文件/数据并且希望能在任何地方被快速访问的需求,可以考虑将 IPFS 部署在服务器上,并维护一个公共网关,使用户能够通过浏览器 HTTP 协议来访问保存在服务器 IPFS 节点中的文件。
查看此贴了解 如何快速搭建自己的 IPFS 网关
什么是 IPFS 网关
IPFS 网关 (gateway) 允许访问者通过 HTTP 请求从 IPFS 网络访问数据。默认情况下,IPFS 网关配置在 8080 端口上,数据将通过以下方式从正在运行 IPFS 的服务器上获取:
http://{your_ip_address}:8080/ipfs/{content ID}
or
https://{gateway URL}/ipfs/{content ID}/{optional path to resource}
关于 IPFS 网关更详细的介绍: https://docs.ipfs.io/concepts/ipfs-gateway/#overview
官方推荐配置 IPFS 网关教程: The definite guide to your high-performance IPFS Gateway
其他参考链接:
Introduction to IPFS: Run Nodes on Your Network, with HTTP Gateways: https://rossbulat.medium.com/introduction-to-ipfs-set-up-nodes-on-your-network-with-http-gateways-10e21ea689a4
Cloudflare IPFS gateway: Setting up a Server: https://developers.cloudflare.com/distributed-web/ipfs-gateway/setting-up-a-server/