Contents
下载和安装
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.me
,wq
保存退出。使用如下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.me
,myGithub.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.txt
和myBlog.txt
文件名不同,但是内容相同,他们在IPFS上的哈希值和大小是完全一致的。