首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

10个步骤搞定IPFS 安装和配置

1

IPFS 是什么

IPFS(InterPlanetary File System,星际文件系统)是永久的、去中心化存储和共享文件的方法,这是一种内容可寻址、版本化、点对点超媒体的分布式协议。

主要特点

内容可寻址:通过文件内容生成唯一哈希值来标识文件,而不是通过文件保存位置来标识。相同内容的文件在系统中只会存在一份,节约存储空间

版本化:可追溯文件修改历史

点对点超媒体:P2P 保存各种各样类型的数据

2

IPFS 使用场景

可用场景

在 /ipfs 和 /ipns 下挂载全球文件系统

挂载的个人同步文件夹,拥有版本功能

文件加密,数据共享系统

可用于所有软件的带版本的包管理器(已经实现了:https://github.com/whyrusleeping/gx)

可以作为虚机的根文件系统

可以作为数据库:应用可以直接操作 Merkle DAG,拥有 IPFS 提供的版本化、缓存以及分布式特性

可以做(加密)通讯平台

各种类型的 CDN

永久的 Web,不存在不能访问的链接

3

安装与初始化

继续执行命令 启动节点服务器:

加入 IPFS 网络

本地 HTTP 服务器,默认 8080 端口

处理后续 ipfs 的客户端命令

新开一个命令行,执行命令 以查看当前节点标识:

浏览器访问 http://localhost:5001/webui 进入管理界面,查看系统状态、管理文件以及配置系统。

4

配置

除了使用 Web 管理界面修改配置外,也可以直接用命令行 先导出当前配置(JSON 格式,配置项不多且含义明显),改完后使用 更新配置,重启服务器就生效了。当然,修改配置也可以直接用 。

服务器最终使用的配置文件保存在 ~/.ipfs/config 中,对比刚刚导出的文件我们发现导出的文件只比这个 config 少了一项 ,即节点初始化时自动生成的 RSA 私钥。

5

密钥对

节点初始化时会自动生成 RSA 密钥对,并且私钥没有设置密码。

公钥通过多重哈希得到节点 id(即上面的 ),节点服务器启动后会和其他节点交互公钥,后续通讯时使用对方公钥加密数据,通过多重哈希对方公钥、对比对方节点 id 来确认是否正在和正确的节点交互。

私钥用来解密接收到的数据,也用于 ipns 来绑定文件名。整个过程没有引入证书,仅是使用了 PKI 机制。

总之,我觉得可以暂时不用关心密钥对,可能只有在一些使用场景下面才需要吧。

6

添加文件

我当前目录结构是这样的:

我准备添加的目录是 ,执行命令:

这样我们使用 就可以查看 README.md 了。在其他节点上也可以,只要记住这个文件的哈希值就行了。我们可以在自己的 HTTP 网关上试试(注意我的端口改成了 5002,你的默认应该是 8080):

当然也可以用 ipfs 官方的 HTTP 网关:https://ipfs.io/ipfs/Qmco94dYP733XwrUqFUhDtDG8RsqmGQ6UDPvnmH4Pvy2rv

7

获取文件

将获取刚才我们发布的 b3log 目录。

8

Pin

IPFS 的本意是让用户觉得所有文件都是在本地的,没有“从远程服务器上下载文件”。Pin 是将文件长期保留在本地,不被垃圾回收。

执行 可以查看哪些文件在本地是持久化的,通过 add 添加的文件默认就是 pin 过的。

9

绑定节点名

每次修改文件后 add 都会返回不同的哈希,这对于网站来说就没法固定访问地址了,所以我们需要通过 ipns 来“绑定”节点名。

上面 b3log 目录的哈希值是 ,我们将整个目录作为节点根目录发布:

然后我们就可以通过 ipns 访问了,注意是 ipns:

以后每次更新文件都再 publish 一下就行了。目前(v0.4.12)使用 ipns 访问会很慢,据说 v0.4.14 会解决。

10

DNS 解析

IPFS 允许用户使用现有的域名系统,这样就能用一个好记的地址来访问文件了,比如:

只需要在 DNS 解析加入一条 TXT 记录:

总结

IPFS 是永久的、去中心化保存和共享文件的方法,这是一种内容可寻址、版本化、点对点超媒体的分布式协议。

我们可以用它来存取文件,数据永不丢失。

应用可以用它来做数据库,自动拥有版本化、缓存及分布式特性。

官方参考实现使用 golang 编写,JavaScript、Python、C 等语言在陆续开发中。总之,IPFS 是一套非常厉害的系统。

-END-

感谢阅读

关注IPFS星系云科技

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190121A122Z900?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券