IPFS环境配置和简单使用

IPFS笔记

 Liu Ke     2018-09-25   3627 words    & views

Contents

  1. 下载和安装
  2. 配置
    1. 创建ipfs节点
    2. 查看节点ID
    3. 跨域资源共享CORS配置
  3. 启动节点服务器
  4. 上传文件到IPFS
    1. 上传文件
    2. 从IPFS网络查看数据
    3. 本地节点文件管理
    4. 上传整个文件夹

下载和安装

IPFS用基于内容的寻址替代传统的基于域名的寻址,文件存入IPFS网络时会得到文件的哈希值,通过这个哈希值可以由分布式的哈希表找到并查看这个文件。

从官网下载系统对应的go-ipfs压缩包https://dist.ipfs.io/#go-ipfs

All Versions文件夹中有所有历史版本可以选择

解压下载的压缩包.

$ tar -xvzf go-ipfs_v0.4.17_linux-amd64.tar.gz

将解压后的go-ipfs文件夹中的ipfs文件移动到/usr/local/bin/目录下。

$ cd go-ipfs
$ mv ipfs /usr/local/bin/ipfs

配置

创建ipfs节点

第一次使用时,用ipfs init命令在本地计算机建立一个ipfs节点,并返回节点ID。

$ ipfs init

运行上述命令之后,会出现~/.ipfs这个隐藏目录,这个文件夹中的config文件为本地ipfs节点的配置文件。

查看节点ID

使用ipfs id命令可以查看本地节点的ID。

$ ipfs id
{
	"ID": "QmPQjWDsgM2r8iREsd9NAUPKgFEgJTQjrsdzRvnv23ZMde",
	"PublicKey": "CAASpgIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCoyvZ5M5mvpEX4VN/br3BGVCNxVs1h+5oxwOeby8kU0N8nUQ9n2CVOypsoXX7b6F0eyDY8tAIxtJQ+rQyC/4AYSAyN685ZCBxD7B+Bx7Qt53R/ZIEa3Qd4Gdg9EAeSCvB+G+bdnrNp48uJHMG3Z525tJUTYprid864SWbYGrlY9MLYTGfr2N2nBrP14f6t2rUGldmOANGFh/Ythx1MhJ6bnTAFk8Ke1LVhHIrLtnN+o/50Vn0GKwGHPRc6P1/n0+OQq/yHZs7+em7l3fCqBqfvQyAPNLOhE1BaUy/eJYnNB1Ia28LEXu7RveOTS0mCeuA3tj/g+1hEuqRBvvh4TV3FAgMBAAE=",
	"Addresses": [
		"/ip4/127.0.0.1/tcp/4001/ipfs/QmPQjWDsgM2r8iREsd9NAUPKgFEgJTQjrsdzRvnv23ZMde",
		"/ip4/192.168.93.132/tcp/4001/ipfs/QmPQjWDsgM2r8iREsd9NAUPKgFEgJTQjrsdzRvnv23ZMde",
		"/ip6/::1/tcp/4001/ipfs/QmPQjWDsgM2r8iREsd9NAUPKgFEgJTQjrsdzRvnv23ZMde"
	],
	"AgentVersion": "go-ipfs/0.4.17/",
	"ProtocolVersion": "ipfs/0.1.0"
}

修改节点默认存储空间

ipfs节点默认的存储空间为10GB,可以自定义修改为任意大小。打开~/.ipfs/config文件,找到"StorageMax": "10GB",将10GB修改为想要的大小,保存退出即可。

跨域资源共享CORS配置

如果要求外界能够访问,则需要配置对跨域资源共享CORS进行配置。使用如下命令配置:

$ ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT","GET", "POST", "OPTIONS"]'
$ ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["*"]'
$ ipfs config --json API.HTTPHeaders.Access-Control-Allow-Credentials '["true"]'
$ ipfs config --json API.HTTPHeaders.Access-Control-Allow-Headers '["Authorization"]'
$ ipfs config --json API.HTTPHeaders.Access-Control-Expose-Headers '["Location"]'

启动节点服务器

跨域资源共享CORS配置好之后,使用如下命令启动节点服务器:

$ ipfs daemon

通过ipfs daemon启动后,不要关闭终端,再新建一个终端,输入如下命令(需要节点ID):

$ ipfs cat /ipfs/QmPQjWDsgM2r8iREsd9NAUPKgFEgJTQjrsdzRvnv23ZMde/readme

在浏览器输入http://localhost:5001/webui,会看到如下的webUI界面。

上传文件到IPFS

上传文件

可通过ipfs help查看ipfs相关操作命令。

通过vi新建一个文件file.txt文件,文件内容为keliu.mewq保存退出。使用如下ipfs add命令将文件添加到当前ipfs节点,会返回该文件的哈希值:

$ ipfs add file.txt
added QmNo39sZ7Uwg7jkQMtW4FV8Kwv4tVikFYgtjbCmtDH9kCv file.txt
 9 B / 9 B [===========================================================] 100.00%

添加文件之后,需要新建一个终端,使用ipfs daemon命令同步节点数据到IPF网络。

从IPFS网络查看数据

节点数据同步到IPFS网络之后,就可以根据文件的哈希值直接通过浏览器查看文件内容。

直接在地址栏访问https://ipfs.io/ipfs/QmNo39sZ7Uwg7jkQMtW4FV8Kwv4tVikFYgtjbCmtDH9kCv,即可显示文件内容。

还可以通过ipfs cat命令和哈希值查看文件内容。

$ ipfs cat QmNo39sZ7Uwg7jkQMtW4FV8Kwv4tVikFYgtjbCmtDH9kCv
keliu.me

本地节点文件管理

可以通过ipfs files相关命令在本地节点的ipfs根目录下创建文件夹,并能通过命令移动文件。文件相关命令和Linux文件管理的命令很相似。

$ ipfs files mkdir /ke
$ ipfs files cp /ipfs/QmNo39sZ7Uwg7jkQMtW4FV8Kwv4tVikFYgtjbCmtDH9kCv /ke/file.txt
$ ipfs files ls
ke
$ ipfs files ls /ke
file.txt

需要注意的是:cp命令不会改变文件的哈希值,但是mv会改变hash寻址。如果直接通过哈希值访问文件,改变文件在本地节点存放的文件夹位置,不会影响通过哈希值的访问。

可以在ipfs的webUI里的Files下看到本地节点的文件夹情况。

上传整个文件夹

可以使用ipfs add -r上传整个目录到IPFS网络。

新建两个文件,myBlog.txt内容依然为keliu.memyGithub.txt内容为github.com/dugu0808。上传整个文件夹。

$ vi myGithub.txt
$ vi myBlog.txt
$ ipfs add -r ~/Desktop/documents/
added QmNo39sZ7Uwg7jkQMtW4FV8Kwv4tVikFYgtjbCmtDH9kCv documents/file.txt
added QmNo39sZ7Uwg7jkQMtW4FV8Kwv4tVikFYgtjbCmtDH9kCv documents/myBlog.txt
added QmXmsSsxcDg41YyudbrSBhLweaqSSKbN5NgZteKwUcSh8u documents/myGithub.txt
added QmdjKM3DXNiK6vumwbJmvK48raNcjhASK38ykq4d8YtwhR documents

可以在浏览器里查看。我们可以发现,虽然file.txtmyBlog.txt文件名不同,但是内容相同,他们在IPFS上的哈希值和大小是完全一致的。