一.ipfs安裝
1.下載go-ipfs : https://dist.ipfs.io/#go-ipfs(需要翻牆)
2.執行如下指令
$ tar xvfz go-ipfs.tar.gz
$ cd go-ipfs
$ ./install.sh
3.驗證
$ ipfs help
USAGE:
ipfs - Global p2p merkle-dag filesystem.
...
3.搭建私有集羣
默認安裝後是共享的公網IPFS密匙,私有集羣需要使用自己生產的密匙到swarm.key。
- 生產私有密匙
首先我們使用密鑰創建工具,創建一個密鑰。
下載地址:https://github.com/Kubuxu/go-ipfs-swarm-key-gen
該工具的安裝下載使用go。不會安裝的朋友自行Google。
go get -u http://github.com/Kubuxu/go-ipfs-swarm-key-gen/ipfs-swarm-key-gen
然後創建密鑰:
ipfs-swarm-key-gen > ~/.ipfs/swarm.key
2.複製密匙文件到其他節點的.ipfs目錄下
3 每臺節點運行如下命令.去除默認的公網節點地址
ipfs bootstrap rm —all
4 更改config文件的address的API、Gateway爲當前的地址,因爲ipfs默認只能本地訪問,其他節點無法訪問,同時注意關閉防火牆或者開發5001,8080,4001端口。但是使用ipfs-cluster集羣管理攻擊搭建集羣時需要設置成本地,否重ipfs-cluster無法訪問到ipfs.
5 在每臺節點手動添加其他節點,如下:
pfs bootstrap add /ip4/13.114.30.87/tcp/4001/ipfs/<節點id>
如:
ipfs bootstrap add /ip4/13.114.30.87/tcp/4001/ipfs/Qmc2AH2MkZtwa11LcpHGE8zW4noQrn6xue7VcZCMNYTpuP
節點id:可以通過節點運行ipfs id顯示
[hadoop@localhost .ipfs]$ ipfs id
{
"ID": "QmaK84LzXydnzGk3WUhgZ1Tqi1mKieUYZ5SjeaC7CdycLi",
"PublicKey": "CAASpgIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCkE0RU4xuFAQM/fVyK9y36nISNGlmiAA59qaqhHA0mGF3zllJqJgxM//0gru3XnaVpyzGzwFhFGjcBlQBhas6g/6TqlpnYSbIFMy8TB2KwBa8grtvfi1yiHsDArx0G/X/IDOmDKejVKFitzdLNZRswPagKmtgPS75tJk8MDmApFu1gzTDAqzpymhzWQeH9Heso6W+oGmSeJUWoANG36OReF1z89FWGHBVJROHxZ7Ic9ohbZ1vFd+C6fjL66Pm0CZ6reMdlvIApWXO5WGQuMDif/0+iaLpbYSJWCt+HUz31qGGOgQ/K/ci2sja0Nv2xbSRvAMTaD5eQAqk87lYVJSxnAgMBAAE=",
"Addresses": [
"/ip4/127.0.0.1/tcp/4001/ipfs/QmaK84LzXydnzGk3WUhgZ1Tqi1mKieUYZ5SjeaC7CdycLi",
"/ip4/192.168.20.129/tcp/4001/ipfs/QmaK84LzXydnzGk3WUhgZ1Tqi1mKieUYZ5SjeaC7CdycLi",
"/ip4/192.168.211.133/tcp/4001/ipfs/QmaK84LzXydnzGk3WUhgZ1Tqi1mKieUYZ5SjeaC7CdycLi",
"/ip6/::1/tcp/4001/ipfs/QmaK84LzXydnzGk3WUhgZ1Tqi1mKieUYZ5SjeaC7CdycLi"
],
"AgentVersion": "go-ipfs/0.4.22/",
"ProtocolVersion": "ipfs/0.1.0"
}
6 驗證
運行ipfs swarm peers 顯示以連接節點
在A節點上傳文件,後得到文件的哈希
ipfs add x.txt
[hadoop@localhost .ipfs]$ ipfs add repo.lock
added QmbFMke1KXqnYyBBWxB74N4c5SBnJMVAiMNRcGu6x1AwQH repo.lock
0 B / ? [---------------------------------------------------------------------------------------------------------------------------------------------=] 0.00%
測試能否在B節點通過hash獲取到
[hadoop@localhost test]$ ipfs get QmbFMke1KXqnYyBBWxB74N4c5SBnJMVAiMNRcGu6x1AwQH
Saving file(s) to QmbFMke1KXqnYyBBWxB74N4c5SBnJMVAiMNRcGu6x1AwQH
0 B / ? [--------------------------------------------------------------------------------------------------------------------------------------------------=] 0s
[hadoop@localhost test]$ ls
QmaoUGJqmaCp36zb1Bov2wwLM76o3Y7SfBcdALBeEgfb1h QmbFMke1KXqnYyBBWxB74N4c5SBnJMVAiMNRcGu6x1AwQH
[hadoop@localhost test]$